web-dev-qa-db-ja.com

実行中のコンテナのホスト名を指定するにはどうすればよいですか?

実行中のDockerコンテナーでホスト名を設定するのに問題があります。ホスト名の指定方法も理解できませんafterイメージが開始されました。

ダウンロードしたイメージからコンテナを開始しました:

Sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss

しかし、-hでホスト名を指定するのを忘れていました。コンテナが実行されている今、どのようにホスト名を指定できますか?

55
Miguel Ping

編集/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
49
amitmula

コンテナとサービスを停止

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
6
Tomot

--net=Hostを使用する場合、ホスト名を-hまたはdocker内から変更することはできません。

https://github.com/docker/docker/issues/5708 を参照してください

4
Ivailo Bardarov

コンテナーを再起動するのが最も簡単なオプションですが、/ etc/hostnameを編集してそこから移動することもできます。

4
James V

https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces は、これを行う方法を説明しています。基本的な考え方は、docker inspectコンテナのpidを取得するには、nsenterを使用してコンテナのuts名前空間を入力します。その名前空間内でhostnameを実行すると、その名前空間を共有するdockerインスタンスのホスト名が変更されます。

1
Chaim Geretz

他の人が指摘したように、これはconfig.v2.jsonファイルを変更することでコンテナに対して変更できます。

ファイルを編集する前にDockerサービスが停止していることを確認してください。停止していないと、上書きされます。手順はこの順序で実行する必要があります

  • コンテナを停止します
  • Dockerサービスを停止する
  • -/var/lib/docker/containers/CONTAINER_ID/config.v2.json-ファイルを変更します

  • Dockerサービスを起動する

  • コンテナを起動します

これは、Docker v17.05.0-ceで、--net=Hostを使用するコンテナーで動作することが確認されています。 /etc/hostnameファイルの変更は機能せず、ファイルは上書きされるだけです。

0
user1270949