How is a Docker Machine marked as active?

后端 未结 3 694
一生所求
一生所求 2021-02-01 05:20

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 r         


        
相关标签:
3条回答
  • 2021-02-01 05:47

    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.

    0 讨论(0)
  • 2021-02-01 05:56

    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

    0 讨论(0)
  • 2021-02-01 06:00

    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.

    0 讨论(0)
提交回复
热议问题