Docker 机器如何标记为活动的?

How is a Docker Machine marked as active?

我正在阅读 Docker 机器用户指南 https://docs.docker.com/v1.5/machine/

它说:

You can see the machine you have created by running the docker-machine ls command again:

  $ docker-machine ls
  NAME      ACTIVE   DRIVER       STATE     URL
  dev       *        virtualbox   Running   tcp://192.168.99.100:2376

The * next to dev indicates that it is the active host.

当我 运行 这样做时,我没有看到任何机器旁边的 *。我需要做什么才能使机器标记为活动状态?这有什么好处吗?

例如,我 运行 在 Windows 10 上安装 Docker 机器,通过激活它是否意味着我不必一直在中指定机器名称我的命令如 docker-machine env dev

我认为 运行以下命令应该有效:

$ eval $(docker-machine env default)

(其中 default 是机器的名称)。

* 的原因是告诉您当前连接到哪台机器,例如如果你 运行 docker ps 它会与哪个 Docker 引擎对话?

在Docker机器的当前版本中,我相信您必须始终指定名称。

使用下面的命令 Docker for Windows Container with Powershell 激活机器:

#Powershell command
PS: docker-machine env default
#output might me like this
 $Env:DOCKER_TLS_VERIFY = "1"
 $Env:DOCKER_HOST = "tcp://172.16.104.171:2376"
 $Env:DOCKER_CERT_PATH = "C:\Users\username\.docker\machine\machines\default"
 $Env:DOCKER_MACHINE_NAME = "default"
#DOCKER_HOST environmental variable should has same value as default machine
PS:$Env:DOCKER_HOST = "tcp://172.16.104.171:2376" # should be same as default machine Env:DOCKER_HOST
#Now list docker machines, default will be active.
PS: docker-machine ls
#default is not active and it look like this.
NAME       ACTIVE   DRIVER   STATE     URL                         SWARM   DOCKER    ERRORS
default    *        hyperv   Running   tcp://172.16.104.171:2376           v1.12.3
manager1   -        hyperv   Running   tcp://172.16.104.168:2376           v1.12.3

码头

非常简单,答案就在 docker 网站的声明 "a machine is considered active if the DOCKER_HOST environment variable points to it" 中:https://docs.docker.com/machine/reference/active/

所以,让我们先说:

$ docker-machine ls

NAME      ACTIVE   DRIVER         STATE     URL
dev       -        virtualbox     Running   tcp://192.168.99.103:2376
staging   *        digitalocean   Running   tcp://203.0.113.81:2376

如果您勾选:

$ echo $DOCKER_HOST
tcp://203.0.113.81:2376  ====> it will point to staging

你现在所要​​做的就是(在 Docker 终端上试过):

$ DOCKER_HOST=tcp://192.168.99.103:2376

现在如果你检查:

$ docker-machine ls

NAME      ACTIVE   DRIVER         STATE     URL
dev       *        virtualbox     Running   tcp://192.168.99.103:2376
staging   -        digitalocean   Running   tcp://203.0.113.81:2376

活动容器已移至'dev'!!从现在开始,您的所有命令(如 'docker container ls' 等)都应该反映您新激活的容器。

但请注意,此安排仅适用于您更改了默认容器的 Docker 终端,即如果您关闭并重新打开一个新终端或打开另一个 Docker 原始默认终端容器(在此示例中为暂存)将处于活动状态。