在 docker 运行 上是否使用 docker-machine 的决策规则
Decision rule to use docker-machine or not on docker run
当我在 Windows 环境中使用 docker-machine(安装了 docker-toolbox)时,每个 docker run
命令都使用那个 docker-机器作为 docker 守护进程。
但是,当我在 Linux 环境中使用 docker-machine 时,它安装了本机 docker 守护程序以及 docker-machine,docker run
命令使用本机 docker 守护进程,即使有一个 运行 docker-机器实例。
问题是:
docker run
命令如何决定使用哪个守护进程?
- 是否有任何方法可以在 docker 机器实例上列出 运行 容器?
对于第二个,我知道我可以通过 SSH 连接到 docker-机器实例并在其中查询 docker ps
,但我想从实例外部检查它。
提前致谢。
Docker 机器堆栈通过启动 VM,然后将 DOCKER_HOST
环境变量设置为指向它来工作。特别是,它还进行必要的设置以对连接进行 TLS 加密并设置 TLS 客户端证书以验证调用者的身份。 (如果没有这个设置,远程 DOCKER_HOST
是极其危险的。)
因此:docker run
和所有其他 Docker 命令使用 DOCKER_HOST
环境变量来决定 运行 事情的位置。如果 DOCKER_HOST
指向 Docker 机器 VM,docker ps
将列出那里的容器;您通常不需要 docker-machine ssh
(尽管它在您真正需要时是一个有用的工具)。
在本地 Linux 主机上,直接使用本地 Docker 守护进程要容易得多。如果您同时拥有本地守护程序和 docker 机器虚拟机,您可以
# switch to the Docker Machine VM
eval $(docker-machine env default)
# switch back to the host Docker
eval $(docker-machine env -u)
当我在 Windows 环境中使用 docker-machine(安装了 docker-toolbox)时,每个 docker run
命令都使用那个 docker-机器作为 docker 守护进程。
但是,当我在 Linux 环境中使用 docker-machine 时,它安装了本机 docker 守护程序以及 docker-machine,docker run
命令使用本机 docker 守护进程,即使有一个 运行 docker-机器实例。
问题是:
docker run
命令如何决定使用哪个守护进程?- 是否有任何方法可以在 docker 机器实例上列出 运行 容器?
对于第二个,我知道我可以通过 SSH 连接到 docker-机器实例并在其中查询 docker ps
,但我想从实例外部检查它。
提前致谢。
Docker 机器堆栈通过启动 VM,然后将 DOCKER_HOST
环境变量设置为指向它来工作。特别是,它还进行必要的设置以对连接进行 TLS 加密并设置 TLS 客户端证书以验证调用者的身份。 (如果没有这个设置,远程 DOCKER_HOST
是极其危险的。)
因此:docker run
和所有其他 Docker 命令使用 DOCKER_HOST
环境变量来决定 运行 事情的位置。如果 DOCKER_HOST
指向 Docker 机器 VM,docker ps
将列出那里的容器;您通常不需要 docker-machine ssh
(尽管它在您真正需要时是一个有用的工具)。
在本地 Linux 主机上,直接使用本地 Docker 守护进程要容易得多。如果您同时拥有本地守护程序和 docker 机器虚拟机,您可以
# switch to the Docker Machine VM
eval $(docker-machine env default)
# switch back to the host Docker
eval $(docker-machine env -u)