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 |