将 Docker 容器保存为单个映像

将 Docker 容器保存为单个映像

我对 Docker 没有太多经验,所以不确定这是否可行,但我正尝试将我的 Docker 容器导出为单个映像。

我使用来自官方存储库(nginx、php7、postgresql)的各种图像创建了一个 Web 服务器。我有一个 docker-compose.yml 文件来启动每个容器并链接它们。

有用于网络托管根目录和 postgresql 数据目录的卷。

我现在需要导出这整批文件,包括卷,以便我们的技术人员可以轻松地在客户端网络上安装我们的 Web 服务器。我们通常无法在这些 PC 上访问互联网,这就是为什么我不能简单地将 Compose 和 Dockerfile 交给他们。

如果我说得不清楚,请原谅,但这对我来说还是很新。

web:
 image: nginx:latest

 environment:
  - DOCKER_WEB=true

 #stdin_open: true
 #tty: true
 ports:
 - "8080:80"

 volumes:
  - ./code:/code
  - ./default.conf:/etc/nginx/conf.d/default.conf

 links:
 - php

cron:
 build: './docker/cron'

 links:
 - web

throwaway:
 build: './docker/throwaway'
 volumes:
  - ./code:/code

php:
 #image: php:7-fpm
 build: './docker/php'

 links:
 - postgres

 volumes:
  - ./code:/code

postgres:
 image: postgres:latest

 environment:
  - POSTGRES_USER=un_rftags
  - POSTGRES_PASSWORD=pwd_RFT@gs01
  - POSTGRES_DB=db_rftags

 volumes:
  - ./postgres-data:/var/lib/postgresql/data

 ports:
 - "9090:5432"

答案1

您可以使用以下方式一次保存所有图像docker save,然后使用docker load

当然,这意味着您需要创建图像,但您似乎已经这样做了。

例如:

docker save nginx:latest cron throwaway php | xz -c > all-images.tar.xz

使用以下命令将它们导入到目标docker:

xz -dc < all-images.tar.xz | docker load

相关内容