Armadilloフォーラム

コンテナコンフィグファイルにset_network host設定時のホストへのssh通信

k.sato

2023年10月11日 16時18分

佐藤と申します。

お世話になっております。

python_app.confに「set_network host」することでアドレスが分からないときでも
vsftpd を起動してFTPサーバーと接続することは確認できました。

この状態でsshコマンドにて「ssh root@10.88.0.1 reboot」としたのですがホストに接続できません。
それで「10.88.0.1」の部分を 「[armadiilo]ip addr」で確認したホストのIPアドレスを入れたところ接続できました。
これはこの方法でよいでしょうか?

またコンテナ内のpythonスクリプトでこのホストのIPアドレスはどうやって取得すればよいのでしょうか?

import socket
# ホスト名を取得、表示
host = socket.gethostname()
print(host)
 
# ipアドレスを取得、表示
ip = socket.gethostbyname(host)
print(ip)

上記を試してみたのですが取得できません。

以上、よろしくお願い致します。

コメント

佐藤です。

連投で申し訳ありません。

cat /etc/hosts」でホストのIPアドレスが確認できました。

root@armadillo:/# cat /etc/hosts
127.0.0.1       localhost localhost.localdomain
::1     localhost localhost.localdomain
192.10.1.113   host.containers.internal

ssh root@host.containers.internal reboot」の形で
コンテナからArmadilloが再起動できたのですがこの方法で問題ないでしょうか?

よろしくお願い致します。

at_dominique.m…

2023年10月12日 10時14分

佐藤さん

マルティネです。

> 「ssh root@host.containers.internal reboot」の形で
> コンテナからArmadilloが再起動できたのですがこの方法で問題ないでしょうか?

host.containers.internal は podman がコンテナの起動時に生成しますので、コンテナ起動時に使えます。

ただし、デフォルトのネットワークでコンテナの IP が変わることがないですが、set_network host の場合で DHCP で IP を自動取得すると IP が変わることがあります(armadillo を動かさない限りは基本的に変わらない物ですが、サーバーの都合で可能性としてありえます)

その場合にコンテナの /etc/hosts が更新されませんので、set_network host の場合は localhost かそのどちらかの IP (127.0.0.1 / ::1 )を使っていただいた方が丈夫な構造になります。
host ネットワークの場合は localhost でホストの sshd に必ず接続できますので、「ssh localhost reboot」でも再起動できるはずです。

よろしくお願いします。

マルティネ様

佐藤です。

> host.containers.internal は podman がコンテナの起動時に生成しますので、コンテナ起動時に使えます。
>
> ただし、デフォルトのネットワークでコンテナの IP が変わることがないですが、set_network host の場合で DHCP で IP を自動取得すると IP が変わることがあります(armadillo を動かさない限りは基本的に変わらない物ですが、サーバーの都合で可能性としてありえます)
>
> その場合にコンテナの /etc/hosts が更新されませんので、set_network host の場合は localhost かそのどちらかの IP (127.0.0.1 / ::1 )を使っていただいた方が丈夫な構造になります。
> host ネットワークの場合は localhost でホストの sshd に必ず接続できますので、「ssh localhost reboot」でも再起動できるはずです。
詳しい説明ありがとうございます。
ssh localhost reboot」で再起動できることを確認しました。

ありがとうございました。