背景
Dockerを使用しているサーバーをPodmanに変換しようとしています。これまで、すべてのサービス(合計15個)をシステムタスクに変換し、問題なく実行できました。このプロセスでは、ブリッジデバイス()を作成し、ここにbr0
物理インターフェイス(eno1
)とポッドのインターフェイスを追加しました。ドライバを使用して、実行中の他のコンテナをブリッジにveth
接続します。これまで、すべてが期待どおりに機能しています。bind
macvlan
質問
これで、コンテナでGitLabを起動し、標準ポート22と443を使用しようとしています。これらのポートは1024未満であるため、このコンテナをルートとして呼び出して別のユーザーに切り替える必要があります(公式コンテナはgitlab-ce
合計8人の異なるユーザーを使用します)。コンテナを起動しようとするたびに、次のエラーが発生します。
podman[1161766]: Error: cannot listen on the TCP port: listen tcp4 :22: bind: address already in use
特定のIPアドレスのみを受信するようにsshdを設定したので、これは混乱していますbr0
(物理ホストのアドレスは/ 24> = 100、コンテナのアドレスは4から99の間の/ 24です)。
ListenAddress 192.168.1.104
次に、netstatを使用して次のことを確認します。
tcp 0 0 192.168.1.104:22 0.0.0.0:* LISTEN 695475/sshd
コンテナは、FE:ED:DE:AD:BE:EF
ホストシステムとは異なるMAC()とIP()で始まるように構成されています。192.168.1.15
質問
ポート22を使用する別のものは何ですか?
失敗した場合、netstatがポート22を使用するsshdのみを表示した場合、どのように犯人を見つけることができますか?
私が知っている限り、これはうまくいくはずです。コンテナが内部的に非 root ユーザーに切り替えても、root コンテキストで OCI ランタイムが呼び出されるため、ネットワーク インターフェイスを設定しようとするとポートにバインドできる必要があります。これは、問題なくポート53にバインドできるDNSコンテナによってさらに確認されます。