Tech Blog

エンジニアが残すITブログです。

CentOSをコンテナで動かしてみる

CentOS Dockerイメージを取得

Docker Hubで公開されているCentOSのDockerイメージを取得します。

> docker image pull centos:7.5.1804


コンテナが取得されたか確認しましょう。

  • TAG:コンテナ操作に用いる
  • IMAGE ID:Dockerが管理する番号で、このIDを使ってDockerイメージを管理する。
> docker image ls
REPOSITORY           TAG            IMAGE ID           CREATED        SIZE
centos               7.5.1804       cf49811e3cdb      2 years ago     200MB

Dockerコンテナの起動

コンテナの操作は、コンテナに付与された「タグ」を使います。

  • -i :Dockerコンテナ起動時に、標準入力を受け付けるオプション
  • -t :仮想端末をコンテナに割り当てる
  • --name:作成するコンテナに名前を付ける
> docker container run -i -t --name test01 centos:7.5.1804 /bin/bash

「--name」オプションにtest01を付与したので、コンテナの名前はtest01になります。上記のコマンド実行後は下記のbashコマンドが表示されます。root@に続く文字列「e6a06e7c3b7f」はコンテナIDです。

[root@e6a06e7c3b7f /]#

コンテナとして起動したCentOSの情報を確認

■OSバージョンを確認

bashコマンドで、OSのバージョンを確認します。

[root@e6a06e7c3b7f /]# cat /etc/redhat-release
■コンテナのホスト名を確認

続いてbashコマンドでホスト名を確認します。ホスト名は自動的にコンテナIDが設定されます。Dockerコンテナ起動時に明示的に指定することもできます。

[root@e6a06e7c3b7f /]# hostname
e6a06e7c3b7f
■コンテナのIPアドレスを確認

IPアドレスを確認して、ホストOSや外部と通信できるか確認しましょう。

  • プロキシサーバ経由でインターネットに接続する場合はコンテナ内でもプロキシサーバの設定が必要です。
[root@e6a06e7c3b7f /]# echo "proxy=http://{your proxy server url}" >> /etc/yum.conf
  • ipコマンドが含まれるiproute RPMパッケージをインストールします。
[root@e6a06e7c3b7f /]# yum install -y iproute
Loaded plugins: fastestmirror, ovl
......

Complete!
■コンテナ上からホストOS側に通信できるか確認

XXXの部分には、ホストOSのIPアドレスを指定します。pingが通り、通信できていることが分かります。

[root@e6a06e7c3b7f /]# ping -c 3 XXX.XXX.XX.XXX
PING 192.168.43.1 (192.168.43.1) 56(84) bytes of data.
64 bytes from 192.168.43.1: icmp_seq=1 ttl=37 time=9.38 ms
64 bytes from 192.168.43.1: icmp_seq=2 ttl=37 time=6.97 ms
64 bytes from 192.168.43.1: icmp_seq=3 ttl=37 time=7.31 ms

--- 192.168.43.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.975/7.892/9.389/1.067 ms
■コンテナ上から外部のアドレスと通信できるか確認

nslookupコマンドで外部アドレス(ここでは任天堂のアドレスで試してみます)を指定し、通信できるかを確認します。

  • nslookupコマンドが含まれるbind-utilsパッケージをインストールします。
[root@e6a06e7c3b7f /]# yum install build-urils
Loaded plugins: fastestmirror, ovl
......

Complete!
  • nslookupコマンドで通信できるか確認します。
[root@e6a06e7c3b7f /]# nslookup www.nintendo.co.jp
Server:         192.168.65.5
Address:        192.168.65.5#53

Non-authoritative answer:
www.nintendo.co.jp      canonical name = www.nintendo.co.jp.edgekey.net.
www.nintendo.co.jp.edgekey.net  canonical name = e5192.b.akamaiedge.net.
Name:   e5192.b.akamaiedge.net
Address: 104.118.65.111
www.nintendo.co.jp.edgekey.net  canonical name = e5192.b.akamaiedge.net.