Is there a way to seamlessly transfer docker-compose containers to another host without building?
我正在设置CI/CD解决方案。我想在无法访问互联网的生产机器上运行Docker应用程序。
约束条件如下:
可选:
我知道docker commit和repos,但遗憾的是,这不是一个选项,因为生成的服务器无法访问互联网。
这是docker-compose.yaml;这不是一成不变的,可以根据需要进行更改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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" |
我希望能够正确地运输集装箱或图像,并在不同的机器上使用相同的图像和
Esteban关于如何使用注册表方法是正确的,但是忘记了提到"tar"方法:您基本上可以将图像保存到tar存档,然后将其加载到另一个tar的docker内部注册表。图像的传输方式由您决定!
不过,如果您打算经常这样做,我建议遵循私有注册表解决方案:它绝对更干净!
P?U?S?H?我?n?G?D?O?C?K?E?R?我呢?M?A?G?E?S?t?O?A?R?E?G?我?S?T?R?Y?我呢?S?t?H?E???n?L?Y?W?A?Y??A?T?l?E?A?S?T?S?U?P?P?O?R?T?E?D?B?Y?D?O?C?K?E?R???U?T?-?O?f?-?T?H?E?-?乙?O?X?)???T?O?S?H?A?R?E?t?H?E?M?B?E?T?W?E?E?n?S?E?R?V?E?R?S?.
如果互联网接入不是一个选项,那么看看有自己的私人码头注册。
将其部署在可从推拉机器访问的网段中。
然后构建包含注册表地址的Docker映像并将其推送:
1 2 | docker build -t <private_registry_address>/test_dev_app:latest . docker push <private_registry_address>/test_dev_app:latest |
当您推送它时,Docker客户机将知道它必须使用指定的地址而不是公共注册表。
或者正如tgogoos在下面的评论中所提到的,检查他关于如何在空气间隙环境中使用