13,032
回編集
| 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]]  | ||