连接到远程docker计算机时是否运行本地容器?

连接到远程docker计算机时是否运行本地容器?,docker,Docker,我想在DigitalOcean水滴上部署一个本地构建的容器。我一直在遵循指示。问题在于,通过运行: eval $(docker-machine env DROPLET_NAME) Docker将环境变量设置为远程机器,有效地将环境更改为在远程机器上运行Docker。这是意料之中的。但是,假设我有一个名为rb612/docker img:latest的本地映像,我还没有将它推到远程。我想在远程机器上下文中运行它 如果我跑步: docker run -d -p 80:8000 rb612/dock

我想在DigitalOcean水滴上部署一个本地构建的容器。我一直在遵循指示。问题在于,通过运行:

eval $(docker-machine env DROPLET_NAME)
Docker将环境变量设置为远程机器,有效地将环境更改为在远程机器上运行Docker。这是意料之中的。但是,假设我有一个名为
rb612/docker img:latest
的本地映像,我还没有将它推到远程。我想在远程机器上下文中运行它

如果我跑步:

docker run -d -p 80:8000 rb612/docker-img:latest
然后我在本地找不到图像“rb612/docker img:latest”。如果我的理解是正确的,这是因为它不再在我的机器的上下文中运行。在不设置远程环境变量的情况下,打开新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主机上可用,您可以正常运行它

    设置远程注册表
    您可以设置自己的远程注册表,在这种情况下,您只需从本地机器
    docker push
    到该注册表,然后从远程机器
    docker pull
    。这通常是最好的长期解决方案,但初始设置(特别是使用SSL正确地保护事物)要稍微复杂一些。详细信息见。

    这太棒了!非常感谢。工作起来很有魅力。出于好奇,我也尝试这样做:通过使用
    docker machine scp
    .tar
    图像复制到远程路径
    /home/test.tar
    ,但我无法通过执行
    docker load-I我的机器名称:/home/test.tar加载。它也无法通过执行
    dockerload-i/home/test.tar
    找到它。我做错什么了吗?我似乎无法在远程计算机中指定路径。