3: 2020-08-26 (水) 10:01:28 iseki |
現: 2023-05-05 (金) 10:09:18 iseki |
| ** Podman [#j2bbc8d3] | | ** Podman [#j2bbc8d3] |
| - RedHat社が開発したコンテナ管理ツール | | - RedHat社が開発したコンテナ管理ツール |
- | - Docker 互換らしい | + | - No Daemon, Root less |
- | - しかし Compose は無い. | + | -- UNIXソケットを使って通信する場合は,デーモンがいる? |
- | -- Compose, Network の代わりに [[Kubernetes]] を使うらしい. | + | - [[Docker]] 互換らしい |
- | -- 3rdパーティ製の podman-compose があるらしい | + | -- しかし Compose は無い. |
- | --- https://github.com/containers/podman-compose | + | --- Compose, Network の代わりに [[Kubernetes]] を使うらしい. |
- | --- 泥沼にはまって行くような.... | + | --- 3rdパーティ製の podman-compose があるらしい |
| + | - 関連システム: [[skopeo>./Skopeo]], [[buildah>./Buildah]] |
| | | |
- | *** 仕方無いから取り敢えず podman-compose [#db6acd76] | + | - see also [[PodmanSpawner]], [[LTIPodmanSpawner>/JupyterHub/LTIPodmanSpawner]] |
| + | #br |
| + | |
| + | *** 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 |
| + | #br |
| + | |
| + | *** 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 が再起動する |
| + | #br |
| + | |
| + | *** [[Skopeo>./Skopeo]] [#aea7a285] |
| + | #br |
| + | |
| + | *** [[Buildah>./Buildah]] [#cb7c2397] |
| + | #br |
| + | ** Docker 互換 [#k05aa12a] |
| + | - コマンド,Images は Docker 互換 |
| + | - でも色々とかなり違う! |
| + | #br |
| + | |
| + | *** podman-compose [#db6acd76] |
| + | - 3rdパーティ製の podman-compose |
| + | - https://github.com/containers/podman-compose |
| + | #br |
| | | |
| **** INSTALL [#kd2bd466] | | **** INSTALL [#kd2bd466] |
| (base) # pip --no-cache install podman-compose | | (base) # pip --no-cache install podman-compose |
| | | |
- | - やっぱり動かんのう. | + | - [[JupyterHub]] の sawrmspawner はやっぱり動かんのう. |
| - Network周りが違うよう. | | - Network周りが違うよう. |
| #br | | #br |
| + | |
| + | ** API [#qe433dba] |
| + | - v2.0 から RESTful API をサポート,varlink は廃止へ. |
| + | |
| + | systemctl daemon-reload |
| + | systemctl enable podman.socket |
| + | systemctl start podman.socket |
| + | #br |
| + | |
| + | ** 共有 [#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毎に持つ必要がある) |
| + | #br |
| + | |
| + | ** Tips [#ef3c521a] |
| + | |
| + | *** 知らない所で蠢くヤツら [#q8fa6054] |
| + | - 以下にファイルが作られる |
| + | -- ~/.local/share/containers/ |
| + | -- ~/.config/containers/ |
| + | - /run/user/{uid}/ を使用する |
| + | -- /run/user/{uid}/ ログインすると作られるが,su - では作られない! |
| + | -- /run/user/{uid}/ はリーブートすると消える, |
| + | #br |
| + | *** 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 |
| + | #br |
| + | |
| + | ** Trouble Shooting [#t88c99fe] |
| + | **** あるユーザの環境で動かない [#i8332a5e] |
| + | - ~/.config, ~/.local を消す. |
| + | #br |
| + | |
| + | **** 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 で書かれているようだ. |
| + | #br |
| + | - /etc/containers/containers.conf を変更する必要があるかもしれない. |
| + | #br |
| + | |
| + | **** 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 |
| + | #br |
| + | |
| + | **** Error: Could not get runtime: kernel does not support overlay fs [#me91ced4] |
| + | - /etc/modules-load.d/overlay.conf |
| + | -- overlay と一行記述 |
| + | - reboot |
| + | - lsmod |grep overlay |
| + | |
| + | - 何か色々と駄目だったけど,container パッケージを入れ直したら動いた |
| + | #br |
| + | |
| + | **** the backing xfs filesystem is formatted without d_type support [#e686d23d] |
| + | - CentOS の場合,ファイルシステムを -n ftype=1 オプション付きで再フォーマット(ftype=d_type) |
| + | #br |
| + | |
| + | **** Failed to allocate manager object: Permission denied [#a4b1a56f] |
| + | - see [[SELinux]] |
| + | # getsebool -a | grep container |
| + | # setsebool -P container_manage_cgroup on |
| + | |
| + | #br |
| + | |
| + | **** Docker を入れてから削除し,再び Podman を入れようとしたら駄目だった [#b144a12f] |
| + | - yum で poman のパッケージが見つからないとのエラー |
| + | -- /etc/dnf/dnf.conf で exclude=podman* runc* containernetworking-plugins* としていたのでそれをコメントアウト |
| + | - それでもダメ |
| + | -- /etc/dnf/modules.d/container-tools.module を削除.なぜか上手く行く. |
| + | #br |
| + | |
| + | **** 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 - ではなくて,ログインしてみる. |
| + | #br |
| + | ** 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 |
| + | #br |
| + | |
| + | *** コマンド例 [#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 |