Как 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, будет активен исходный контейнер по умолчанию (в этом примере - подготовка).