CentOS7

Docker : Dockerfile を利用する

Dockerfile を利用して Docker イメージを作成し Docker コンテナーを実行します。

Dockerfile には Docker コンテナーの構成内容をまとめて記述するため、構成管理にも役立ちます。

Docker ファイルでの記述フォーマットは「INSTRUCTION arguments」(指示 引数) の形となっており、INSTRUCTION には主に下記のような種類があります。 なお、INSTRUCTION の必須項目は FROM のみで、その他は任意です。FROM が指定されていれば Docker ファイルは動作します。

INSTRUCTION説明
FROMコンテナーのベースとするイメージを指定する
MAINTAINERコンテナーイメージの作成者を指定する
RUNコマンドの実行を指定する ⇒ イメージ作成時に実行される
CMDコマンドの実行を指定する ⇒ コンテナー実行時に実行される
「docker run」の際に実行されるが、「docker run」に引数があればそちらが優先される
ENTRYPOINTコマンドの実行を指定する ⇒ コンテナー実行時に実行される
「docker run」の際に実行されるが、「docker run」に引数があれば、ENTRYPOINT 指定コマンドに付加される
LABELコンテナーイメージのラベルを指定する
EXPOSEリスンするポートを指定する
ENV環境変数を指定する
ADDファイル/ディレクトリの追加を指定する
COPYファイル/ディレクトリの追加を指定する
ADD と異なる点は、リモートURL 指定不可、アーカイブファイルを自動で展開しない
VOLUMEマウントポイントを指定する
USER実行ユーザーを指定する
WORKDIR作業ディレクトリを指定する

例として、httpd のインストールと index.html の追加、および httpd を 80 で起動する Dockerfile を作成します。

[root@localhost ~]# vi Dockerfile
# 新規作成
FROM centos
MAINTAINER ServerWorld <admin@hoge.com>

RUN yum -y install httpd
RUN echo "Hello DockerFile" > /var/www/html/index.html
EXPOSE 80
CMD ["-D", "FOREGROUND"]
ENTRYPOINT ["/usr/sbin/httpd"]
# イメージのビルド ⇒ docker build -t [イメージ名]:[タグ] .
[root@localhost ~]# docker build -t web_server:latest .
Sending build context to Docker daemon 10.24 kB
Step 0 : FROM centos
---> 7322fbe74aa5
Step 1 : MAINTAINER ServerWorld <admin@hoge.com>
---> Running in fa5364b3d41f
---> 57d8fd36b7f7
.....
.....
Removing intermediate container 3efa8e1dcae9
Successfully built 7c39aaa338b4
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
web_server latest 7c39aaa338b4 24 seconds ago 283.9 MB
docker.io/centos latest ce20c473cd8a 8 weeks ago 172.3 MB
# バックグラウンドでコンテナーを起動
[root@localhost ~]# docker run -d -p 80:80 web_server
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda2b1482272 web_server "/usr/sbin/httpd -D F" 35 seconds ago Up 34 seconds 0.0.0.0:80->80/tcp mad_bhabha
[root@node02 ~]# curl http://localhost/
Hello DockerFile

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-08-30 (木) 17:20:24