第一步:导出容器镜像
在源设备上已经存在部署好的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列的内容,这是重点,这里不添加的话,会让容器无法启动,或者一直是正在启动的状态。