In the previous post, I’ve written about playing the container operating system with openSUSE MicroOS, and now moving on using it as Docker runtime. MicroOS has a single purpose to do “just one job”, and it will be doing the same thing running as Docker runtime in my development machine and accessing it via Windows Subsystem for Linux (WSL).
It takes advantage of a client-server model. we need MicroOS installed on VirtualBox as a server and accessing it with openSUSE Leap distribution installed on WSL. When you execute a Docker command in WSL, Docker connects to the MicroOS server via SSH.
At the end of this writing, we’d play acting like a WordPress developer who builds plugins and themes for WordPress with simplest way.
Let’s begin! We need openSUSE Leap 15.4 from WSL distribution. If you don’t have it, install with this command in Command Prompt:
C:\> wsl --install openSUSE-Leap-15.4
(Update 13 June 2023: the latest openSUSE Leap 15.5 can be downloaded from Windows Store https://apps.microsoft.com/store/detail/opensuse-leap-155/9NJGLDP5G04B)
(Update 8 July 2023: openSUSE Leap 15.5 is one of available online distribution replacing Leap 15.4, you may install it from Command Prompt:
wsl --install openSUSE-Leap-15.5)
Generate public/private rsa key pair with the
ssh-keygen command and copy the public ssh key. This public key will be used to access MicroOS.
Install MicroOS in VirtualBox
Create a new virtual machine with the specification described by this picture:
Setup a dedicated USB drive for creating Combustion. Combustion is a script to configure MicroOS on the first boot. In this script, you can set a password and copy the public ssh key that was generated in WSL before. For information about about Combustion, you might visit this page https://en.opensuse.org/Portal:MicroOS/Combustion. Attach your USB drive to MicroOS VM and run the virtual machine.
After MicroOS has been installed in VirtualBox, change the address of Network Adapter 2 with static IP address. Use the
nmtui progam and give it the static address. I set to
192.168.56.2/24, you may change the address suits you. This IP will be used for accessing MicroOS.
Login to MicroOS with
ssh [email protected] and install Docker packages with
transactional-update pkg install docker systemctl restart
After restarting MicroOS, run the Docker daemon:
systemctl enable --now docker.service
Access MicroOS Docker via WSL
Run WSL (openSUSE Leap) and install Docker packages with the
zypper install command.
sudo zypper install docker
Open the .profile file and insert the
export command for accessing remote Docker to MicroOS.
# ... export DOCKER_HOST="ssh://[email protected]"
docker info command, you’ll see the information that your Docker is accessing the MicroOS Docker runtime. If it didn’t work for the first time, you probably have to terminate your WSL (Leap) and running the WSL terminal again.
Let’s try to run a Docker container with this command:
docker run -it opensuse/leap:latest bash
Running WordPress with Docker Compose
It’s time to play deeper with Docker Compose, a Docker plugin that defining and running multi-container Docker applications. Let’s say we want to develop WordPress plugins and themes in WSL environment that integrated with Visual Studio Code.
Follow this steps to install Docker Compose plugin:
sudo mkdir -p /usr/local/lib/docker/cli-plugins/ sudo curl -SL https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
We’ll work with Docker Compose in the
wpdock directory and create the
docker-compose.yml file. This file contains the service definitions for the containers setup.
mkdir wpdock cd wpdock vim docker-compose.yml
services: db: image: mysql:8.0.27 command: '--default-authentication-plugin=mysql_native_password' volumes: - db_data:/var/lib/mysql restart: always environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=wordpress - MYSQL_USER=wordpress - MYSQL_PASSWORD=wordpress expose: - 3306 - 33060 wordpress: image: wordpress:latest volumes: - wp_data:/var/www/html ports: - 8000:80 restart: always environment: - WORDPRESS_DB_HOST=db - WORDPRESS_DB_USER=wordpress - WORDPRESS_DB_PASSWORD=wordpress - WORDPRESS_DB_NAME=wordpress volumes: db_data: wp_data:
After creating the simple setup of Docker Compose above, running it with this command:
docker compose up
You may start all of the Docker containers in the background with adding the
-d option, they will be run in “detached” mode. Open your browser navigate to http://192.168.56.2:8000 to make sure everything is running just fine.
To stop all of the containers, you may simply press Control + C to stop the container’s execution. Or, if the containers are running in the background, you may use the stop command:
docker compose stop
Visual Studio Code Integration
This is the last step, opening the
wpdock application in Visual Studio Code that integrated with WSL environtment and Docker.
cd wpdock docker compose up -d code .
The WSL extension has to be installed in Visual Studio, if you don’t have it, launch the quick open (Ctrl+P), paste the following command, and press enter.
ext install ms-vscode-remote.remote-wsl
Another extension you may have to install in Visual Studio is Docker extension. It make you easy to create, manage, and debug containerized applications.
ext install ms-azuretools.vscode-docker
That’s it, you’re a WordPress developer now but advance. Have a lot of fun ya 🥳