我正在设置ci / cd解决方案。我想在无法访问互联网的生产机器上运行docker应用程序。
约束如下:
Build needs to happen on machine A
Resulting image/container needs to be exported and transported to machine B
(可选):Run the container again with a docker-compose file
我知道有关docker commit和repos的信息,但是遗憾的是这不是一个选择,因为生成的服务器无法访问Internet。
这是docker-compose.yaml;这不是一成不变的,可以根据需要更改
version: '2'
services:
test_dev_app:
image: testdevapp:latest
container_name: test_dev_app
hostname: test_dev_app
environment:
DJANGO_SETTINGS_MODULE: "settings.production"
APPLICATION_RUN_TYPE: "uwsgi"
volumes:
- ./:/data/application
ports:
- "8000:8000"
- "8080:8080"
我希望能够docker-compose up
正确地运输容器或图像并在另一台机器上使用同一图像
答案 0 :(得分:2)
Esteban关于如何使用注册表方式是正确的,但是忘了提及“ tar”方式:您基本上可以将图像save load保存到tar存档中,然后join()
}另一个人的docker内部注册表。
图像传输方式取决于您!
不过,如果您打算经常这样做,我建议您遵循私有注册表解决方案:它绝对更干净!
答案 1 :(得分:1)
推泊坞图像到注册表是唯一的方法̶(至少支持多克尔外的现成)̶共享它们之间的服务器。
如果无法访问互联网,请看看拥有自己的private docker registry。
将其部署在可通过推拉机访问的网段中。
然后构建您的docker映像including,并将其推送到注册表:
docker build -t <private_registry_address>/test_dev_app:latest .
docker push <private_registry_address>/test_dev_app:latest
当您按下它时,泊坞窗客户端将知道它必须使用指定的地址而不是公共注册表。
或者如tgogos在下面的评论中所述,请检查他的link,了解如何在空白环境中使用docker save / docker load
。