MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
設定 - Podman Composeのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
設定 - Podman Compose
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <code>podman compose</code>コマンドは、docker-composeのような外部のComposeプロバイダの薄いラッパーである。<br> つまり、<code>podman compose</code>コマンドは、Compose機能を実装する別のツールを実行するが、ComposeプロバイダがローカルのPodmanソケットと透過的に通信できるように環境を設定する。<br> <br> 指定したオプション、コマンド、引数は直接composeプロバイダに渡される。<br> デフォルトのComposeプロバイダは、docker-composeとpodman-composeである。<br> <br> <u>両方ともインストールされている場合は、docker-composeが優先される。</u><br> なぜなら、docker-composeはCompose仕様のオリジナルの実装であり、サポートされているプラットフォーム (Linux、MacOS、Windows) で広く使用されているからである。<br> <br> デフォルトの挙動を変更する場合や、選択したプロバイダのカスタムインストールパスが必要な場合は、~/.config/containers/containers.confファイルの<code>compose_provider</code>フィールドを変更する必要がある。<br> また、環境変数<code>PODMAN_COMPOSE_PROVIDER</code>を設定して変更することもできる。<br> <br><br> == Podman Composeのインストール == ==== パッケージ管理システムからインストール ==== # RHEL sudo dnf install podman-compose # SUSE sudo zypper install python3-podman-compose <br> ==== PyPIからインストール ==== # Python3のルートディレクトリにインストールする場合 sudo pip3 install podman-compose python-dotenv PyYAML # Python3のユーザディレクトリにインストールする場合 pip3 install --user podman-compose python-dotenv PyYAML # GithubからPodman Composeをユーザディレクトリに直接インストールする場合 pip3 install --user https://github.com/containers/podman-compose/archive/devel.tar.gz pip3 install --user python-dotenv PyYAML <br> ==== ソースコードからインストール ==== ===== PyYAML / Python-DotEnvのインストール ===== まず、PyYAMLおよびPython-DotEnvをインストールする。<br> パッケージ管理システムからPyYAMLおよびPython-DotEnvをインストールする場合、依存関係が多すぎるため、PyPIからインストールすることを推奨する。<br> pip3 install --user python-dotenv PyYAML # SLE / openSUSEの場合 pip3.6 install --user python-dotenv PyYAML <br> ===== aardvark-dnsおよびnetavarkのインストール (推奨) ===== * パッケージ管理システムからインストールする場合 *# netavarkおよびaardvark-dnsをパッケージ管理システムからインストールする。 *#: <code>sudo zypper install netavark aardvark-dns</code> *: <br> * ソースコードからインストール *# [https://github.com/containers/aardvark-dns/ aardvark-dnsのGithub]から、ソースコードをダウンロードする。<br> *# ダウンロードしたファイルを解凍する。 *#: <code>tar xf aardvark-dns-<バージョン>.tar.gz</code> *#: <code>cd aardvark-dns-<バージョン></code> *#: <br> *# aardvark-dnsをビルドおよびインストールする。 *#: <code>make PREFIX=<Podmanのインストールディレクトリ> -j $(nproc)</code> *#: <code>make PREFIX=<Podmanのインストールディレクトリ> install</code> *#: <br> *# netavarkをインストールする。<br>netavarkを手動でインストールする場合は、[[インストール - Podman#最新のnetavarkが必要な場合|インストール - Podman#ソースコードからインストール#最新のnetavarkが必要な場合]]のページを参照すること。 <br> ===== Podman DNSname Pluginのインストール (非推奨) ===== もし、CNIネットワークを使用する場合は、Podman DNSname Pluginをインストールする。<br> ただし、2023年以降、Podman DNSname Pluginの開発は止まっているため、[https://github.com/containers/netavark/ netavark]と[https://github.com/containers/aardvark-dns/ aardvark-dns]を使用することを推奨する。<br> # Podman DNSname Pluginのインストール git clone https://github.com/containers/dnsname.git cd dnsname make -j $(nproc) PREFIX=<Podmanのインストールディレクトリ> make install PREFIX=<Podmanのインストールディレクトリ> <br> ===== Podman Composeのインストール ===== [https://github.com/containers/podman-compose Podman ComposeのGithub]から、ソースコードをダウンロードする。<br> git clone https://github.com/containers/podman-compose.git -b stable <br> Podman Composeをビルドおよびインストールする。<br> export PYTHONPATH="/<Podmanのインストールディレクトリ>/lib/python<Pythonのバージョン>/site-packages:$PYTHONPATH" python3 ./setup.py build python3 ./setup.py install --prefix=<Podmanのインストールディレクトリ> <br> ~/.profileファイル等に、環境変数<code>PYTHONPATH</code>を設定する。<br> <syntaxhighlight lang="sh"> export PYTHONPATH="/<Podmanのインストールディレクトリ>/lib/python<Pythonのバージョン>/site-packages:$PYTHONPATH" </syntaxhighlight> <br><br> == container-compose.ymlファイル == ==== ボリューム ==== <code>:Z</code>オプションは、SELinuxを有効にしている場合において、ボリュームの共有時にセキュリティコンテキストを設定するためのものである。<br> SELinuxが無効の場合は、このオプションは無視される。<br> <br> container-compose.ymlファイルにおいて、<code>volumes</code>セクションを使用してボリュームを定義する場合、<br> SELinuxを有効にしている場合は、ホストとコンテナ間で適切なセキュリティコンテキストが設定される。<br> <syntaxhighlight lang="yaml"> services: <コンテナ名>: # ...略 volumes: - /<ホスト側のパス>/:/<コンテナ内のパス>/:Z </syntaxhighlight> <br> ==== container-compose.ymlファイルの例 ==== <syntaxhighlight lang="yaml"> version: '<Composeファイルのバージョン (docker-compose.ymlのバージョンと同じ)>' # 例: '3' networks: frontend: # bridge, overlay, macvlan等を指定する driver: <ネットワークのドライバを指定> backend: # bridge, overlay, macvlan等を指定する driver: <ネットワークのドライバを指定> external: <既存の外部ネットワークを指定> driver_opts: <ドライバに関連する追加のオプションを指定> # IPアドレスの管理に関連する設定を指定する ipam: # IPアドレス管理のドライバを指定する driver: default # driverセクションに指定したドライバに関する設定を指定する config: - subnet: "<サブネットマスク 例: 172.18.0.0/16>" # networksセクションの説明: # 上記の例では、backendネットワークに対しては、ipamセクションでサブネットを指定している。 # これにより、ネットワーク内のコンテナに対して、手動でIPアドレスを指定することができる。 services: <コンテナ名 1 (任意の名前) 例: sample1)>: # イメージからコンテナを生成する場合、imageを指定 image: <イメージ (リポジトリ:タグ) を指定する> command: <コンテナ起動時に実行するコマンド 例: --default-authentication-plugin=mysql_native_password>> # ホストとコンテナでファイルを同期する場合等 volumes: # 例: /tmp/mysql/mysql_data:/var/lib/mysql - <ホスト側のパス 1:コンテナのパス 1> - <ホスト側のパス 2:コンテナのパス 2> # ポート転送 (ポートフォワーディング) を行う場合 # 例: 63306:3306 ports: - <ホスト側のポート 1:コンテナのポート 1> - <ホスト側のポート 2:コンテナのポート 2> # 環境変数を指定する場合 # 例1: MYSQL_ROOT_PASSWORD: password # 例2: MYSQL_PORT: 3306 environment: <環境変数名 1: 環境変数値> <環境変数名 2: 環境変数値> security_opt: # AppArmorプロファイルを適用する場合 # /etc/apparmor.dディレクトリにプロファイルを配置して、apparmor_parserコマンドでプロファイルを読み込む必要がある - apparmor=<AppArmorプロファイル名> <コンテナ名 2 (任意の名前) 例: sample2)>: build: # Containerfileが存在するディレクトリ context: . # Containerfileのファイル名 containerfile: Containerfile # または、以下に示す記述方法でもよい # Containerfileのファイルパス #build: <Containerfileのファイルパス> # 任意のコンテナ名を付けることもできる container_name: <任意のコンテナ名> # ホストとコンテナでファイルを同期する場合等 volumes: - <ホスト側のパス:コンテナのパス> # ポート転送 (ポートフォワーディング) を行う場合 ports: - <ホスト側のポート:コンテナのポート> # 環境変数を指定する場合 environment: <環境変数名 1: 環境変数値> <環境変数名 2: 環境変数値> <環境変数名 3: 環境変数値> # 依存関係を設定する場合 (他のコンテナと連携する場合) # この項目で指定されたコンテナが先に起動する depends_on: - <依存するコンテナ名 例: sample1> </syntaxhighlight> <br><br> == ファイルの確認 == ==== シンタックスの検証 ==== docker-compose.ymlファイルと同様、ファイルの検証は<code>podman-compose -f <container-compose.ymlファイルのパス> config</code>コマンドを実行する。<br> container-compose.ymlファイルと同階層のディレクトリで実行する場合、または、環境変数<code>COMPOSE_FILE</code>がcontainer-compose.ymlファイルを指している場合は、<br> <code>-f <container-compose.ymlファイル></code>の部分を省略することができる。<br> podman-compose -f <container-compose.ymlファイルのパス> config # または podman-compose config # コマンドを実行しているカレントディレクトリと同階層のディレクトリにcontainer-compose.ymlファイルが存在する場合 <br> ==== 検証エラー : networks ==== 以下に示すようなエラーが出力される場合がある。<br> RuntimeError: missing networks: <ネットワーク名> <br> Podman Composeでは、ネットワークの定義をサービスの前に配置する必要がある。<br> このエラーは、networksセクションがサービスの前に配置されているために発生している。<br> <br><br> == Composeコマンド == container-compose.ymlファイルを実行するには、<code>podman-compose -d</code>コマンドで実行する必要がある。<br> <br> Composeコマンドは、container-compose.ymlファイルが存在するディレクトリで行う。<br> もし、別のディレクトリに存在するcontainer-compose.ymlファイルを指定する場合は、<code>-f</code>オプションを付加する。<br> podman-compose <コマンド> -f <container-compose.ymlファイルのパス> <br> ==== サービスイメージの確認 ==== podman-compose images <br> ==== サービスイメージの作成 ==== サービスイメージのビルドを実行する。<br> container-compose.ymlファイルに<code>image:</code>が記述されている場合、そのイメージ名がローカルに存在しなければ、リモートからプルする。<br> container-compose.ymlファイルに<code>image:</code>が記述されていない場合、<code>build</code>に記述されているパスのContainerfileを使用して、コンテナイメージを構築する。<br> podman-compose build <br> ==== リモートからサービスイメージを取得 ==== リモートからコンテナイメージを取得する。<br> podman-compose pull <br> ==== サービスの確認 ==== podman-compose ps <br> ==== サービスの作成 ==== 構築されたサービスイメージからサービスを作成する。<br> また、作成直後のサービスは停止している。<br> podman-compose create <br> ==== サービスの実行 ==== サービスを作成して起動する。<br> <code>-d</code>オプションを付加することにより、バックグラウンドで実行することができる。<br> また、<code>--build</code>オプションを付加することにより、起動前にイメージを構築することもできる。<br> podman-compose up # バックグラウンドで実行する場合 podman-compose up -d # サービスイメージを構築してサービスを実行する場合 podman-compose up -d --build <br> ==== サービスの起動 ==== 停止中のサービスを起動する。<br> podman-compose start <br> ==== サービス再起動 ==== サービスを再起動する。<br> podman-compose restart <br> ==== サービスの停止 ==== 起動中のサービスを停止する。<br> podman-compose stop <br> ==== サービスの削除 ==== container-compose.ymlファイルに記述されているサービスからコンテナを停止して、そのコンテナとネットワークを削除する。<br> <code>--rmi all</code>オプションを付加することにより、サービスイメージも削除することができる。<br> podman-compose down # ボリュームも含めて削除する場合 podman-compose down -v # サービスイメージの停止および削除 podman-compose down --rmi all <br> ==== サービスの強制削除 ==== 停止中のコンテナを削除する。<br> podman-compose rm <br> ==== サービスの強制消去 ==== サービスを強制停止する。<br> podman-compose kill <br> ==== コマンドの実行 ==== 引数で指定したサービスのコンテナ内でコマンドを実行する。<br> podman-compose run <サービス名> <コマンド> <引数 1> <引数 2> <引数...> # 例: container-compose.ymlファイル内のdbを強制的にpullして、dbおよびwebを実行する podman-compose run db web new . --force --database=mysql <br> ==== サービスの設定の確認 ==== container-compose.ymlファイルで記述されている設定を表示する。<br> podman-compose config <br> ==== サービスログの確認 ==== サービスのログを表示する。<br> podman-compose logs <br><br> == Kubernetes YAMLへ変換 == Container-compose.ymlファイルからポッドを構築する。<br> podman-compose up -d # または podman-compose up -d -f <Container-compose.ymlファイルのパス> <br> Kubernetes YAMLファイルへ変換する。<br> podman generate kube <ポッド名> > <Kubernetes YAMLファイル名>.yml <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Web]][[カテゴリ:コンテナ]]
設定 - Podman Compose
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse