Docker 的容器与镜像
目录
命令
|
|
概览
如图所示,镜像就是一些只读层,而容器就是一些读写层。
定义
镜像(image)
镜像就是一堆只读层的统一视角。除了最下面一层,其它层都会有一个指针指向下一层。在用户的角度这是一个统一文件系统。
容器(container)
容器 = 镜像 + 读写层。并且容器的定义并没有提及是否要运行容器。
运行态容器(running container)
运行态容器=容器+隔离的进程空间+进程。
如下图所示,一个容器中进程的行为会作用于读写层。
镜像层(image layer)
结合命令理解
docker create image-id
为一个镜像添加一个读写层形成一个容器。容器创建后没有运行。
docker start container-id
为容器创建一个进程隔离空间。
docker run image-id
run = creat + start
docker ps
列出运行态容器
docker ps –a
列出所有容器
docker images
列出所有的顶层镜像。顶层镜像是指创建容器所使用的镜像或能直接被pull下来的镜像。
docker images –a
列出所有镜像。
docker stop container-id
向运行的容器发出SIGTERM
信号停止所有进程。
docker kill container-id
向运行的容器发出SIGKILL
信号停止所有进程。
docker pause container-id
使用cgroups freezer暂停所有容器内进程. 发送信号SIGTSTP。
docker rm container-id
移除可读写层(容器)。
docker rmi image-id
移除镜像。
OPTIONS说明:
- -f :强制删除;
- –no-prune :不移除该镜像的过程镜像,默认移除;
当同一个镜像拥有多个标签时,执行 docker rmi 命令,只是会删除了该镜像众多标签中指定的标签而已,并不会影响原始的那个镜像文件。如果某个镜像不存在多个标签,当且仅当只有一个标签时,执行删除命令时,就要小心了,这会彻底删除镜像所有文件层。
docker commit container-id
将容器的可读写层转换为只读层,容器转化为镜像。
docker build
build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地
- run(create和start)
- 修改
- commit
在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。
docker exec running-container-id
在运行中的容器中执行一个进程
docker inspect container-id
or image-id
提取容器或者镜像的元数据。
docker save image-id
把镜像创作成一个压缩文件。这个压缩文件保存了每一层及其元数据。
docker export container-id
把镜像创作成一个压缩文件。把多层镜像压缩成一个层。
docker history image-id
查看指定镜像的创建历史。