13,009
回編集
839行目: | 839行目: | ||
k8sマニフェストを作成したコンテナが実行されているかどうかを確認する。<br> | k8sマニフェストを作成したコンテナが実行されているかどうかを確認する。<br> | ||
podman ps | podman ps | ||
<br><br> | |||
== エラー関連 == | |||
==== 実行権限エラー ==== | |||
containerfileファイルまたはcontainer-compose.ymlファイルを使用する時、以下に示すようなエラーが出力される場合がある。<br> | |||
error checking context: 'no permission 〜' | |||
<br> | |||
この時、Containerfileファイルまたはcontainer-compose.ymlファイルに実行権限を付加する。<br> | |||
chmod 755 containerfile | |||
# または | |||
container-compose.yml | |||
<br> | |||
==== Systemdエラー ==== | |||
openSUSEコンテナをPodmanコンテナとして動作する時、以下のようなエラーが出力されてSystemdサービスが起動できない。<br> | |||
Failed to connect to bus: No such file or directory. | |||
<br> | |||
これは、Podmanコンテナを実行する時、initシステムを実行していないからである。<br> | |||
<br> | |||
<code>systemctl</code>コマンドは、dbusを介してsystemdと通信するプロセスである。<br> | |||
openSUSEコンテナでは、dbusとsysvinitがインストールされていないため(dbusやsystemdが動作していない)、<code>systemctl</code>コマンドは失敗する。<br> | |||
<br> | |||
Podmanコンテナで<code>systemctl</code>を実行するには、その依存関係をインストールして、特殊なコマンドを実行する必要がある。<br> | |||
<br> | |||
containerfileを作成および使用して解決する手順を、以下に記載する。<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"] | |||
EXPOSE 22 | |||
EXPOSE 80 | |||
<br> | |||
次に、作成したcontainerfileからPodmanイメージを作成する。<br> | |||
podman build -t <イメージ名>:<タグ名> -f <containerfile名> . # イメージ名:タグ名およびDockerfile名(Dockerfile名がdockerfileの場合のみ)は省略できる | |||
例. podman build -t suse153i . | |||
<br> | |||
Podmanコンテナを実行する。<br> | |||
podman run -d --name=<コンテナ名> --hostname <コンテナのホスト名> <ポートマッピングする場合: -p <ホストのポート番号>:<コンテナのポート番号>> --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro <イメージ名> | |||
例. podman run -d --name=suse153c --hostname suse153 -p 50080:80 --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro suse153i | |||
# 開始しているコンテナ内にアクセスする場合 | |||
podman exec -it <コンテナ名> /bin/bash | |||
例. podman exec -it suse153c /bin/bash | |||
# 停止したコンテナを開始する場合 | |||
podman container start <コンテナ名> | |||
例. podman container start suse153c | |||
<br> | |||
openSUSEコンテナにおいて、<code>systemctl</code>コマンドが実行できるかどうかを確認する。<br> | |||
# Podmanコンテナ内に入る | |||
podman exec -it <コンテナIDまたはコンテナ名> /bin/bash | |||
# systemctlコマンドが実行できるかどうかを確認 | |||
systemctl list-units | |||
<br> | |||
==== Systemdサービスのサポート ==== | |||
[https://registry.opensuse.org/cgi-bin/cooverview openSUSEコンテナリポジトリ]で公開されているコンテナイメージは、containers-systemdパッケージがインストールされている。<br> | |||
例えば、Systemdサービスを使用してNginXコンテナを設定して、自動的に起動するためのSystemdサービスファイルとSysconfigファイルが含まれている。<br> | |||
<br><br> | <br><br> | ||