Подтвердить что ты не робот

Как машина докеров отмечена как активная?

Я работаю через Руководство пользователя Docker Machine на 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.

Когда я запускаю это, я не вижу * рядом с любыми машинами. Что мне нужно сделать, чтобы машина была отмечена как активная? Есть ли преимущества для этого?

Например, я запускаю Docker Machine в Windows 10, делая его активным, означает ли это, что мне не нужно указывать имя машины в моих командах, например docker-machine env dev

4b9b3361

Ответ 1

Я думаю, что нужно запустить только следующую команду:

$ eval $(docker-machine env default)

(Где default - имя машины).

Причина * заключается в том, чтобы сообщить вам, к какой машине вы подключены, например, если вы запустите docker ps, с каким движком Docker он будет разговаривать?

В текущей версии Docker-машины, я считаю, что вы всегда должны указывать имя.

Ответ 2

Используйте команду ниже для Docker for Windows Container с 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

док

Ответ 3

Его довольно просто и ответ лежит в утверждении: "машина считается активной, если переменная окружения 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

Активный контейнер переместился в 'dev'! С этого момента все ваши команды, такие как "контейнер докеров" и т.д., Должны отражать ваш новый активный контейнер.

Но учтите, что это соглашение будет работать только для терминала Docker, где вы изменили контейнер по умолчанию, т.е. если вы закроете и снова откроете новый терминал или откроете другой терминал Docker, будет активен исходный контейнер по умолчанию (этап в этом примере).