将 docker 容器传送到远程主机的最佳方式是什么?

问题描述 投票:0回答:1

我是

docker
docker-compose
的新手。我将 docker-compose 文件与多个服务一起使用。使用 docker-compose 时,我在本地计算机上有容器和图像,我的任务是将它们传递到远程主机。

我已经确定了几种解决方案:

  1. 我可以构建我的图像并将它们推送到注册表,然后将它们拉到生产服务器上。但是,此选项需要私有注册表。考虑到这一点,注册表似乎是一个不必要的元素。如果我更喜欢推送镜像并直接运行容器怎么办?
  2. 将 docker 镜像保存到
    tar
    文件并将其加载到远程主机上。我发现this post,建议在这种情况下使用 shell 脚本。或者,我可以直接使用 docker ,但这样做意味着失去 docker-compose 的好处。
  3. Docker Machinegeneral
     驱动程序一起使用。但是,在这种情况下,我只能从一台机器进行部署,或者我需要配置
    certificates。对我来说这似乎不是一个简单的解决方案。
  4. 使用带有主机参数(-H)的 docker-compose。但是,在这种情况下,我需要在远程主机上构建映像。是否可以在本地机器上构建镜像并将其推送到远程主机?
  5. 我可以使用
  6. docker-compose push
     (
    docs) 到远程主机,但为此,我需要在远程主机上创建一个注册表,并且我必须添加主机名并将其作为参数传递给 docker-每次都作曲。
将 Docker 容器部署到远程主机的推荐最佳实践是什么?

docker deployment docker-compose docker-machine
1个回答
5
投票
通过注册表(您的第一个选择)。所有面向容器的工具都支持它,并且在 Kubernetes 等集群环境中本质上是必需的。您可以使用 Docker Hub、公共云提供商提供的映像注册表、第三方选项,或者运行您自己的。

如果您

不能使用注册表,那么docker save

/
docker load
是下一个最佳选择,但我仅在您处于诸如气隙环境之类的环境中(其中之间没有网络连接)时才推荐它。构建系统和生产系统。

无法直接将图像从一个系统推送到另一个系统。出于安全原因,您应该避免启用 Docker 网络 API:任何可以访问网络公开的 Docker 套接字的人几乎都可以轻松 root 其主机。


独立于图像,您还需要传输

docker-compose.yml

 文件本身,以及绑定安装到容器中的任何配置文件。普通的 
scp
rsync
 在这里效果很好。没有办法在纯 Docker 生态系统中转移这些。

© www.soinside.com 2019 - 2024. All rights reserved.