由于一个应用有好几个 images,我希望带上 docker 内部的配置,完整迁徙到另外一台 VPS, 最好是断网的情况下也可以部署起来(镜像复制过去的情况下)
我目前直接docker save -o 名称.tar AAA:8.2 BBB:5.6
打包了
然后docker load -i 包名称.tar
直接导入到新的 VPS.
目前是这个结果,似乎不行哈,难道我得一条一条命令启动吗?有啥无脑把 docker 应用搬家的办法吗?
感谢
root@HE1C3GBF2:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@HE1C3GBF2:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
domain-redirect-docker-master-web latest f8c6b6036a7d 3 hours ago 1.28GB
domain-redirect-docker-master-nginx latest 0a8aeeb3e4ba 3 hours ago 142MB
mysql latest a3a2968869cf 4 days ago 538MB
rabbitmq management 789501296640 5 days ago 263MB
redis latest 3358aea34e8c 2 weeks ago 117MB
root@HE1C3GBF2:~#
1
wanacry 2022-12-05 20:14:13 +08:00 via iPhone
您可以使用 Docker 的 export 和 import 命令将应用容器从一台服务器导出到另一台服务器。首先,在源服务器上,使用 docker export 命令将容器导出为 tar 文件:
Copy code $ docker export <container_name> > export.tar 然后,将导出的 tar 文件复制到目标服务器上。在目标服务器上,使用 docker import 命令将容器导入到 Docker 中: Copy code $ docker import export.tar <new_image_name>:<tag> 您可以使用 docker images 命令查看导入的新镜像。接下来,使用 docker run 命令运行容器: Copy code $ docker run -it <new_image_name>:<tag> /bin/bash 这样,您就可以在目标服务器上无网络环境下运行容器了。 |
2
zhlxsh 2022-12-05 20:14:15 +08:00 via iPhone
镜像打包,启动配合写好 compose 文件,一条命令就能起
|
3
gosby 2022-12-05 20:17:37 +08:00
以下答案来自无脑的 ChatGPT
在断网的情况下,您可以将镜像打包成一个 tar 文件,然后将其复制到另一台 VPS 。您可以使用 docker save 命令将镜像打包成 tar 文件。例如: Copy code docker save -o 名称.tar AAA:8.2 BBB:5.6 将 tar 文件复制到另一台 VPS 后,您可以使用 docker load 命令将其加载到 VPS 中。例如: Copy code docker load -i 名称.tar 这应该可以将您的镜像导入到另一台 VPS 中,然后您就可以使用 docker run 命令运行容器了。不过,如果您的应用包含多个容器,您可能需要使用 Docker Compose 来运行这些容器,而不是单独运行每个容器。 如果您使用 Docker Compose ,可以在您的 VPS 上创建一个 docker-compose.yml 文件,并将您的容器配置添加到该文件中。然后,您可以使用 docker-compose up 命令在 VPS 上启动所有容器。例如: Copy code version: '3' services: web: image: domain-redirect-docker-master-web:latest ports: - "80:80" nginx: image: domain-redirect-docker-master-nginx:latest ports: - "443:443" mysql: image: mysql:latest rabbitmq: image: rabbitmq:management redis: image: redis:latest 上面的配置文件定义了 5 个容器,您可以在 VPS 上运行这些容 |
4
mind3x 2022-12-05 20:28:09 +08:00 via Android
多一句嘴,不喜请随意忽略。docker image 本身应该是无状态的,打包整个 container 不是正确做法。
正确做法是所有可变的数据和配置应该独立于 image 之外,比如放在 host 上,作为 volume 映射到 container 里。迁移时只把 volume 拷走就行。 |