【Docker】Linux系コンテナ作成時にプロンプトのホスト名(hostname)を設定する方法


Dockerコンテナを作成時、Linux系OSだと以下の様にホスト名がランダムな文字列の様に表記されます。

[root@5ef592aa81dd /]# 

この表記だとアクセス後に、どのサーバーにアクセスしていたのか時間が経つとわからなくなります。
また、「/etc/hostname」でホスト名を変更しても反映されません。

このホスト名をコンテナ作成時に設定する方法をまとめました。

Dockerコンテナインストール方法は以下の記事も参考にしてください。

【Docker】CentOS7,8をコンテナ上で動作とSSHアクセスまで

2020年2月29日

「Docker」CentOSコンテナにホスト名を設定して作成する方法はオプション「-h」を使用

Dockerコンテナ作成時にホスト名を付与するには「-h」、もしくは「–hostname」を使用します。
以下は、「test」と言うホスト名を設定したCentOSのコンテナを作成するコマンドとなります。

$ docker run -itd --privileged -p 2222:22 --name test -h test -v test_vol:/test_centos7_vol centos:centos7 /sbin/init

コンテナのホスト名に「test」を設定するには、オプション「-h」を使用します。
そのほかのオプションは以下を参考にしてください。

  • -it コンテナのプロセスにttyを割り当てる
  • -d コンテナをバックグラウンドで実行
  • –p ポート指定(ここではsshアクセスポートの変更)
  • –privileged systemctlコマンドを使えるようにしたいのでこのオプションを追加
  • –name 作成したコンテナに名前をつける
  • -h コンテナのホスト名を指定
  • -v ボリューム名を今回のコンテナに合わせてわかりやすく表記する

また、「–privileged」オプションを追加しないと、CentOSを使用する際に必要となる「systemctl」コマンドなどが利用できないので、このオプションは追加しておきましょう。

コンテナ作成後の確認

上記で、問題なくコンテナが起動したら、以下「docker ps」コマンドで確認をします。

~ $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
438caba42bce        centos:centos7      "/sbin/init"        20 hours ago        Up 20 hours         0.0.0.0:2222->22/tcp   test


コンテナへアクセスし、ホスト名が設定されていることを確認

上記でコンテナが作成され、起動していることが確認できれば、実際に「docker exec」コマンドでコンテナにアクセスします。

~ $ docker exec -it test /bin/bash
[root@test /]# 

ホスト名が[root@test /]となり、設定した名前になっていれば成功です。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!