#author("2023-08-29T02:45:21+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 
 # 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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS