是否在docker run上使用docker-machine的决策规则

时间:2019-02-19 14:57:36

标签: docker docker-machine

当我在Windows环境(与docker-toolbox一起安装)中使用docker-machine时,每个docker run命令都使用该docker-machine作为docker守护程序。 但是,当我在装有本地docker守护程序和docker-machine的Linux环境中使用docker-machine时,即使存在正在运行的docker-machine实例,docker run命令也会使用本地docker守护程序。

问题是:

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

对于第二个实例,我知道我可以通过SSH到docker-machine实例并在其中查询docker ps,但是我想从实例外部对其进行检查。

谢谢。

1 个答案:

答案 0 :(得分:1)

Docker Machine堆栈的工作方式是启动一个VM,然后设置DOCKER_HOST环境变量以指向它。特别是,它还进行必需的设置以对连接进行TLS加密并设置TLS客户端证书以对调用方进行身份验证。 (如果没有此设置,则远程DOCKER_HOST极其危险。)

因此: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)