How to connect to a docker server on the network set-up with Hyper-V

Basically my question is: How do I connect to a docker host on the network?

Background:

  • Docker returning same kernel version for 10.04 and 10.10
  • docker-compose returning non-zero code: 100
  • How to assign static public IP to docker container
  • Is there any limit on pull number in Docker Hub
  • How to remove docker container even if root filesystem does not exists?
  • How to run .Net project as part of jenkins job in Docker
  • We have a Windows Server 2012 machine that I would like to run a docker engine from.

    I’ve managed to get it running with docker-machine and the hyperv driver. I’ve also successfully gotten a docker host to work on my computer locally using VirtualBox, and have been using it.

    To ease access to docker for other people on the network on a perpetual set-up, I’d like to use the docker host instance on the server with Hyper-V.

    In my search for answers, I’ve not been able to find any mention of provisioning hosts on the network, only on the local and cloud.

    I’d like to know what commands do I have to use to connect my local docker-machine to the server’s docker host, and use it as the active docker host?

  • can not connect to docker container mapping port
  • Volumes mounting as folders
  • Postgresql DB not getting connected in docker
  • Execution is overlapped nodes created by docker selenium grid and distribution with testNG data provider how avoid this?
  • docker exec TERM setting
  • EOF Alternative for calling ArangoDB query on Octave
  • One Solution collect form web for “How to connect to a docker server on the network set-up with Hyper-V”

    There’s a blog post explaining how to add a docker engine with an IP with the generic driver, as well as some extra steps you need to go through.

    ADDING AN EXISTING DOCKER HOST TO DOCKER MACHINE : A FEW TIPS


    SSH Keys

    The bottom section on certs explains how to get working on the remote docker engine after connecting with the create command

    Old answer

    To create/connect successfully the local machine must be able to ssh into the remote docker engine, and not just the server hosting the docker engine. This means a public key was generated and added (using puttygen or ssh-keygen) on the local machine and the OpenSSH RSA public key was added to the list of authorized keys in ~/.ssh/authorized_keys on the remote docker engine.

    An example of an OpenSSH RSA public key (because I get confused by these formats):

    ssh-rsa AAAAB3NzaC1kc3MAAACBAJ3hB5SAF6mBXPlZlRoJEZi0KSIN+NU2iGiaXZXi9CDrgVxTp6/sc56UcYCp4qjfrZ2G3+6PWbxYso4P4YyUC+61RU5KPy4EcTJske3O+aNvec/20cW7PT3TvH1+sxwGrymD50kTiXDgo5nXdqFvibgM61WW2DGTKlEUsZys0njRAAAAFQDs7ukaTGJlZdeznwFUAttTH9LrwwAAAIAMm4sLCdvvBx9WPkvWDX0OIXSteCYckiQxesOfPvz26FfYxuTG/2dljDlalC+kYG05C1NEcmZWSNESGBGfccSYSfI3Y5ahSVUhOC2LMO3JNjVyYUnOM/iyhzrnRfQoWO9GFMaugq0jBMlhZA4UO26yJqJ+BtXIyItaEEJdc/ghIwAAAIBFeCZynstlbBjP648+mDKIvzNSS+JYr5klGxS3q8A56NPcYhDMxGn7h1DKbb2AV4pO6y+6hDrWo3UT4dLVuzK01trwpPYp6JXTSZZ12ZaXNPz7sX9/z6pzMqhX4UEfjVsLcuF+ZS6aQCPO0ZZEa1z+EEIZSD/ykLQsDwPxGjPBqw= rsa-key-20160224
    

    Not having this key in the remote docker engine gave me a exit status 255 when I attempted to docker ssh into it. At this point, only regular ssh docker@192.168.1.165 worked. Be prepared to repeat the above process.


    The article also mentions sudo, but the boot2docker image used by the Hyper-V driver already allows password-less sudo so that part is already done.

    Ports

    Make sure TCP port 2376 is allowed connection to the remote docker engine, through the server’s firewall rules, physical firewall etc.

    The Command to Run

    Then this command connects the remote engine to docker-machine:

    > docker-machine create --driver generic --generic-ip-address 192.168.1.165 --generic-ssh-user %USERNAME% vm
    > docker-machine ls
    NAME             ACTIVE      DRIVER       STATE     URL                         SWARM                   DOCKER   ERRORS
    default          -           virtualbox   Running   tcp://192.168.99.101:2376                           v1.10.1
    vm               -           generic      Running   tcp://192.168.1.165:2376                            Unknown
    

    vm is the newly added docker engine from the network, and 192.168.1.165 is the IP of the docker engine on the server.

    Certs

    If this works, just copying over the certs (ca.pem, ca-key.pem, cert.pem, key.pem) from the remote server directory %USERPROFILE%\.docker\machine\machines\<server's local docker engine name> to the same location on the local machine should keep it connected. Do not use docker-machine regenerate-certs since this disables any connections that other computers might have to that docker engine, including the server itself.

    Active

    Then finally making the engine active completes the connection.

    > IF /F "tokens=*" %G ('docker-machine env vm') do %G
    

    Note: This issue points out that the command docker-machine create --driver none --url=tcp://192.168.1.165:2376 <name> should add a remote machine’s docker engine as well, should the “none” driver be working in a future version.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.