Docker深入理解
来深入理解一下容器和镜像的区别
镜像:镜像就是一堆只读层,它们重叠在一起,上面一层会有一个指针指向下一层
容器:就是在镜像top层加了一个可读可写的层
docker create
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行
docker start
Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。
docker run
docker run命令实际上就是docker create 和 docker start两个命令的结合
docker stop
docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程
docker rm
docker commit
docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像
docker bulid
docker build命令非常有趣,它会反复的执行多个命令
我们从上图可以看到,build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地1)run(create和start)、2)修改、3)commit。在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。
docker save
docker save命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。
docker export
docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(译者注:expoxt后 的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)
docker history
docker history命令递归地输出指定镜像的历史镜像