「インストール - Podman」の版間の差分

ナビゲーションに移動 検索に移動
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>


案内メニュー