1.save/load与export/import
docker save 用来将一个或多个image打包保存。
如:将本地镜像库中的image1和image2打包到images.tar中
docker save -o images.tag image1:v1 image2:v1
docker save 也可以打包container,保存的是容器背后的image.
docker load用于将打包的tar中包含的镜像load到本地镜像库,但不能重命名其中的镜像名。
docker load -i images.tar
docker export 打包container文件系统
docker export -o thecontainer.tar container_name
使用 docker import 载入,可以为新镜像指定name和tag
docker import thecontainer.tar newimagename:tag
总结一下
- docker save保存的是镜像(image),docker export保存的是容器(container);
- docker load用来载入镜像包,必须是一个分层文件系统,必须是是save的包;
docker import用来载入容器包,但两者都会恢复为镜像; - docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
- docker export的包会比save的包要小,原因是save的是一个分层的文件系统,export导出的只是一个linux系统的文件目录
2.run与create ,exec
docker create:从镜像创建不启动容器
docker run :根据镜像创建一个容器并运行一个命令,操作的对象是 镜像;
docker exec :在运行的容器中执行命令,操作的对象是 容器。
docker start:启动一个已存在容器
3.dockerfile的run、cmd、entrypoint指令区别
docker run [OPTIONS] IMAGE [COMMAND][ARG...]
(1)run在building 时运行,可以写多条。
(2)cmd和entrypoint可以在运行容器时运行,只能写一条,如果写多条,最后一条生效。
(3)cmd在run时可以被command覆盖,entrypoint不会被command覆盖,但可以指定一entrypoint覆盖。
(4)entrypoint的值是要运行的命令,cmd会被当做entrypoint的选项。
RUN <command> (shell格式)
RUN ["executable","param1","param2"] (exec格式,推荐格式)
CMD <command> (shell格式)
CMD ["executable","param1","param2"] (exec格式,推荐格式)
ENTRYPOINT <command> (shell格式)
ENTRYPOINT ["executable","param1","param2"] (exec格式,推荐格式)