Na cloudsvět jsme o Docker Machine psali. Dnes si vyzkoušíme použití driveru pro OpenStack.
OpenStack driver pro Docker Machine
Připomeňme – Docker Machine je univerzální způsob, jakým lze vytvářet Docker hostitele a automatizovat distribuci bezpečnostních informací (certifikátů) či vytváření Swarm clusteru. V předchozích článcích jsme zkoušeli driver pro VirtualBox a také byla řeč o bare metal drivech do OneView. Zkusme teď driver pro OpenStack.
Nejprve v Helion OpenStack vytvořím Security Group, jejíž členi spolu mohou volně komunikovat (tedy per-VM firewall otevřu mezi členy této skupiny) – touto skupinou bude jedno VM s Docker Machine a zbytek budou jí vytvoření Docker hostitelé, třeba ve Swarm clusteru.
Teď si v tenantu vytvořím VM s Docker Machine – mám na to připravenou image (a nedělám ji ručně – používám Packer, který už známe – a předpis jak na to najdete v jiném článku). Také přiřadím Floating IP, abych se do ní mohl připojit zvenku.
tomas@labserver:~$ openstack server create DockerMachine --image Docker --flavor m1.small \ --security-group default --key-name mujKlic \ --nic net-id=5cec492f-3150-44a9-9245-37d23a8c45b1 --max-width 40 tomas@labserver:~$ openstack ip floating add 10.201.0.10 DockerMachine
V této VM si nejprve načtu environmentální proměnné s OpenStack přihlašovacími údaji, abych je nemusel vypisovat. Totéž provedu s dalšími parametry Docker Machine, které budu používat stále dokola, jako je flavor (velikost VM) hostitele a tak podobně.
ubuntu@dockermachine:~$ source stack ubuntu@dockermachine:~$ export OS_SSH_USER=ubuntu ubuntu@dockermachine:~$ export OS_DOMAIN_NAME=Default ubuntu@dockermachine:~$ export OS_FLAVOR_NAME=m1.small ubuntu@dockermachine:~$ export OS_NETWORK_NAME=mujNet ubuntu@dockermachine:~$ export OS_IMAGE_NAME=Docker
Teď už použijme docker-machine a nastartujme pár hostitelů.
ubuntu@dockermachine:~$ docker-machine create -d openstack mujDocker1 Running pre-create checks... Creating machine... (mujDocker1) Creating machine... Waiting for machine to be running, this may take a few minutes... Machine is running, waiting for SSH to be available... Detecting operating system of created instance... Detecting the provisioner... Provisioning with ubuntu(upstart)... Installing Docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect Docker to this machine, run: docker-machine env mujDocker1 ubuntu@dockermachine:~$ ubuntu@dockermachine:~$ docker-machine create -d openstack mujDocker2 ...
Podívejme se do Helion OpenStack, co se tam dělo.
Docker Machine, jak vidíme, si tedy krásně zavolá OpenStack, vytvoří si VM, nainstaluje do nich Docker hostitele, případně nastaví Swarm cluster tak, jak už známe z předchozích článků. Teď už můžeme používat docker-machine a docker client jako minule.
ubuntu@dockermachine:~$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS mujDocker1 - openstack Running tcp://192.168.5.51:2376 v1.9.1 mujDocker2 - openstack Running tcp://192.168.5.52:2376 v1.9.1 ubuntu@dockermachine:~$ docker-machine env mujDocker1 export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.5.51:2376" export DOCKER_CERT_PATH="/home/ubuntu/.docker/machine/machines/mujDocker1" export DOCKER_MACHINE_NAME="mujDocker1" # Run this command to configure your shell: # eval "$(docker-machine env mujDocker1)" ubuntu@dockermachine:~$ eval "$(docker-machine env mujDocker1)" ubuntu@dockermachine:~$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world b901d36b6f2f: Pull complete 0a6ba66e537a: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest Hello from Docker. … To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash …