13,009
回編集
300行目: | 300行目: | ||
yumの処理は、ユーザに対して"yes or no"を訊ねる場合があるので、自動的にyesと答えないと途中でイメージ作成が止まるので、以下のように記述する。<br> | yumの処理は、ユーザに対して"yes or no"を訊ねる場合があるので、自動的にyesと答えないと途中でイメージ作成が止まるので、以下のように記述する。<br> | ||
CMD yum update –y | CMD yum update –y | ||
<br><br> | |||
== エラー関連 == | |||
==== openSUSEコンテナ ==== | |||
openSUSEコンテナをDockerコンテナとして動作する時、以下のようなエラーが出力されてsystemdが起動できない。<br> | |||
Failed to connect to bus: No such file or directory. | |||
<br> | |||
これは、Dockerコンテナを実行する時、initシステムを実行していないからである。<br> | |||
<br> | |||
<code>systemctl</code>コマンドは、dbusを介してsystemdと通信するプロセスである。<br> | |||
openSUSEコンテナでは、dbusとsysvinitがインストールされていないため(dbusやsystemdが動作していない)、<code>systemctl</code>コマンドは失敗する。<br> | |||
<br> | |||
Dockerコンテナで<code>systemctl</code>を実行するには、その依存関係をインストールして、特殊なコマンドを実行する必要がある。<br> | |||
<br> | |||
dockerfileを作成および使用して解決する手順を、以下に記載する。<br> | |||
まず、以下のようなdockerfileを作成する。<br> | |||
FROM opensuse/leap:15.3 | |||
MAINTAINER Annonymas | |||
RUN zypper update -y | |||
RUN zypper install -y dbus-1 systemd-sysvinit | |||
RUN cp /usr/lib/systemd/system/dbus.service /etc/systemd/system/; \ | |||
sed -i 's/OOMScoreAdjust=-900//' /etc/systemd/system/dbus.service | |||
VOLUME ["/sys/fs/cgroup", "/run"] | |||
CMD ["/sbin/init"] | |||
<br> | |||
次に、作成したdockerfileからDockerイメージを作成する。<br> | |||
docker build -t suse153i . | |||
<br> | |||
Dockerコンテナを実行する。<br> | |||
sudo docker run -d --name=suse153c --hostname suse153 --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro suse153i | |||
sudo docker exec -it suse153c /bin/bash | |||
<br> | |||
openSUSEコンテナにおいて、systemctlコマンドが実行できるかどうかを確認するには、以下のコマンドを実行する。<br> | |||
systemctl list-units | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:SUSE]] | [[カテゴリ:CentOS]][[カテゴリ:SUSE]] |