MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Podmanのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Podman
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == コンテナとは、ソフトウェアプロセスやマイクロサービスをパッケージ化して、あらゆるコンピューティング環境で実行可能にするソフトウェアソリューションである。<br> <br> コンテナに含まれるファイルには、アプリケーションコード、環境変数、設定コード、バイナリプログラム、ソフトウェアの依存関係、ライブラリ等がある。<br> これらのコンポーネントをバンドルするプロセスはコンテナ化と呼ばれ、最終的な製品はコンテナイメージとして知られている。<br> <br> このイメージは、クラウド、オンプレミスのデータシステム、ローカルシステム等、あらゆるプラットフォームにデプロイされる。<br> <br> Podman (Pod Manage) は、Open Container Initiatives (OCI) のコンテナイメージを開発、管理、本番環境で実行する時に使用するコンテナエンジンである。<br> OCIは、コンテナフォーマットとランタイムに関するOSレベルの仮想化ソフトウェアコンテナのオープンなガバナンス構造を実装するために設計された。<br> <br> Podmanコンテナは、スーパユーザ / 非スーパーユーザのいずれでも実行可能である。<br> <br><br> == Podmanのインストール == ==== パッケージ管理システムからインストール ==== # RHEL sudo yum install epel-release sudo dnf install podman # SUSE sudo zypper install podman <br> ==== Tarballからインストール ==== [https://github.com/containers/podman/ PodmanのGithub]にアクセスして、スタティックビルド済みのPodmanをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf podman-remote-static-linux_<アーキテクチャ名>.tar.gz cd bin mv podman-remote-static-linux_<アーキテクチャ名> podman <br> 必要ならば、Podmanを任意のインストールディレクトリに配置する。<br> mkdir -p <任意のインストールディレクトリ> mv podman <任意のインストールディレクトリ> <br> ~/.profileファイル等に、環境変数<code>PATH</code>およびソケットの設定を記述する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<Podmanのインストールディレクトリ>:$PATH" export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock </syntaxhighlight> <br> SUSEにおいて、パッケージ管理システムにgvproxyパッケージが存在しないため、手動でgvproxyをインストールする必要がある。<br> <br> まず、[https://github.com/containers/gvisor-tap-vsock/ gvproxyのGithub]にアクセスして、gvproxyをダウンロードする。<br> ダウンロードしたgvproxyのファイル名を変更して、/usr/libexec/podmanディレクトリまたは/usr/local/libexec/podmanディレクトリにコピーする。<br> mv gvproxy-linux-<アーキテクチャ名> gvproxy sudo mkdir -p /usr/libexec/podman または sudo mkdir -p /usr/local/libexec/podman sudo mv gvproxy /usr/local/libexec/podman <br> ==== ソースコードからインストール ==== ===== Goのバージョンが1.16未満の場合 ===== もし、パッケージ管理システムのGoのバージョンが1.16未満の場合は、[https://golang.org/dl/ Goの公式Webサイト]にアクセスして、Goをダウンロードする。<br> ダウンロードしたファイルを解凍する。</u><br> tar xf go<バージョン>.linux-<アーキテクチャ名>.tar.gz mv go<バージョン>.linux-<アーキテクチャ名> Go <br> 必要ならば、Goを任意のインストールディクトリに配置する。<br> mv Go <任意のインストールディレクトリ> <br> ~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> <syntaxhighlight lang="sh"> export GOPATH=<Goのインストールディレクトリ> export PATH=/<Goのインストールディレクトリ>/bin:$PATH </syntaxhighlight> <br> ===== 最新のconmonが必要な場合 ===== 最新バージョンのconmonがシステムにインストールされていることが期待される。<br> conmonは、OCIランタイムをモニタリングするために使用される。<br> <br> [https://github.com/containers/conmon conmonのGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf conmon-<バージョン>.tar.gz cd conmon-<バージョン> <br> または、<code>git clone</code>コマンドを実行して、ソースコードをダウンロードする。<br> git clone https://github.com/containers/conmon cd conmon <br> conmonをビルドおよびインストールする。<br> export GOCACHE="$(mktemp -d)" make -j $(nproc) make podman <br> ===== 最新のcrun /runcが必要な場合 ===== 最新バージョンのcrun /runcがシステムにインストールされていることが期待される。<br> crun /runcは、Podmanによりその1つがデフォルトのランタイムとしてピックアップされる。(crunはruncよりも優先される)<br> <br> [https://github.com/opencontainers/runc/ crun /runcのGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf runc-<バージョン>.tar.gz cd runc-<バージョン> <br> または、<code>git clone</code>コマンドを実行して、ソースコードをダウンロードする。<br> git clone https://github.com/opencontainers/runc.git cd runc <br> crun /runcをビルドおよびインストールする。<br> # SELinux, SECcompを有効にする場合 make -j $(nproc) BUILDTAGS="selinux seccomp" # SELinux, SECcompを無効にする場合 make -j $(nproc) BUILDTAGS="" cp runc <任意のインストールディレクトリ> <br> ===== ユーザネームスペースの有効化 ===== Linuxカーネルがユーザネームスペースをサポートしているかどうかを確認する。<br> zgrep CONFIG_USER_NS /proc/config.gz # 出力例: ユーザネームスペースをサポートしている場合 CONFIG_USER_NS=y <br> もし、ユーザネームスペースが無効の場合は有効にする。<br> # ユーザネームスペースを一時的に有効にする sudo sysctl kernel.unprivileged_userns_clone=1 # ユーザネームスペースを恒久的に有効にする echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/userns.conf <br> ===== Podmanのビルド ===== Podmanのビルドに必要なライブラリをインストールする。<br> # RHEL sudo dnf install 'dnf-command(builddep)' sudo dnf builddep rpm/podman.spec --enablerepo=codeready-builder-for-rhel-$(rpm --eval %{?rhel})-$(uname -m)-rpms sudo dnf install conmon containers-common crun iptables netavark nftables slirp4netns # SUSE sudo zypper install libseccomp-devel libgpgme-devel # Raspberry Pi / Mobian sudo apt install btrfs-progs git uidmap pkg-config crun golang-go go-md2man iptables libassuan-dev libbtrfs-dev libc6-dev libdevmapper-dev libglib2.0-dev \ libgpgme-dev libgpg-error-dev libprotobuf-dev libprotobuf-c-dev libseccomp-dev libselinux1-dev libsystemd-dev libapparmor-dev \ netavark # 古いバージョンのRaspbian OSの場合、netavarkパッケージが利用できない場合がある # その場合、containernetworking-pluginsパッケージをインストールする <br> [https://github.com/containers/podman/ PodmanのGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf podman-<バージョン>.tar.gz cd podman-<バージョン> <br> または、<code>git clone</code>コマンドを実行して、Podmanのソースコードをダウンロードすることもできる。<br> git clone git clone https://github.com/containers/podman/ cd podman <br> Podmanをビルドおよびインストールする。<br> # SELinux, SECcomp (syscall filtering) を有効にする場合 make BUILDTAGS="selinux seccomp" PREFIX=<Podmanのインストールディレクトリ> -j $(nproc) # AppArmor, SECcomp (syscall filtering) を有効にする場合 make BUILDTAGS="apparmor seccomp" PREFIX=<Podmanのインストールディレクトリ> -j $(nproc) # SELinux, SECcomp (syscall filtering) を無効にする場合 make BUILDTAGS="" PREFIX=<Podmanのインストールディレクトリ> -j $(nproc) make install PREFIX=<Podmanのインストールディレクトリ> <br> ~/.profileファイル等に、環境変数<code>PATH</code>およびソケットの設定を記述する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<Podmanのインストールディレクトリ>:$PATH" export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock </syntaxhighlight> <br> SUSEにおいて、パッケージ管理システムにgvproxyパッケージが存在しないため、手動でgvproxyをインストールする必要がある。<br> <br> まず、[https://github.com/containers/gvisor-tap-vsock/ gvproxyのGithub]にアクセスして、gvproxyをダウンロードする。<br> ダウンロードしたgvproxyのファイル名を変更して、/usr/libexec/podmanディレクトリまたは/usr/local/libexec/podmanディレクトリにコピーする。<br> mv gvproxy-linux-<アーキテクチャ名> gvproxy chmod u+x gvproxy sudo mkdir -p /usr/libexec/podman または sudo mkdir -p /usr/local/libexec/podman sudo mv gvproxy /usr/libexec/podman または sudo mv gvproxy /usr/local/libexec/podman <br><br> == Podmanの設定 == ==== Dockerから移行する場合 ==== DockerからPodman Desktopに透過的に移行するため、環境変数<code>DOCKER_HOST</code>を使用することができる。<br> * 使い慣れたDockerコマンドを使い続けることが可能である。 * Podmanの利点を活用できる。 * GradleやTestcontainers等のツールは、再設定なしでPodmanと通信することができる。 <br> Podmanソケットファイルの場所を確認する。<br> podman info --format '{{.Host.RemoteSocket.Path}}' <br> Podmanソケットの場所を設定するため、~/.profileファイル等に環境変数<code>DOCKER_HOST</code>に記述する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export DOCKER_HOST="unix://<Podmanソケットファイルのパス>" </syntaxhighlight> <br> ==== Linux仮想マシンの初期化 ==== コンテナが実行される新しいLinux仮想マシンを初期化する。<br VMにアクセスするためのSSHキーが自動的に生成されて、VM内のスーパーユーザアカウントとユーザアカウントへのシステム接続が追加される。<br> podman machine init <br> デフォルトでは、VMのディストリビューションはカスタムFedoraイメージに基づくWSLを除き、Fedora CoreOSである。<br> 一般的なFedora CoreOSのアップグレードは14日ごとに行われるが、自動アップデートのZincataはPodmanマシンでは無効になっている。<br> <br> Linux仮想マシンを開始する。<br> これは、Podmanを起動するたびに開始する必要がある。<br> podman machine start <br> ==== Podmanマシンの接続の設定 ==== 各Podmanマシンは2つのデフォルト接続を公開する。<br> Podmanのデフォルト接続は1つのみ選択することができる。<br> * ルートレス * ルートフル <br> Podman DesktopやKind等の他のツールはデフォルト接続に接続する。<br> もし、別のPodmanマシンの作成等により、デフォルトのPodmanマシン接続が変更された可能性があるイベントが発生した場合、デフォルト接続の確認と設定を検討すること。<br> <br> まず、Podmanマシンの接続を確認する。<br> podman system connection ls <br> 次に、Podmanマシンのデフォルト接続を任意の接続に設定する。<br> podman system connection default podman-machine-default # または podman system connection default podman-machine-default-root <br> Podmanマシンのデフォルト接続が変更されているかどうかを確認する。<br> podman system connection ls <br> デフォルト接続を持つPodmanマシンを再起動する。<br> podman machine stop podman machine start <br> Podman DesktopとPodmanの接続を更新する。<br> <br> Podman Desktopのメイン画面右下にある[電球]アイコンを選択して[トラブルシューティング]ページを開き、[プロバイダーを再接続]ボタンを押下する。<br> <br><br> == Podmanの動作確認 == Podmanの動作を確認するため、テストイメージをダウンロードして実行する。<br> podman run hello-world <br><br> == Podman Desktop == ==== Podman Desktopのインストール ==== [https://podman-desktop.io Podman Desktopの公式Webサイト]、または、[https://github.com/containers/podman-desktop/ Github]にアクセスして、Podman Desktopをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf podman-desktop-<バージョン>.tar.gz mv podman-desktop-<バージョン> Podman-Desktop <br> 必要ならば、任意のインストールディレクトリに配置する。<br> mv Podman-Desktop <任意のインストールディレクトリ> <br> Podman Desktopのデスクトップエントリファイルを作成する。<br> vi ~/.local/share/applications/Podman-Desktop.desktop <br> <syntaxhighlight lang="ini"> # ~/.local/share/applications/Podman-Desktop.desktopファイル [Desktop Entry] Type=Application Name=Podman Desktop Exec=/<Podman Desktopのインストールディレクトリ>/podman-desktop %F Icon=io.podman_desktop.PodmanDesktop Categories=Development; StartupWMClass=Podman Desktop Terminal=false </syntaxhighlight> <br> ==== Docker Hubの使用 ==== Docker Hubにログインする。<br> podman login -u <Docker Hubのユーザ名> -v https://docker.io podman login -u <Docker Hubのユーザ名> -v https://index.docker.io/v2/ <br> Podman Desktopを再起動する。<br> <br> 認証情報は、/run/user/$UID/containers/auth.jsonファイルに保存される。<br> <br><br> == ルートレスモード == DockerとPodmanの違いの1つは、コンテナの扱い方である。<br> Dockerは、コンテナを実行するためにスーパーユーザ権限を必要とする。<br> Podmanは、スーパーユーザ権限無しでコンテナを実行することができる。<br> <br> 例えば、ルートレスモードのPodmanでは、ポート番号が1024番未満のポートでコンテナを起動することはできないため、1024番以上のポートを使用する必要がある。<br> <br> もし、1024番未満のポートでコンテナを作成する必要がある場合は、ルートレスモードを解除してスーパーユーザ権限で実行する。<br> podman machine set --rootful <br> ルートレスモードに戻す場合は、以下に示すコマンドを実行する。<br> podman machine set --rootful=false <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
インストール - Podman
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse