我想部署一个我在 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 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 正确保护事物)涉及更多。详细信息在文档中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句