Containerizing open-vm-tools – Part 2: Atomic CLI and Converting to a Systems Container
The content of the previous post discussed creating the open-vm-tools container’s Dockerfile and automating its started up via systemd with a unit file.
Open-vm-tools as a service might need to start before the docker runtime or even the network stack, this leads us to runc and system containers. If you’ve finished the first article you have a running open-vm-tools Docker container.
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5428906cd366 open-vm-tools "/bin/sh -c /usr/bin/" 13 seconds ago Up 7 seconds admiring_easley
Once you have a local running Docker container, you can import that container into a system container utilizing the atomic CLI. Alternatively, you can install the full container from a registry like; registry.access.redhat.com.
atomic pull --storage=ostree docker:open-vm-tools atomic install --system open-vm-tools systemctl start open-vm-tools # This will pull the container from a registry atomic pull --storage ostree registry.access.redhat.com/rhel7/open-vm-tools atomic install --system registry.access.redhat.com/rhel7/open-vm-tools systemctl start open-vm-tools
This process creates a root filesystem under /var/lib/containers/atomic/open-vm-tools for the container’s use. The atomic command additionally creates the systemd unit file and enables the service for subsequent restarts.
runc list ID PID STATUS BUNDLE CREATED open-vm-tools 725 running /var/lib/containers/atomic/open-vm-tools.0 2017-05-22T16:18:45.054839866Z cat /etc/systemd/system/open-vm-tools.service [Unit] Description=Service for virtual machines hosted on VMware Documentation=http://github.com/vmware/open-vm-tools ConditionVirtualization=vmware [Service] ExecStart=/bin/runc --systemd-cgroup run 'open-vm-tools' ExecStop=/bin/runc --systemd-cgroup kill 'open-vm-tools' WorkingDirectory=/var/lib/containers/atomic/open-vm-tools.0 [Install] WantedBy=multi-user.target
The open-vm-t0ols vmware-toolbox can be accessed via a runc exec or docker exec as well. Create a wrapper with the command below. This allows vmware-toolbox-cmd and other open-vm-tools commands run from the atomic host without the need to exec into the running container. If you
# runc system container wrapper echo 'runc exec -t open-vm-tools vmware-toolbox-cmd "$@"' > /usr/local/bin/vmware-toolbox-cmd chmod +x/usr/local/bin/vmware-toolbox-cmd # or Docker container echo 'docker exec -t open-vm-tools vmware-toolbox-cmd "$@"' > /usr/local/bin/vmware-toolbox-cmd chmod +x/usr/local/bin/vmware-toolbox-cmd vmware-toolbox-cmd --version 10.0.5.52125 (build-3227872)
The concludes the second part of the containerizing open-vm-tools guide. Installing open-vm-tools as a container in atomic will extend its manageability and functionality on a VMware platform.
To learn more, visit our Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets (e.g. containers), books (e.g. microservices), and product downloads that can help you with your microservices and/or container application development.
Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets, books, and product downloads.
Take advantage of your Red Hat Developers membership and download RHEL today at no cost.