• 【DOCKER】


    Docker

    出现: 解决了运行环境配置问题软件容器
    方便做持续集成并有助于整体发布的容器虚拟化技术。

    面试题: 容器和虚拟机比较?
    在这里插入图片描述
    在这里插入图片描述
    区别:
    在这里插入图片描述

    1.Docker的三件套

    1.镜像:
    在这里插入图片描述
    在这里插入图片描述

    2.容器
    在这里插入图片描述
    在这里插入图片描述

    3.仓库
    在这里插入图片描述

    2. 基础架构图

    在这里插入图片描述

    2.1 docker的工作原理

    在这里插入图片描述

    2.2 docker 安装

    1. yum安装gcc相关
    yum -y install gcc
    
    • 1
    yum -y install gcc-c++
    
    • 1
    1. 安装必要的软件包
        yum install -y yum-utils
    
    • 1
    1. 设置阿里云镜像仓库
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1
    1. 更新 yum 软件的包索引
    yum makecache fast
    
    • 1
    1. 安装docker引擎
    yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    • 1
    1. 启动docker
    sudo systemctl start docker
    
    • 1

    检查docker 是否启动

    ps -ef | grep docker
    
    • 1

    查看docker 版本

    docker version
    
    • 1
    1. 测试 docker
    docker run hello world  如果报错,证明没有镜像,需要下载!
    
    • 1
    1. 卸载docker
    systemctl stop docker 
    yum remove docker-ce docker-ce-cli containerd.io
    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    
    • 1
    • 2
    • 3
    • 4

    2.3 阿里云镜像加速器

    进入阿里云官网
    在这里插入图片描述
    复制对应的加速器地址,并粘贴到docker的配置文件

    针对Docker客户端版本大于 1.10.0 的用户
    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
    
    mkdir -p /etc/docker
    
    tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://wxu2xpb9.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.4 docker run 做了什么

    在这里插入图片描述

    2.5 为什么docker 比虚拟机快

    在这里插入图片描述

    在这里插入图片描述

    3. docker 常用命令

    3.1 常用启动类命令

    启动docker: systemctl start docker
    停止docker: systemctl stop docker
    重启docker: systemctl restart docker
    查看docker状态: systemctl status docker
    开机启动: systemctl enable docker
    查看docker概要信息: docker info
    查看docker总体帮助文档: docker --help
    查看docker命令帮助文档: docker 具体命令 --help
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.2 镜像命令

    3.2.1 docker images

    在这里插入图片描述

    docker images
    各个选项说明:
    REPOSITORY:表示镜像的仓库源
    TAG:镜像的标签版本号
    IMAGE ID:镜像ID
    CREATED:镜像创建时间
    SIZE:镜像大小
     同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
    如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
    
    
    OPTIONS说明:
    -a :列出本地所有的镜像(含历史映像层)
    -q :只显示镜像ID
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    3.2.2 docker search

    在这里插入图片描述

    docker search 某个XXX镜像名字
    docker search [OPTIONS] 镜像名字
    OPTIONS说明: 
      			--limit : 只列出N个镜像,默认25个
      			docker search --limit 5 redis
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3.2.3 docker pull

    docker pull 某个XXX镜像名字
    docker pull 镜像名字[:TAG]
    docker pull 镜像名字:{
    1.没有TAG就是最新版
    2.等价于 docker pull 镜像名字:latest
    3.docker pull ubuntu
    }

    3.2.4 查看linux 硬盘空间

    df -h :查看硬盘空间

    3.2.5 查看镜像容器所占的空间
    docker system df 查看镜像/容器/数据卷所占的空间
    
    • 1
    3.2.6 docker rmi 某个XXX镜像名字ID
    删除单个  docker rmi  -f 镜像ID
    删除多个  docker rmi -f 镜像名1:TAG 镜像名2:TAG 
    删除全部  docker rmi -f $(docker images -qa)
    
    • 1
    • 2
    • 3
    3.2.7 面试题:谈谈docker虚悬镜像是什么?
    仓库名、标签都是<none>的镜像,俗称虚悬镜像dangling image
    
    • 1

    在这里插入图片描述

    3.3 容器命令

    在这里插入图片描述

    有镜像才能创建容器,
    这是根本前提(下载一个CentOS或者ubuntu镜像演示)
    
    • 1
    • 2
    3.3.1 新建+启动容器
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
    OPTIONS说明(常用):有些是一个减号,有些是两个减号
     
    --name="容器新名字"       为容器指定一个名称;
    -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
     
    -i:以交互模式运行容器,通常与 -t 同时使用;
    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    也即启动交互式容器(前台有伪终端,等待交互);
     
    -P: 随机端口映射,大写P...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    3.3.2 列出当前所有正在运行的容器

    docker ps [OPTIONS]

    OPTIONS说明(常用):
     
    -a :列出当前所有正在运行的容器+历史上运行过的
    -l :显示最近创建的容器。
    -n:显示最近n个创建的容器。
    -q :静默模式,只显示容器编号。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    3.3.3 退出容器

    两种退出方式:
    1.exit: run进去容器,exit退出,容器停止
    2.ctrl+p+q : run进去容器,ctrl+p+q退出,容器不停止
    
    • 1
    • 2
    • 3

    3.3.4 启动已停止运行的容器

    docker start 容器ID或者容器名
    
    • 1

    3.3.5 重启容器

    docker restart 容器ID或者容器名
    
    • 1

    3.3.6 停止容器

    docker stop 容器ID或者容器名
    
    • 1

    3.3.7 强制停止容器

    docker kill 容器ID或容器名
    
    • 1

    3.3.8 删除已停止的容器

    docker rm 容器ID
    一次性删除多个容器实例:
    docker rm -f $(docker ps -a -q)
    docker ps -a -q | xargs docker rm
    
    • 1
    • 2
    • 3
    • 4

    3.3.9 启动守护式容器(后台服务器)

    有镜像才能创建容器,这是根本前提(下载一个Redis6.0.8镜像演示)

    在大部分的场景下,我们希望 docker 的服务是在后台运行的,
    我们可以过 -d 指定容器的后台运行模式。
    
    docker run -d 容器名
    
    • 1
    • 2
    • 3
    • 4
    #使用镜像centos:latest以后台模式启动一个容器
    docker run -d centos
     
    问题:然后docker ps -a 进行查看, 会发现容器已经退出
    很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
    容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
     
    这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,
    我们配置启动服务只需要启动响应的service即可。例如service nginx start
    但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    redis 前后台启动演示case
    前台交互式启动:   docker run -it redis:6.0.8
    后台守护式启动:   docker run -d redis:6.0.8
    
    • 1
    • 2
    • 3

    3.4.0 查看容器日志

    docker logs 容器ID
    
    • 1

    3.4.1 查看容器内运行的进程

    docker top 容器ID
    
    • 1

    3.4.1 查看容器内部细节

    docker inspect 容器ID
    
    • 1

    3.4.2 进入正在运行的容器并以命令行交互

    1.docker exec -it 容器ID bashShell
    2.重新进入docker attach 容器ID
    
    上述两个区别:
    1.attach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
    2.exec 是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。
    
    推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
    
    用之前的redis容器实例进入试试:
    进入redis服务:
    docker exec -it 容器ID /bin/bash
    docker exec -it 容器ID redis-cli
    一般用-d后台启动的程序,再用exec进入对应容器实例
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    在这里插入图片描述

    3.4.3 从容器内拷贝文件到主机上

    docker cp  容器ID:容器内路径 目的主机路径
    
    公式:docker cp  容器ID:容器内路径 目的主机路径
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.4.4 导入和导出容器

    export 导出容器的内容留作为一个tar归档文件[对应import命令]
    
    docker export 容器ID > 文件名.tar
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
    
    cat 文件名.tar | docker import -  镜像用户/镜像名:镜像版本号
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.4.5 常用命令

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Hazelcast系列(六): TCP-IP发现机制
    媒体服务器与视频服务器有什么区别
    谷粒商城 高级篇 (三) --------- ElasticSearch 分词
    binary.write 和 binary.read
    Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业
    深度学习模型部署与优化:策略与实践;L40S与A100、H100的对比分析
    基于操作系统的基础IO
    UDP和TCP协议报文格式详解
    [项目管理-5]:软硬件项目管理 - 项目人力资源管理 (人)
    SQL注入脚本编写
  • 原文地址:https://blog.csdn.net/m0_60907575/article/details/133915505