我对 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