第一步:导出容器镜像
在源设备上已经存在部署好的docker容器,现在需要将其作为一个母镜像,在其他设备上进行导入,其实就是像作为一个安装的镜像。
在这里首先需要将镜像导出。

docker ps -a --no-trunc #不折叠任何列内容
CONTAINER ID                                                       IMAGE         COMMAND                           CREATED      STATUS          PORTS                                                                                                                 NAMES
88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35   nginx:1.15    "nginx -g 'daemon off;'"          2 days ago   Up 28 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5800->5800/tcp, :::5800->5800/tcp   nginx
21ac1e8e32f4f6ef15663325973a27d4b6bbd569862f102839a2ba6d0f43cc05   php:7.4-fpm   "docker-php-entrypoint php-fpm"   2 days ago   Up 28 minutes   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp                                                                             php-fpm

##导出容器
docker export -o nginx-1.15.tar nginx  # docker export -o 导出镜像存放的地址  container_id/name

这里需要将容器的command列下的内容记下来后面需要用到.
第二步:将导出镜像上传到需要导入的设备,自行解决。
第三步:导入容器
1.导入容器镜像

docker import nginx-1.15.tar nginx:1.15 ## docker import 容器镜像地址 容器导入镜像名字
docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        1.15      42d88544a231   3 seconds ago    108MB

说明 容器名字冒号后面是tag,作为区分使用
2.启动镜像
这里基本和新部署docker容器一致,只有部分区别。

docker run --name nginx -d \ #--name 命名容器
--restart=always \ #启动模式
--network docker-net \ #使用的docker网络,
-p 443:443 \ # 映射端口,宿主机端口:容器内端口
-p 80:80 \
-p 5800:5800 \
-v /home/work/web:/var/www/html \ #映射目录 宿主机目录:容器类目录
-v /home/work/docker-conf/config/nginx/conf.d:/etc/nginx/conf.d/ \
-v /home/work/docker-conf/config/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/work/docker-conf/logs/nginx:/var/log/nginx/ \
 nginx:1.15 nginx -g 'daemon off;' # 使用的镜像 镜像名:镜像tag 

重点来了,在镜像名后面跟的,就是第一步中记录下来的command列的内容,这是重点,这里不添加的话,会让容器无法启动,或者一直是正在启动的状态。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐