実行中のコンテナのホスト名を指定する方法は?


51

実行中のdockerコンテナでホスト名を設定するのに問題があります。また、イメージの開始にホスト名を指定する方法を理解するのに問題があります。

ダウンロードした画像からコンテナを開始しました:

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

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


コンテナを停止して、ホスト名を指定して再度起動できますか?
dawud

runコンテナを起動したときではなく、画像のときにのみ機能するAFAIK 。
ミゲルのPing

必要なのは、適切な名前のbashコマンドプロンプトを見ることだけです。その場合は、.bashrcのPS1値を編集できます。提案については、askubuntu.com / a / 549150/55365ご覧ください。PS1では、*または#で囲まれた(色付きの)文字列を追加して、サーバーまたはサービスの名前と区別できます。
SPRBRN

runingてとき@dawud新しいホスト名を与えることはできませんdocker restart 文書を
dangonfast

回答:


48

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

5
docker exec /bin/bash実行中のコンテナにインストールできますが、インストールする必要はありませんssh(これは管理目的では悪い習慣です)。
jjmontes

アドレスに正しく解決される/ etc / hostsを編集することもできます。
-dtoubelis

2
実行中のコンテナのホスト名をhostname(機能不足)で変更することはできません。実行docker run -h <hostname> <image> <container-name>すると、指定されたホスト名で新しいコンテナが作成されます。
ダンゴンファスト

6

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

sudo docker stop CONTAINER_NAME
sudo service docker stop

設定ファイルの編集(JSON)[最初にバックアップを作成する必要があります]

/var/lib/docker/containers/CONTAINER_ID/config.json

交換

「ホスト名」:「何でも」

「ホスト名」:「NEW_HOSTNAME」

コンテナとサービスを開始する

sudo service docker start
sudo docker start CONTAINER_NAME

(オプションで、ドッカーを接続することもできます)

sudo docker attach CONTAINER_NAME

Dockerの詳細(CONTAINER_NAME、CONTAINER_IDなど)は、次を実行して取得できます。

sudo docker ps -a

動作しません。コンテナを起動するたびに上書きされます。
アーメド

変だね。これらの手順を再現したばかりで、まだ機能しています。Dockerバージョン1.7.1。ファイルを編集する前にコンテナとサービスを閉じたと確信していますか?
トモト

/ etc / hostnameを編集しなかった場合、Docker 17.04.0-ceで動作します。コンテナをまだ作成していない場合は、-hを使用したもう1つの答えの方が優れていますが、私の場合は、コンテナのセットアップの問題に既に取り組み、ホスト名を設定するだけでコンテナを再作成したくありませんでした。
ウナ

動作しませんDocker version 17.05.0-ce, build 89658be
-dangonfast

4

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


編集/etc/hostnameは、再起動後は効果がありません。これは、Docker によって管理される「実際の」ホスト名で毎回上書きされるためです。hostnameコンテナにはその操作の機能がないため、コンテナで実行できません(デフォルトでは、変更する必要はありません)
-dangonfast

また/etc/hostname、コンテナを編集して再起動しないことには意味がありません。
ダンゴンファスト


1

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


2
dissappearも外部リンク直接ここにソリューションを追加し、ないてください
孤児

0

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

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

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

  • Dockerサービスを開始する

  • コンテナを開始します

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


-3

 /var/lib/docker/containers/CONTAINER/config.json

見つけて設定する

"Config":{"Hostname":"utils","Domainname":"mysite.com", ...}

動作しませんDocker version 17.05.0-ce, build 89658be。構成は上書きされます。誰がどこから知っているか。また、ホスト名自体は再起動後も変わりません。
ダンゴンファスト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.