[英]How to run container in a remote docker host with Jenkins
我有两台服务器:
我想在Server A中构建一个Docker镜像,然后在Server B中运行对应的容器。 那么问题来了:
一旦 Jenkins 完成了 docker 构建,从服务器 A 在服务器 B 中运行容器的推荐方法是什么? 我是否必须将映像推送到 Docker 集线器以将其拉入服务器 B,或者我可以以某种方式直接传输映像?
我真的不是在寻找特定的 Jenkins 插件或东西,而是从安全和架构的角度来看,实现这一目标的最佳方法是什么?
我已经阅读了大量关于此的帖子和 SO 答案,并且已经意识到有很多方法可以做到这一点,但我仍然不确定最终、最常见的方法是什么。 我见过这些替代品:
docker-machine
ssh root@server.b "docker run ..."
编辑:
我在 Digital Ocean 中运行服务器 A 和 B。
Docker 映像可以保存到常规的 tar 存档中:
docker image save -o <FILE> <IMAGE>
文档在这里: https : //docs.docker.com/engine/reference/commandline/image_save/
然后将此 tar 存档scp
到另一台主机,并运行docker load
加载图像:
docker image load -i <FILE>
文档在这里: https : //docs.docker.com/engine/reference/commandline/image_load/
这种save-scp-load
方法很少使用。 常见的方法是在防火墙后面设置一个私有的 Docker 注册表。 并将图像推送到该私有注册表或从该私有注册表中提取。 本文档描述了如何部署容器注册表。 或者你可以选择第三方提供的注册服务,比如Gitlab的容器注册。
使用 Docker 存储库时,您只需推/拉已更改的层。 您可以使用Docker REST API 。 Jenkins HTTP 请求插件可用于发出 HTTP 请求。 您可以直接在远程 Docker 主机上运行 Docker 命令,设置 DOCKER_HOST 环境变量。 将环境变量导出到当前 shell:
export DOCKER_HOST="tcp://your-remote-server.org:2375"
请注意允许 TCP 流量时的安全问题。 更多信息。 另一种方法是在Jenkins中使用SSH Agent Plugin。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.