Как машина докеров отмечена как активная?
Я работаю через Руководство пользователя 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
Ответы
Ответ 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, будет активен исходный контейнер по умолчанию (этап в этом примере).