Docker 核心技术之容器与镜像

时间:2022-01-23 02:58:30

Docker容器与镜像的关系

Docker 核心技术之容器与镜像

容器提交 – docker commit

docker commit -h

Docker 核心技术之容器与镜像

作用:

  • 根据容器生成一个新的镜像

命令格式:

  • docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

命令参数(OPTIONS):

  • -a, --author string 作者
  • -c, --change list 为创建的镜像加入Dockerfile命令
  • -m, --message string 提交信息,类似git commit -m
  • -p, --pause 提交时暂停容器 (default true)

命令演示  (在d9e 的容器中安装 net-tools 的包)

docker run -dti centos bash

docker exec d9e56 yum install -y net-tools

docker exec d9e56 ifconfig

  

把 d9e 的容器重新生成一个新的镜像

docker commit -m 'install net-tools' d9e56 centos-net:v1.0

docker images

Docker 核心技术之容器与镜像

查看 镜像 历史记录

docker history centos-net:v1.0

Docker 核心技术之容器与镜像

容器导出 – docker export

docker export -h

Docker 核心技术之容器与镜像

作用:

  • 将容器当前的文件系统导出成一个tar文件

命令格式:

  • docker export [OPTIONS] CONTAINER

命令参数(OPTIONS):

  • -o, --output string 指定写入的文件,默认是STDOUT

命令演示

docker export -o net-tools-image.tar d9e
ls

Docker 核心技术之容器与镜像

容器打包的导入 – docker import

docker import -h

Docker 核心技术之容器与镜像

作用:

  • 从一个tar文件中导入内容创建一个镜像

命令格式:

  • docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

命令参数(OPTIONS):

  • -c, --change list 为创建的镜像加入Dockerfile命令
  • -m, --message string 导入时,添加提交信息

命令演示

docker import -m '(import) install net-tools' net-tools-image.tar centos2:v1.0

Docker 核心技术之容器与镜像

docker history centos2:v1.0

Docker 核心技术之容器与镜像

可以看到 import 和 commit 都会生成一个镜像,区别在于import 生成的是一个全新的镜像不保留历史的信息,而 commit 会保留历史的信息,这点可以通过 docker history 去查看

深入理解Docker容器与镜像  

镜像的layer

这个可以通过 docker inspect 去查看,每对镜像进行一次修改,都会在Layers 中增加一条记录

Docker 核心技术之容器与镜像

Docker 核心技术之容器与镜像

 镜像的视角

 Docker 核心技术之容器与镜像

容器的Layer

Docker 核心技术之容器与镜像

Docker 核心技术之容器与镜像

容器的视角 

Docker 核心技术之容器与镜像

容器与镜像的底层关系

Docker 核心技术之容器与镜像

容器的运行

Docker 核心技术之容器与镜像

Docker 核心技术之容器与镜像