質問: ■環境 Raspbian GNU/Linux 9.8 (stretch) Docker version 18.09.0, build 4d60db4 ■目的 dockerでコンテナを作成し、コンテナからホストへの接続を名前でできるように自動設定したいです。 具体的には、コンテナの/etc/hostsにホスト名を登録すれば名前で接続できることは確認しているのですが、 手動で/etc/hostsに登録してもコンテナを起動しなおすとクリアされてしまうため、コンテナの起動時に自動設定するようにしたいです。 なお、ホスト・コンテナを異なる環境で作成すると、docker0ネットワークのサブネット(172.XX.0.0/24のXX部分)が変動するため、 ホストであらかじめ作成した/etc/hostsをマウントするのもスマートではないと思っています。 ■実施したこと コンテナはbridgeで作成しています。 Dockerfileには以下のように記載しており、 コンテナ起動時に、entrypoint.shスクリプトをホストからコピーし、コンテナ上で実行するようにしています。 ``` COPY ./entrypoint.sh /usr/local/bin/ ENTRYPOINT [ "/usr/local/bin/entrypoint.sh"] ``` entrypoint.shには以下のように記載し、/etc/hostsにホストのIPアドレスを登録するようにしています。 ``` #!/bin/sh # ホストのIPアドレスを/etc/hostsに追加 echo "`ip route | grep default | awk '{ print $3 }'`\thost" >> /etc/hosts tail -f /etc/passwd ``` ですが、起動後にコンテナに入って確認しても/etc/hostsに反映されていません。 tailコマンドのプロセスは実行中になっているので、entrypoint.sh自体は正常に実行されているようです。 その状態で手動でentrypoint.shを実行すると適切に/etc/hostsに以下の行が追加されます。 ``` 172.20.0.1 host ``` ■現状 なぜ/etc/hostsの更新ができていないのか原因を特定できずにいます。 ■質問 原因や調査方法についてアドバイスをお願いしたいです。 可能であれば、/etc/hostsに自動設定するより良い方法があれば教えていただきたいです。
回答: そのまんまのQiita記事があったので貼っておきます。 https://qiita.com/ijufumi/items/badde64d530e6bade382 /etc/hostsはdockerコンテナ内ではreadonlyなので変更不可なようです。