🩹
Proxmox 8.4 の LXC で Docker が 'permission denied' になる問題の回避方法
概要
Proxmox 8.4 の LXC 環境で Docker 実行時に次のエラーが発生する問題を、OS を上げずに一時回避する手順です。
root@pve:~# docker run hello-world
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: open sysctl net.ipv4.ip_unprivileged_port_start file: reopen fd 8: permission denied
Proxmox 9 へアップデートすると解消する報告がありますが、今回は 8.4 のまま回避します。
ここでは containerd.io パッケージを特定バージョン(1.7.28-1)へダウングレードし、問題を回避する手順をまとめます。
回避策: containerd.io を 1.7.28-1 にダウングレード
-
インストール済みの containerd.io のバージョンを確認します。
root@pve:~# apt list -a containerd.io Listing... Done containerd.io/bookworm,now 2.2.0-2~debian.12~bookworm amd64 [installed] containerd.io/bookworm 2.1.5-1~debian.12~bookworm amd64 containerd.io/bookworm 1.7.29-1~debian.12~bookworm amd64 containerd.io/bookworm 1.7.28-2~debian.12~bookworm amd64 containerd.io/bookworm 1.7.28-1~debian.12~bookworm amd64 containerd.io/bookworm 1.7.28-0~debian.12~bookworm amd64一覧の
nowが付いている2.2.0-2~debian.12~bookwormが、現在インストールされているバージョンです。 -
containerd.io パッケージを
1.7.28-1にダウングレードします。root@pve:~# apt install containerd.io=1.7.28-1~debian.12~bookworm Reading package lists... Done Building dependency tree... Done Reading state information... Done The following packages will be DOWNGRADED: containerd.io 0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 84 not upgraded. Need to get 31.9 MB of archives. After this operation, 37.9 MB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 https://download.docker.com/linux/debian bookworm/stable amd64 containerd.io amd64 1.7.28-1~debian.12~bookworm [31.9 MB] Fetched 31.9 MB in 0s (69.4 MB/s) dpkg: warning: downgrading containerd.io from 2.2.0-2~debian.12~bookworm to 1.7.28-1~debian.12~bookworm (Reading database ... 21377 files and directories currently installed.) Preparing to unpack .../containerd.io_1.7.28-1~debian.12~bookworm_amd64.deb ... Unpacking containerd.io (1.7.28-1~debian.12~bookworm) over (2.2.0-2~debian.12~bookworm) ... Setting up containerd.io (1.7.28-1~debian.12~bookworm) ... Processing triggers for man-db (2.11.2-2) ... -
containerd.io のバージョンを確認します。
root@pve:~# apt list -a containerd.io Listing... Done containerd.io/bookworm 2.2.0-2~debian.12~bookworm amd64 [upgradable from: 1.7.28-1~debian.12~bookworm] containerd.io/bookworm 2.1.5-1~debian.12~bookworm amd64 containerd.io/bookworm 1.7.29-1~debian.12~bookworm amd64 containerd.io/bookworm 1.7.28-2~debian.12~bookworm amd64 containerd.io/bookworm,now 1.7.28-1~debian.12~bookworm amd64 [installed,upgradable to: 2.2.0-2~debian.12~bookworm] containerd.io/bookworm 1.7.28-0~debian.12~bookworm amd64一覧の
nowが付いている1.7.28-1~debian.12~bookwormが、現在インストールされているバージョンです。 -
Docker デーモンを再起動します。
root@pve:~# systemctl restart docker || service docker restart -
docker が実行できることを確認します。
root@pve:~# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
containerd.io のバージョンを固定
アップグレードで意図せず新バージョンへ戻らないよう、ダウングレードしたバージョンを一時的に固定します。
root@pve:~# apt-mark hold containerd.io
containerd.io set on hold.
固定を解除してアップグレード可能な状態へ戻します。
root@pve:~# apt-mark unhold containerd.io
Canceled hold on containerd.io.
Discussion