连接到远程码头工人机器时运行本地容器?



>我想在 DigitalOcean droplet 上部署一个本地构建的容器。我一直在遵循这些说明。问题是,通过运行:

eval $(docker-machine env DROPLET_NAME)

Docker 将环境变量设置为远程计算机,从而有效地将环境更改为在远程计算机上运行 Docker。这是意料之中的。但是,假设我有一个名为rb612/docker-img:latest的本地映像,我尚未将其推送到远程。我想在远程计算机上下文中运行它。

如果我运行:

docker run -d -p 80:8000 rb612/docker-img:latest

然后我得到Unable to find image 'rb612/docker-img:latest' locally.如果我的理解是正确的,那是因为它不再在我的机器环境中运行。打开一个新的 shell 并运行相同的命令可以在不设置远程环境变量的情况下正常工作。

所以我想知道是否有办法在我的远程机器上运行这个本地映像。我尝试使用-w标志传入本地路径,但遇到了同样的错误。改用远程 docker 映像进行部署可以正常工作。

所以我想知道是否有办法在我的远程机器上运行这个本地映像。

确定。

您有几个选择。

使用 docker 映像保存/加载

  1. 您可以使用docker image save将图像保存到文件中。 在运行eval语句之前执行此操作,或者在未配置远程 Docker 环境的其他终端窗口中执行此操作:

    docker image save rb612/docker-img:latest > docker-img.tar
    
  2. 运行eval $(...)命令后,使用docker image load将映像发送到远程 Docker:

    docker image load < docker-img.tar
    

现在,该映像在远程 Docker 主机上可用,您可以正常docker run它。

设置远程注册表

您可以设置自己的远程注册表,在这种情况下,您只需从本地计算机docker push该注册表,然后从远程计算机docker pull。 这通常是最好的长期解决方案,但初始设置(特别是使用 SSL 正确保护内容)涉及更多。 详细信息在文档中。

最新更新