2、Docker镜像和容器使用

2.1、镜像常用命令

  01)、查找镜像:docker search 镜像名

  02)、拉取镜像:docker pull 镜像名:版本号

  03)、删除镜像:docker rmi 镜像名

  04)、获取本地镜像列表:docker images

2.1.1、虚悬镜像

  虚悬镜像:没有镜像名,也没有标签的镜像;

  导致原因:构建和删除镜像时发生错误,可能会导致;

  查询命令:docker images -f dangling=true

  删除命令:

    方式一:docker image prune

    方式二:docker rmi $(docker images -q -f dangling=true)

2.2、容器常用命令

  01)、启动容器:

    docker run --name <容器名称> -d -p <主机端口:容器端口> <镜像名称>

      -d:后台运行

      -p:端口映射

    举例:docker run --name nginx-test -d -p 80:80 nginx

  02)、进入docker容器内部

    方式1:docker exec -it <容器名称、容器 ID> /bin/bash

    方式2:docker attach <容器 ID>

    注意:使用 attach 的方式进入容器内部,如果从这个容器退出,会导致容器停止,所以不推荐使用该方式。

    方式3:交互式启动进入容器内部

      docker run -it [镜像名称、镜像id]  /bin/bash

      注意使用该方式启动并进入容器内部,退出方式有2种,

      exit退出,容器停止;

      ctrl+p+q退出,容器不会停止;

  03)、查看容器

    查看所有的容器(包括启用和未启用)命令:docker ps -a

    查看启用的容器命令:docker ps

  04)、启动已停止运行的容器

    docker start <容器 ID、容器名称>

  05)、停止容器

    docker stop <容器 ID、容器名称>

  06)、重启容器

    docker restart <容器 ID、容器名称>

  07)、删除容器

    方式1:普通删除,容器在启动状态无法删除

      docker rm <容器 ID、容器名称>

    方式2:强制删除,容器在启动状态会强制删除并关闭

      docker rm -f <容器 ID、容器名称>

    方式3:批量删除

      docker rm 容器1 容器2

      docker rm ${docker ps -a -q}

  08)、复制容器文件到主机

    docker cp <容器id、容器名称>:<容器文件路径> <主机文件路径>

    举例:docker cp nginx-test:/usr/share/nginx/html/50x.html  /usr/local/nginx/html/50x.html

  09)、复制主机文件到容器

    docker cp <主机文件路径> <容器id、容器名称>:<容器文件路径>

    举例:docker cp /usr/local/nginx/html/50x.html  nginx-test:/usr/share/nginx/html/50x.html

  10)、获取容器的元数据

    docker inspect <容器id、容器名称>

2.3、目录和文件挂载

 

 

2.4、docker commit

  docker commit 提交容器副本使其成为一个新的镜像

  命令:

  docker  commit  -m="提交的描述信息"  -a="作者"  容器id  目标镜像名:标签名

  举例:

  针对ubuntu容器新增vim功能

    apt-get update

    apt-get -y install vim

  提交新镜像到本地:

  docker commit -m="添加vim功能" -a="hs" 51042a48b860 hs/myubuntu:1.1

2.4、docker私有仓库(registry版)

1、下载镜像私服镜像Docker Registry
  docker pull registry
2、运行私有库Registry,相当于本地有个Docker hub
  docker run --name registry -d -p 5000:5000 -v /usr/local/images-registry/:/tmp/registry --privileged=true registry

3、修改配置文件【/etc/docker/daemon.json】配置镜像私有仓库地址
  {

    "registry-mirrors": ["http://hub-mirror.c.163.com"],    # 加速镜像设置

    "insecure-registries": ["10.0.24.11:5000"]  # 私有仓库设置
  }
注意:docker 默认不允许http方式推送镜像,通过配置“insecure-registries”取消这个限制;
修改配置注意重启docker:systemctl restart docker

4、案例演示创建一个新镜像,ubuntu安装ifconfig命令
  docker run -it hs/myubuntu:1.1 /bin/bash

  apt-get update
  apt-get install net-tools

  docker commit 提交容器副本使其成为一个新的镜像
  命令格式:docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:标签名

  容器外执行:
  docker commit -m="ifconfig cmd add" -a="hs" d161a30f15af hs/myubuntu:1.2

5、将新镜像修改为符合私服规范的Tag
  docker tag hs/myubuntu:1.2 10.0.24.11:5000/hs/myubuntu:1.2

6、curl验证私服库有哪些镜像
  curl -XGET http://10.0.24.11:5000/v2/_catalog

7、push推送到私服
  docker push 10.0.24.11:5000/hs/myubuntu:1.2

8、curl验证私服库有哪些镜像2
  curl -XGET http://10.0.24.11:5000/v2/_catalog

9、pull到本地并运行
  docker pull 10.0.24.11:5000/hs/myubuntu:1.2
  docker run -it 镜像id、镜像名 /bin/bash

2.5、docker私有仓库(harbor版)

 

热门相关:最强狂兵