Как Docker Machine помечается как активная?

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

3 ответа

Решение

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

$ eval $(docker-machine env default)

(Куда default это название машины).

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

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

Используйте команду ниже для Docker для контейнера Windows с 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_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 container ls' и т. Д., Должны отражать ваш новый активный контейнер.

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

Другие вопросы по тегам