はじめに
Dockerでsystemdを走らせて複数プロセス動かしたいときってありますよね?(自分だけだと思いますが。)1コンテナ1プロセスというお作法があるのは理解していますが、その方法を記事にしたいと思います。
環境
Ubuntu 20.04 LTS
イメージを作成
コンテナの作成と起動
自作のイメージを作成します。以下のコマンドでコンテナを立ち上げます。
docker run -it \
--name make-systemd-ubuntu2204 -h make-systemd-ubuntu2204 \
ubuntu:22.04 /bin/bash
パッケージの更新とインストール
aptコマンドを用いてパッケージの更新をしてから、必要なパッケージをインストールします。
apt -y update&&apt -y upgrade&&apt -y autoremove
apt -y install systemd init sudo ufw wget net-tools iproute2 vim nano htop
パスワードの設定
rootのパスワードを設定します。設定しないとログインできなくなってしまいます。
passwd
イメージの作成
コンテナから抜けます。
exit
コンテナをシャットダウンさせます。
docker stop make-systemd-ubuntu2204
コンテナからイメージを作成します。
docker commit make-systemd-ubuntu2204 systemd-ubuntu:22.04
起動
以下のコマンドで、作成したイメージからコンテナを起動します。
docker run -it --privileged \
--name systemd-ubuntu -h systemd-ubuntu \
systemd-ubuntu:22.04 /sbin/init
おわりに
DockerでもLXCみたいなことができるんですね。このことを利用して、コンテナにデスクトップ環境を導入した上で、リモートデスクトップするみたいなこともできそうですね。