Skip to main content
Redhat Developers  Logo
  • Products

    Platforms

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat AI
      Red Hat AI
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • See all Red Hat products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat Developer Hub
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat OpenShift Local
    • Red Hat Developer Sandbox

      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Red Hat OpenShift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • See all technologies
    • Programming languages & frameworks

      • Java
      • Python
      • JavaScript
    • System design & architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer experience

      • Productivity
      • Tools
      • GitOps
    • Automated data processing

      • AI/ML
      • Data science
      • Apache Kafka on Kubernetes
    • Platform engineering

      • DevOps
      • DevSecOps
      • Red Hat Ansible Automation Platform for applications and services
    • Secure development & architectures

      • Security
      • Secure coding
  • Learn

    Featured

    • Kubernetes & cloud native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • AI/ML
      AI/ML Icon
    • See all learning resources

    E-books

    • GitOps cookbook
    • Podman in action
    • Kubernetes operators
    • The path to GitOps
    • See all e-books

    Cheat sheets

    • Linux commands
    • Bash commands
    • Git
    • systemd commands
    • See all cheat sheets

    Documentation

    • Product documentation
    • API catalog
    • Legacy documentation
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore the Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

Containerizing open-vm-tools - Part 2: Atomic CLI and Converting to a Systems Container

May 24, 2017
davis phillips
Related topics:
LinuxKubernetesContainersDeveloper ToolsDevOps
Related products:
Red Hat Enterprise LinuxRed Hat OpenShift Container Platform

    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.

    Last updated: July 6, 2017

    Recent Posts

    • Automate VM golden image builds for OpenShift with Packer

    • Setting up Intel TDX VMs with Trustee on OpenShift

    • Building and running Request Tracker as a quadlet container

    • Use OpenShift Lightspeed with locally served LLMs to drive security-focused, cost-efficient enterprise solutions for Red Hat products

    • 3 MCP servers you should be using (safely)

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2025 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue