22

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

它说:

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

4

3 回答 3

43

我认为只需运行以下命令就可以了:

$ eval $(docker-machine env default)

(机器的名称在哪里default)。

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

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

于 2015-10-19T11:07:19.130 回答
5

对带有 Powershell 的 Docker for Windows Container 使用以下命令使机器处于活动状态:

#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

码头

于 2016-11-09T12:08:29.793 回答
3

它非常简单,答案在于 docker 网站上的语句“如果 DOCKER_HOST 环境变量指向它,则认为机器是活动的”: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

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

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

于 2017-08-21T17:51:28.990 回答