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 | 作業ディレクトリを指定する |
[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 |