ホストと異なる専用 IP アドレスで Docker コンテナを起動する
以前に Ubuntu で NIC に復数の固定アドレスを割り当てる というメモを書きました。 このメモも参考に「ホスト OS が使う IP アドレスとコンテナが利用する IP アドレスを分ける」という方針での設定例をメモしておきます。 ホスト OS は「ひとつしか NIC が無い」前提とし、サンプルとして GitLab を Docker コンテナとして起動します。
検証環境¶
| 対象 | バージョン |
|---|---|
| Ubuntu | 24.04.4LTS |
ホスト OS の NIC にはふたつの IP アドレスを割り当て、以下の方針で利用します。
| IP アドレス | 用途 |
|---|---|
10.0.0.1/24 |
ホスト OS で利用する |
10.0.0.99/24 |
Docker コンテナで利用する |
sshd で Listen するアドレスを指定する¶
sshd はデフォルトで全てのアドレス (0.0.0.0) を Listen します。 これでは NIC に追加 IP アドレスを割り当てても sshd が Listen し、他のコンテナと衝突する可能性がある為、sshd が Listen する IP アドレスを限定します。 /etc/ssh/sshd_config を以下のように修正します。 修正が完了したら systemctl restart sshd を実行して反映します。 設定反映が完了したら以下のコマンドなどで「sshd が 0.0.0.0 を Listen していないこと」を確認します。
systemctl status sshdsshd -T | grep -e addressfamily -e listenaddresslsof -i:22ss -nt
修正前¶
1 2 3 | |
修正前¶
1 2 3 | |
ホスト OS の NIC に復数 IP アドレスを割り当てる¶
Ubuntu で NIC に復数の固定アドレスを割り当てる を参考に、ホスト OS に復数 IP アドレスを割り当てます。 /etc/netplan ディレクトリ配下にある netplan の設定ファイルを以下のように設定します。
1 2 3 4 5 6 | |
ホスト OS とは別アドレスで GitLab コンテナを起動する¶
概ね、以前に書いた Docker Compose で GitLab を起動する というメモの手順で GitLab を Docker コンテナとして起動します。 作業用のディレクトリを作成します。
1 2 | |
以下の内容で docker-compose.yml ファイルを新規作成します。 ports の定義には変換する「Docker コンテナで利用する IP アドレス」も合わせて指定します。 また、通常では TCP/22 や TCP/80 がホスト OS と衝突しがちである為、「2022 ←→ 22」や「8080 ←→ 80」といったポート変換をしますが、今回は「Docker コンテナ専用 IP アドレス」を用意する為、「22 ←→ 22」「80 ←→ 80」のようにポート変換せずに利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | |
ブラウザで http://10.0.0.99 (8080 などのポート指定はしない) へアクセスし、GitLab のログイン画面が表示されれば成功です。