Part 3: Getting all together
After the configuration of the Docker daemon on the Nested Hyper-V VM (part 2), it's now finally time to configure the Docker client that will connect to it.Once again, I will be using WSL as the main shell. However, if you choose to go with Powershell, it's OK too (simply I won't explain it here :).
Setup: Window 10 Docker Client
first of all, the docker client needs to be installed in the WSL environment.And this will be as easy as one command line, thanks to the Docker install script:
client:~$ curl -sSL https://get.docker.com/ | sudo sh
As the end of the log suggests, add your user to the docker group. This will require you to logoff in order to apply the change.
You can either close the WSL console window and open a new one (logoff / login), or a small trick is to "login again" using the "su" command:
client:~$ sudo usermod -aG docker $LOGNAME
client:~$ sudo su - $LOGNAME
Generate Docker client certification
As the Docker daemon is configured to only accept TLS connections from clients, the next step is to configure our client with the SSL certificates.Before I start, I would point out there's two different paths:
- Generate the client certificate on the server
OR - Copy all the needed files (root CA, CAKey) to the client and generate it there
Even if the CAkey as a password, I'm really not fond of copying it to the client (even if it's my own computer).
So, in my case, I will generate the client certificate on the Server VM, and then copy the files back to my client (source).
Open your Hyper-V manager and connect to your Server VM:
PS> ubuntu.exe
server:~$ cd /mnt/c/Program\ Files/docker/certs
server:certs$ openssl genrsa -out key.pem 4096
server:certs$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr
server:certs$ echo extendedKeyUsage = clientAuth >> client-extfile.cnf
server:certs$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile client-extfile.cnf
Configure Docker client
Finally, the only remaining point is to copy the needed files to the client.Once again, there is plenty options out there, and one more time I choose the WSL way (yeah, at this stage I can be considered maniac I guess).
Note: the following steps will require that you have SSH installed on WSL inside your Server VM. Please follow this guide to so.
Get back to your WSL console on the Windows 10 client:
client:~$ mkdir .docker && cd .docker
client:.docker$ scp <server name>:"/mnt/c/Program\ Files/docker/certs/{ca,cert,key}.pem" .
client:.docker$ ls -l
client:.docker$ cd
client:~$ export DOCKER_HOST=tcp://<server name>:2376
client:~$ export DOCKER_TLS_VERIFY=1
client:~$ export DOCKER_CERT_PATH=$HOME/.docker
client:~$ env | grep DOCKER
Testing LCOW
Finally, after all the Hyper-V, Server VM and Docker (server & client) configurations, it's now time to see your efforts be rewarded.You can follow (once again) Stefan's guide and witness by yourself how a single Docker daemon can run two different "platform based" containers:
I truly hope this guide could have helped you in some way, and once again, if you read these lines I do THANK YOU!
>>> Nunix Out <<<
Comments
Post a Comment