当我在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)