在Docker Run上使用docker-machine的决策规则



当我在Windows环境中使用Docker-Machine(使用Docker-Toolbox安装)时,每个docker run命令都使用该Docker-Machine作为Docker守护程序。但是,当我在Linux环境中使用Docker-Machine(与Docker-Machine一起安装了Native Docker守护程序时,docker run命令即使有一个运行的Docker-Machine实例也使用本机docker守护程序。

问题是:

  • docker run命令如何决定使用哪个守护程序?
  • 是否有任何方法可以在Docker-Machine实例上列出运行容器?

对于第二个,我知道我可以在其中ssh到docker-machine实例,并在其中查询 docker ps,但我想从实例外检查。

预先感谢。

Docker Machine堆栈通过启动VM来工作,然后将DOCKER_HOST环境变量设置为指向它。特别是,它还为TLS-Encrypt连接并设置TLS客户端证书以对呼叫者进行身份验证。(没有此设置,远程DOCKER_HOST非常危险。)

so:docker run和其他所有Docker命令都使用DOCKER_HOST环境变量来决定运行何处。如果DOCKER_HOST指向Docker Machine VM,则docker ps将列出那里的容器;您通常不需要docker-machine ssh(尽管您确实需要它是一个有用的工具)。

在本机Linux主机上,直接使用本地Docker守护程序要容易得多。如果您确实有本地守护程序和Docker-Machine VM,则可以

# switch to the Docker Machine VM
eval $(docker-machine env default)
# switch back to the host Docker
eval $(docker-machine env -u)

最新更新