#author("2023-08-29T02:45:21+00:00","default:iseki","iseki") #author("2026-07-08T13:53:42+00:00","default:iseki","iseki") ** Podman [#j2bbc8d3] - RedHat社が開発したコンテナ管理ツール - No Daemon, Root less -- UNIXソケットを使って通信する場合は,デーモンがいる? - [[Docker]] 互換らしい -- しかし Compose は無い. --- Compose, Network の代わりに [[Kubernetes]] を使うらしい. --- 3rdパーティ製の podman-compose があるらしい - 関連システム: [[skopeo>./Skopeo]], [[buildah>./Buildah]] - see also [[PodmanSpawner]], [[LTIPodmanSpawner>/JupyterHub/LTIPodmanSpawner]] *** Install [#e1275c8f] # dnf module install container-tools -y **** Rocky 8 # dnf module install container-tools -y **** Rocky 9 # dnf install container-tools -y **** Podman # dnf install podman -y # dnf install podman-docker -y # dnf install podman-remote -y # dnf install podman-plugins -y **** CentOS7 に v3 をインストールする(通常は v1.6.4 : 2021 9/18) [#h57980fd] - CentOS7 は鬼門.バージョンが古すぎ. - /etc/yum.repo.d/podman.repo --https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/devel:kubic:libcontainers:stable.repo [devel_kubic_libcontainers_stable] name=Stable Releases of Upstream github.com/containers packages (CentOS_7) type=rpm-md baseurl=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/ gpgcheck=1 gpgkey=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/repodata/repomd.xml.key enabled=1 # yum install podman -y # yum install podman-docker -y # yum install podman-remote -y # yum install podman-plugins -y # podman --version podman version 3.0.1 *** API用設定 [#s175c767] adduser podman passwd podman chgrp podman /var/run/podman (再起動したら元に戻ってしまう) chmod g+rwxs /var/run/podman (同上) systemctl start podman.socket - %%必要なら podman.socket の [Socket] に podman.socket を付け加える%% ??? - podman.socket [Unit] Description=Podman API Socket Documentation=man:podman-system-service(1) [Socket] ExecStartPre=/usr/bin/chgrp podman /var/run/podman ExecStartPre=/usr/bin/chmod g+rwxs /var/run/podman ListenStream=%t/podman/podman.sock SocketMode=0660 [Install] WantedBy=sockets.target - CemtOS7 では動かない. -- 断続的に podman が再起動する *** [[Skopeo>./Skopeo]] [#aea7a285] *** [[Buildah>./Buildah]] [#cb7c2397] ** Docker 互換 [#k05aa12a] - コマンド,Images は Docker 互換 - でも色々とかなり違う! *** podman-compose [#db6acd76] - 3rdパーティ製の podman-compose - https://github.com/containers/podman-compose **** INSTALL [#kd2bd466] (base) # pip --no-cache install podman-compose - [[JupyterHub]] の sawrmspawner はやっぱり動かんのう. - Network周りが違うよう. ** API [#qe433dba] - v2.0 から RESTful API をサポート,varlink は廃止へ. systemctl daemon-reload systemctl enable podman.socket systemctl start podman.socket ** 共有 [#i5d4cb87] *** ファイル(Volume)共有 [#b06f7730] - volume : /var/lib/containers/storage/volumes -- Docker : /var/lib/docker/volumes - 特殊ファイル: /var/lib/containers/storage/volumes/backingFsBlockDev 特に処理する必要はない(と思う) -- Docker: /var/lib/docker/volumes/metadata.db (PC毎に持つ必要がある) ** Tips [#ef3c521a] *** 知らない所で蠢くヤツら [#q8fa6054] - 以下にファイルが作られる -- ~/.local/share/containers/ -- ~/.config/containers/ - /run/user/{uid}/ を使用する -- /run/user/{uid}/ ログインすると作られるが,su - では作られない! -- /run/user/{uid}/ はリーブートすると消える, *** Local Registory [#m7fe6c75] **** 作成 [#e5b11e92] mkdir -p /var/lib/registry podman run --privileged -d --name registry -p 5000:5000 -v /var/lib/registry:/var/lib/registry --restart=always registry:2 vi /etc/containers/registries.conf registries に 'localhost:5000' を追加.最後が良い **** Push [#g1aa40ba] podman tag localhost/jupyterhub/singleuser-ltids localhost:5000/jupyterhub/singleuser-ltids podman push localhost:5000/jupyterhub/singleuser-ltids --tls-verify=false **** Pull [#i0ca7366] podman pull localhost:5000/jupyterhub/singleuser-ltids --tls-verify=false ** Trouble Shooting [#t88c99fe] **** あるユーザの環境で動かない [#i8332a5e] - ~/.config, ~/.local を消す. **** error adding seccomp filter rule for syscall bdflush: requested action matches default action of filter [#tff9d91e] - runc が古い. - crun が早いが CentOS7 では入れられない(コンパイル失敗) -- https://github.com/opencontainers/runc git clone https://github.com/opencontainers/runc.git cd runc/ make make install - go で書かれているようだ. - /etc/containers/containers.conf を変更する必要があるかもしれない. **** user namespaces are not enabled in /proc/sys/user/max_user_namespaces(CentOS7) [#qd5c0a60] - sysctl user.max_user_namespaces=15000 -- cat /proc/sys/user/max_user_namespaces -- これって一時的? - (?) usermod --add-subuids 200000-201000 --add-subgids 200000-201000 iseki -- grep iseki /etc/subuid /etc/subgid **** Error: Could not get runtime: kernel does not support overlay fs [#me91ced4] - /etc/modules-load.d/overlay.conf -- overlay と一行記述 - reboot - lsmod |grep overlay - 何か色々と駄目だったけど,container パッケージを入れ直したら動いた **** the backing xfs filesystem is formatted without d_type support [#e686d23d] - CentOS の場合,ファイルシステムを -n ftype=1 オプション付きで再フォーマット(ftype=d_type) **** Failed to allocate manager object: Permission denied [#a4b1a56f] - see [[SELinux]] # getsebool -a | grep container # setsebool -P container_manage_cgroup on **** Docker を入れてから削除し,再び Podman を入れようとしたら駄目だった [#b144a12f] - yum で poman のパッケージが見つからないとのエラー -- /etc/dnf/dnf.conf で exclude=podman* runc* containernetworking-plugins* としていたのでそれをコメントアウト - それでもダメ -- /etc/dnf/modules.d/container-tools.module を削除.なぜか上手く行く. **** Error: could not get runtime: error creating tmpdir /run/user/1000/libpod/tmp: mkdir /run/user/1000: permission denied [#g52262c4] - \rm -r ~/.conifg/containers/ ~/.local/share/containers/ - JupyterHub ではこれでも解決しない? - su - ではなくて,ログインしてみる. ** Devel [#de1c7526] *** PodmanSpawner [#vc216da5] - https://github.com/gatoniel/podmanspawner podman run -d --net host -v /home/teacher/iseki:/home/iseki/ -v /mnt/datahdd:/extdata -w /home/iseki/ --hooks-dir /usr/share/containers/oci/hooks.d/ -e NVIDIA_VISIBLE_DEVICES=all docker.io/jupyterhub/singleuser jupyterhub-singleuser --NotebookApp.port=42868 --allow-root podman run -d --net host -v /home/bob:/home/jovyan/home -v /mnt/datahdd:/exdata docker.io/jupyterhub/singleuser start-notebook.sh --NotebookApp.port=50377 *** コマンド例 [#r3871214] podman run -d --net host -v /home/teacher/iseki:/home/iseki/ -w /home/iseki/ --env JUPYTERHUB_API_TOKEN=cf30aa5ab007444ca6462ff8c4decfec --env JPY_API_TOKEN=cf30aa5ab007444ca6462ff8c4decfec --env JUPYTERHUB_CLIENT_ID=jupyterhub-user-iseki --env JUPYTERHUB_HOST= --env JUPYTERHUB_OAUTH_CALLBACK_URL=/user/iseki/oauth_callback --env JUPYTERHUB_USER=iseki --env JUPYTERHUB_SERVER_NAME= --env JUPYTERHUB_API_URL=http://202.26.150.118:8081/hub/api --env JUPYTERHUB_ACTIVITY_URL=http://202.26.150.118:8081/hub/api/users/iseki/activity --env JUPYTERHUB_BASE_URL=/ --env JUPYTERHUB_SERVICE_PREFIX=/user/iseki/ --env GRANT_SUDO=no --env CHOWN_HOME=yes --env PRJCT_DIR=jupyter --env WORK_DIR=works --env COURSE_DIR=.courses --env NB_UMASK=0037 --env CONDA_DIR=/opt/conda --env TZ=JST-9 --env JUPYTER_ENABLE_LAB=yes --env JUPYTER_IMAGE_SPEC=docker.io/jupyterhub/singleuser -v /mnt/datahdd:/extdata --hooks-dir /usr/share/containers/oci/hooks.d/ -e NVIDIA_VISIBLE_DEVICES=all docker.io/jupyterhub/singleuser jupyterhub-singleuser --NotebookApp.port=42868 --allow-root --ip=0.0.0.0 podman run -d --net host -v /home/bob:/home/jovyan/home --env JUPYTERHUB_API_TOKEN=7807b43805c442f4b38b1a89855df831 --env JPY_API_TOKEN=7807b43805c442f4b38b1a89855df831 --env JUPYTERHUB_CLIENT_ID=jupyterhub-user-bob --env JUPYTERHUB_HOST= --env JUPYTERHUB_OAUTH_CALLBACK_URL=/user/bob/oauth_callback --env JUPYTERHUB_USER=bob --env JUPYTERHUB_SERVER_NAME= --env JUPYTERHUB_API_URL=http://202.26.150.118:8081/hub/api --env JUPYTERHUB_ACTIVITY_URL=http://202.26.150.118:8081/hub/api/users/bob/activity --env JUPYTERHUB_BASE_URL=/ --env JUPYTERHUB_SERVICE_PREFIX=/user/bob/ --env GRANT_SUDO=no --env CHOWN_HOME=yes --env PRJCT_DIR=jupyter --env WORK_DIR=works --env COURSE_DIR=.courses --env NB_UMASK=0037 --env CONDA_DIR=/opt/conda --env TZ=JST-9 --env JUPYTER_ENABLE_LAB=yes --env JUPYTER_IMAGE_SPEC=docker.io/jupyterhub/singleuser -v /mnt/datahdd:/exdata docker.io/jupyterhub/singleuser start-notebook.sh --NotebookApp.port=50377