実行中のDockerコンテナーでホスト名を設定するのに問題があります。ホスト名の指定方法も理解できませんafterイメージが開始されました。
ダウンロードしたイメージからコンテナを開始しました:
Sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
しかし、-h
でホスト名を指定するのを忘れていました。コンテナが実行されている今、どのようにホスト名を指定できますか?
編集/etc/hostname
は、コンテナー内でsshアクセスが必要なものの1つです。それ以外の場合は、-h
オプションを使用してコンテナを起動できます。
ホスト名とドメイン名を設定するには:
$ docker run -h foo.bar.baz -i -t ubuntu bash
root@foo:/# hostname
foo
root@foo:/# hostname -d
bar.baz
root@foo:/# hostname -f
foo.bar.baz
コンテナとサービスを停止
Sudo docker stop CONTAINER_NAME
Sudo service docker stop
構成ファイル(JSON)を編集[最初にバックアップを作成する必要があります]
/ var/lib/docker/containers/CONTAINER_ID/config.json
交換する
"ホスト名": "WHATEVER"
と
"ホスト名": "NEW_HOSTNAME"
コンテナとサービスを開始
Sudo service docker start
Sudo docker start CONTAINER_NAME
(オプションで、Dockerを接続することもできます)
Sudo docker attach CONTAINER_NAME
Docker(つまり、CONTAINER_NAME、CONTAINER_ID)の詳細は、次のコマンドを実行して取得できます
Sudo docker ps -a
--net=Host
を使用する場合、ホスト名を-h
またはdocker内から変更することはできません。
コンテナーを再起動するのが最も簡単なオプションですが、/ etc/hostnameを編集してそこから移動することもできます。
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces は、これを行う方法を説明しています。基本的な考え方は、docker inspect
コンテナのpidを取得するには、nsenter
を使用してコンテナのuts名前空間を入力します。その名前空間内でhostname
を実行すると、その名前空間を共有するdockerインスタンスのホスト名が変更されます。
他の人が指摘したように、これはconfig.v2.json
ファイルを変更することでコンテナに対して変更できます。
ファイルを編集する前にDockerサービスが停止していることを確認してください。停止していないと、上書きされます。手順はこの順序で実行する必要があります
-/var/lib/docker/containers/CONTAINER_ID/config.v2.json
-ファイルを変更します
Dockerサービスを起動する
これは、Docker v17.05.0-ceで、--net=Host
を使用するコンテナーで動作することが確認されています。 /etc/hostname
ファイルの変更は機能せず、ファイルは上書きされるだけです。