六、Docker


返回

6.1 安装

  • 安装

    $ yum -y install docker
    

6.2 启动

  • 启动

    $ systemctl start docker
    
  • 状态

    $ systemctl status docker  # 状态
    $ docker version  # 版本
    $ docker info  # 详细信息
    
  • 关闭

    $ systemctl stop docker
    

6.3 基本操作

  • $ docker pull centos  # 从docker仓库下载一个镜像
    $ docker pull centos:7.9.2009  # 	指定版本
    
  • $ docker rmi bf7  # 删除镜像:docker rmi 镜像id前3位,必须先删除有相关依赖的容器进程记录
    $ docker rmi `docker images -aq`  # 批量删除镜像
    
    $ docker rm -f 135  # 删除容器进程记录:docker rm 容器id前3位
    $ docker rm `docker ps -aq`  # 批量删除无用容器进程记录,正在运行的容器进程记录不会被删除
    
  • 改(运行)

    # 参数[-i:交互式命令操作,-t:开启一个终端,/bin/bash:指定shell解释器,--name:给容器一个名字,-d:后台运行,-p:端口映射]
    $ docker run centos  # 如果docker容器没有在后台运行的进程,容器会直接挂掉
    $ docker run hello-world  # 如果镜像不存在,会先下载镜像,再运行
    $ docker run -it centos /bin/bash  # 交互式运行一个存活的docker容器
    $ docker run -it 300 /bin/bash  # 效果同上,使用镜像id前3位
    $ docker run --name linux -d centos /bin/sh -c "while true; do echo hello linux; sleep 1; done;"  # 运行一个有任务的docker容器
    $ docker run -it --name "123" -p 6000:5000 镜像ID /bin/bash  # 访问宿主机的6000端口,映射到docker的5000端口
    $ docker exec -it 容器名 /bin/bash  # 进入一个正在运行的容器空间
    $ docker exec -it 容器ID /bin/bash
    >> exit  # 退出
    $ docker start 58b5c58f05a0  # 启动容器
    $ docker restart 58b5c58f05a0  # 重启容器
    $ docker stop 58b5c58f05a0  # 停止容器进程:docker stop 容器ID
    $ docker stop `docker ps -aq`  # 停止所有容器进程
    
  • $ docker search centos  # 在网络上查找相关的镜像
    $ docker images # 查看本地机器,所有镜像文件内容
    $ docker ps # 查看正在运行的进程
    $ docker ps -a  # 查看正在运行运行,以及挂掉的容器进程
    $ docker ps -aq  # 查看正在运行运行,以及挂掉的容器进程的ID
    $ docker logs 5e9  # 查看容器内的运行日志
    $ docker logs linux 
    $ docker logs -f linux  # 查看容器内的运行日志,且持续检测
    $ docker port 74acb2404339  # 查看容器内端口映射:docker port 容器ID
    

6.4 导出 & 导入

  • 打包镜像

    $ docker commit 6bb33d9e7b35 centos-vim  # docker commit 容器ID 镜像名
    
  • 导出镜像

    $ docker save 3cfa61bbb105 > /opt/xxx.tar.gz  # docker save 镜像ID > 导出路径(后缀必须是*.tar.gz)
    
  • 导入

    $ docker load < /opt/xxx.tar.gz  # 导入镜像
    $ docker tag a02f486b0106 xxx_name  # 为镜像命名
    

6.5 文件互传

  • 宿主机 ==> 容器

    $ docker cp /root/crmProject/ 127279963cc5:/root  # docker cp 宿主机文件或文件夹路径 容器ID:容器目录
    
  • 容器 ==> 宿主机

    $ docker cp 127279963cc5:/root/crmProject/ /root/  # docker cp 容器ID:容器目录 宿主机文件或文件夹路径
    

6.6 Dockerhub仓库

  • 登录

    $ docker login
    
  • 导出

    $ docker tag 7823b9cb35b2 ubuntu-test/xiang9872  # 保证镜像的tag是dockerhub账户名:docker tag 镜像ID 镜像名/镜像tag
    $ docker push xiang9872:ubuntu-test  # 推送:docker
    

6.7 Dockerfile

  • 编写Dockerfile脚本,首字母必须大写,配置启动镜像的自动启动程序

    $ vim Dockerfile
    FROM crmProject
    WORKDIR 
    EXPOSE 8080
    CMD ["", ""]
    
  • 创建镜像

    $ docker build .
    $ docker tag 0c9eb15d0de3 crmpro
    $ docker run -d -p 80:80 crmpro
    

6.0 不要配置镜像加速❌

  • 创建配置文件

    $ vim /etc/docker/daemon.json
    
  • 内容如下

    {
        "registry-mirriors": [
            "https://dockerhub.azk8s.cn",
            "https://hub-mirror.c.163.com",
            "https://registry.docker-cn.com",
        ]
    }
    
  • 重启docker

    $ systemctl restart docker
    
返回