dockerfileを使用してdockerコンテナイメージを作成する

LINEで送る
Pocket

はじめに

docker01_logo

前回の記事では、「dockerコンテナのリンク機能を使用して、他のコンテナと通信する」手順について書いて行きましたが、今回はdockerfileを使用して、コンテナイメージを作成する手順について書いて行きたいと思います。

 

環境

  • OS:CentOS  7.3.1611 (Core)
  • Kernel:3.10.0-514.21.2.el7.x86_64
  • docker-ce:17.03.1.ce-1.el7.centos.x86_64

 

Dockerfileとは

Dockerfileとは、dockerにてコンテナイメージを自動構築する際に、命令を記述するテキスト形式のドキュメントです。

docker buildコマンドを使用する事により、このDockerfileに記述されているコマンドを順次実行していきます。

 

手順

今回は、Dockerfileを使用して、CentOSのベースイメージにapacheをインストールし、任意のテストページを作成したコンテナイメージを作成するところまでを実施したい思います。

Dockerfileの作成

# vi Dockerfile
以下の内容を記載します。

FROM centos
RUN yum install -y httpd
RUN echo "Test Page!" > /var/www/html/index.html
CMD /usr/sbin/httpd -DFOREGROUND
  • FROM : centosのコンテナイメージを、構築のベースイメージとして使用します。
  • RUN(2行) : apacheをインストールし、テストページを作成します。
  • CMD : コンテナ起動時、apacheを起動します。

コンテナイメージ作成

# docker build -t test_apach:1.0 .
Sending build context to Docker daemon 2.048 kB
Step 1/4 : FROM centos
 ---> 36540f359ca3
Step 2/4 : RUN yum install -y httpd
 ---> Running in 0bbeba630f54
Loaded plugins: fastestmirror, ovl
:
: (中略)
:
Complete!
 ---> 45ab3ebb9698
Removing intermediate container 0bbeba630f54
Step 3/4 : RUN echo "Test Page!" > /var/www/html/index.html
 ---> Running in 838ab9c4dd96
 ---> 15884120d8be
Removing intermediate container 838ab9c4dd96
Step 4/4 : CMD /usr/sbin/httpd -DFOREGROUND
 ---> Running in 96fd7fdce668
 ---> 264c8602c608
Removing intermediate container 96fd7fdce668
Successfully built 264c8602c608
#

Dockerfileに記述した内容が順次実行され、buildが成功した事が確認出来ます。

イメージ作成確認

# docker images
REPOSITORY  TAG    IMAGE ID      CREATED         SIZE
test_apach  1.0    264c8602c608  15 seconds ago  332 MB
centos      latest 36540f359ca3  3 weeks ago     193 MB
nginx       latest 2f7f7bce8929  3 weeks ago     107 MB
#

「test_apach」イメージの「1.0」タグが作成された事が確認できました。

コンテナ起動

# docker run -d -p 8080:80 test_apach:1.0
aef9e47a5dcca87ef6200ad7408925186e6057f8ab66c1392756f91e2eca7f41
#
  • -d : コンテナをバックグランドで起動
  • -p : <ホストポート>:<コンテナポート> で、ホストとコンテナのポートを紐づける

コンテナ起動確認

# docker ps
CONTAINER ID IMAGE          COMMAND                CREATED          STATUS    PORTS                NAMES
aef9e47a5dcc test_apach:1.0 "/bin/sh -c '/usr/..." 3 seconds ago Up 3 seconds 0.0.0.0:8080->80/tcp zen_leakey
#

テストページへのアクセス確認

# curl http://192.168.56.119:8080/
Test Page!
#

ホストIPの8080ポートにcurlでアクセスし、Dockerfile内で指定した「Test Page!」の表示が確認出来ました。

 

まとめ

これで、dockerfileを使用して、コンテナイメージを作成する手順について確認出来ました。

このdockerfileを使用する事で、同じ環境を他のマシンに構築する事が容易になる事も、dockerのメリットとなります。

これは、インフラのコード化とも呼ばれているものです。

複数人で開発を行う際に、それぞれの開発環境の環境差異で動きが異なってしまうと言う問題を解決するのに、役立ちそうな機能ではないでしょうか。

LINEで送る
Pocket

コメントを残す

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

six − two =