问题
I am working through the Docker Machine User Guide over at https://docs.docker.com/v1.5/machine/.
It says:
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.
When I run this I don't see the * next to any machines. What do I need to do to make the machine be marked as active? Are there any benefits to this?
For example, I am running the Docker Machine on Windows 10, by making it active does it mean I don't have to keep specifying the machine name in my commands such as docker-machine env dev
回答1:
I think just running the following command should work:
$ eval $(docker-machine env default)
(Where default
is the name of the machine).
The reason for the * is to tell you which machine you're currently connected to e.g. if you run docker ps
which Docker engine will it talk to?
In the current version of Docker machine, I believe you have to always specify the name.
回答2:
Use below command for Docker for Windows Container with Powershell to make machine active:
#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
Dock
回答3:
Its' pretty simple and the answer lies in the statement "a machine is considered active if the DOCKER_HOST environment variable points to it" from docker website: https://docs.docker.com/machine/reference/active/
So, let's say initially:
$ 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
If you check:
$ echo $DOCKER_HOST
tcp://203.0.113.81:2376 ====> it will point to staging
All you have to do now is (tried on Docker terminal):
$ DOCKER_HOST=tcp://192.168.99.103:2376
And now if you check:
$ 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
The active container has moved to 'dev'!! From now on all your commands like 'docker container ls' etc. should reflect your newly active container.
But please note this arrangement will work only for the Docker terminal where you changed the default container i.e. if you close and re-open a new terminal or open another Docker terminal the original default container (staging in this example) will be active.
来源:https://stackoverflow.com/questions/33211767/how-is-a-docker-machine-marked-as-active