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

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

[root@5ef592aa81dd /]# 

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

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

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

「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 /]となり、設定した名前になっていれば成功です。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

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

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

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