docker常用命令及相似命令的差别

2019-05-18  本文已影响0人  jshan

docker save

docker save 命令用来将一个或多个image打包保存,将这些镜像保存在一个tar包中,例如:

# 可以是image保存
docker save -o images.tar postgres:9.6 mongo:3.4

# 可以是container保存,实际上也是在保存该container后的image
docker save -o images.tar postgres

那么如何导入通过 save 方式持久化保存的镜像呢?通过命令 laod 具体如下,注意不可以重新制定镜像的名称

docker load < images.tar

docker export

docker export 命令用来将container的文件系统进行打包,所以只能够指定container,而不能是image。

docker export 的应用场景主要是用来制作基础镜像,比如用一个镜像启动了一个容器,然后在该容器中安装了一些软件和一些设置的情况。
docker export 导出的镜像文件大小,小于 docker save 保存的镜像。
docker export 导出是根据容器拿到的镜像,再倒入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);而 docker save 保存的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方法: docker images --tree

那么如何导入通过 export 方式持久化保存的容器呢?通过命令 import 具体如下,注意可以设置镜像的名称

# 直接倒入,不指定名称时
docker import images.tar

# 倒入设置镜像名称时
docker import - new-image:tag < images.tar

docker images

docker kill

docker kill 命令直接发送 SIGKILL 信号杀死容器。

docker stop

docker stop 先发送 SIGTERM 信号给docker,允许其在一定时间(默认10s)内进行一些操作(例如资源回收),若这段时间内容器未停止,则发送 SIGKILL 信号强行杀死容器。

docker run

docker run 从镜像中启动一个容器,创建的是一个全新的容器。

docker start

docker start 运行已停止的容器,例如我们通过 docker killdocker stop 命令停止了容器之后,通过 docker ps -a 查看到状态为 EXITED 的容器即为停止的容器,此时可以通过 docker start 命令来启动这些容器。

再次启动的容器,会保留上一次结束前做的变动,容器的ID不会改变。

docker rm

docker rm 删除容器,但是有一点需要注意,在删除容器之前,需要先将容器 docker kill 或是 docker stop 否则会报错。

docker rmi

docker rmi 删除镜像。但是有一点需要注意,在删除镜像之前,需要先将由该镜像生成的容器给删除才行,否则在删除镜像的时候会删除不干净(还保留有 IMAGE ID,但是 REPOSITORY / TAG 没有了为 <none>)。

另外如果通过 IMAGE ID 来删除镜像的时候,如果多个具有相同 IMAGE ID 不同名称(REPOSITORY)的镜像的情况,会出现报错,报错内容如下:

Error:Conflict, cannot delete image fd484f19954f because it is tagged in multiple repositories

此时正确的做法,应该是通过 REPOSITORY 来执行删除镜像操作。

上一篇下一篇

猜你喜欢

热点阅读