何が起きたか
LXC 内で 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: unknown
以下は上記のメッセージに改行を追加して視認性を向上させたもの。
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: unknown
上記事象は containerd.io の バージョン 1.7.28-2 以降をインストールすると 発生します。
対応方法
以下の動画をご覧ください。
Docker containers not starting in LXCs recently? Here's a quick fix for you.
以下のページは上記動画の関連資料です。
もう少し詳しく
1. /etc/pve/lxc/xxx.conf を修正する
Proxmox サーバーの /etc/pve/lxc/xxx.conf に下記の行を追加する。
(xxx の部分は LXC の CT ID 。 上記 動画 では 1000 になっている。)
lxc.apparmor.profile: unconfined
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0
💡 追加行のそれぞれの意味は、以下の記事で詳しく説明されています。
2. LXC の再起動
上記 1. の手順に続き、Proxmox サーバーで以下のコマンドを実行し、LXC を再起動。
(LXC にログインして reboot しても良い。)
# 以下の xxx の部分を自分の LXC の CT ID に変更して実行
# `-bash: pct: command not found` が表示されたら `sudo` が必要
pct stop xxx
pct start xxx
おまけ: container.io のダウングレードでも対応できる
以下の記事に記載されている通り、container.io のダウングレードでも対応できるので、
この方法で対応する場合、以下のように container.io が apt upgrade でアップデートされないように固定する。
sudo apt-mark hold container.io
上記の apt-mark hold の設定を解除するには以下のコマンドを実行。
sudo apt-mark unhold container.io
以下の記事でも containerd.io のバージョンを 1.7.28 1 に固定することで、Docker が実行できない問題に対応している。