>我想在 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 映像保存/加载
-
您可以使用
docker image save
将图像保存到文件中。 在运行eval
语句之前执行此操作,或者在未配置远程 Docker 环境的其他终端窗口中执行此操作:docker image save rb612/docker-img:latest > docker-img.tar
-
运行
eval $(...)
命令后,使用docker image load
将映像发送到远程 Docker:docker image load < docker-img.tar
现在,该映像在远程 Docker 主机上可用,您可以正常docker run
它。
设置远程注册表
您可以设置自己的远程注册表,在这种情况下,您只需从本地计算机docker push
该注册表,然后从远程计算机docker pull
。 这通常是最好的长期解决方案,但初始设置(特别是使用 SSL 正确保护内容)涉及更多。 详细信息在文档中。