Docker : Dockerfile を利用する2019/01/22 |
Dockerfile を利用して Docker イメージを作成し Docker コンテナーを実行します。
Dockerfile には Docker コンテナーの構成内容をまとめて記述するため、構成管理にも役立ちます。 |
|
[1] | 例として、httpd, sshd のインストールと起動を行う Dockerfile を作成します。複数プロセスの起動には Supervisor を利用します。 |
dlp:~ #
vi Dockerfile # 新規作成 FROM fedora MAINTAINER ServerWorld <admin@srv.world> RUN dnf -y install openssh-server httpd supervisor RUN echo "Hello DockerFile World" > /var/www/html/index.html RUN mkdir /root/.ssh; chown root. /root/.ssh; chmod 700 /root/.ssh RUN ssh-keygen -A ADD supervisord.conf /etc/supervisord.conf ADD .ssh/id_rsa.pub /root/.ssh/authorized_keys EXPOSE 22 80 CMD ["/usr/bin/supervisord"] [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D autostart=true autorestart=true [program:httpd] command=/usr/sbin/httpd -D FOREGROUND autostart=true autorestart=true # SSHキー生成 dlp:~ # ssh-keygen -q -N "" -f /root/.ssh/id_rsa
# イメージのビルド ⇒ docker build -t [イメージ名]:[タグ] . dlp:~ # docker build -t web_server:latest . Sending build context to Docker daemon 15.87 kB Step 1/10 : FROM fedora ---> 26ffec5b4a8a Step 2/10 : MAINTAINER ServerWorld <admin@srv.world> ---> Running in 4701e055a121 ---> f366bb5fd2ba Removing intermediate container f82198c58db8 Step 3/10 : RUN dnf -y install openssh-server httpd supervisor ---> Running in 1b27371bf4c2 ..... ..... Successfully built 3fc464a24f9a Successfully tagged web_server:latestdlp:~ # docker images REPOSITORY TAG IMAGE ID CREATED SIZE web_server latest 3fc464a24f9a 3 minutes ago 549MB srv.world/fedora_httpd latest 5b6251fe21ea 10 minutes ago 499MB fedora latest 26ffec5b4a8a 5 days ago 274MB # バックグラウンドでコンテナーを起動 dlp:~ # docker run -d -p 2022:22 -p 8081:80 web_server ad51a5c4d0f7db8c1a4669da162410e18f7bf07f891c54f5057cbdd9c0383144dlp:~ # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad51a5c4d0f7 web_server "/usr/bin/supervisord" 16 seconds ago Up 15 seconds 0.0.0.0:2022->22/tcp, 0.0.0.0:8081->80/tcp elastic_davinci # アクセス確認 dlp:~ # curl localhost:8081 Hello DockerFile World dlp:~ # ssh -p 2022 localhost [root@ad51a5c4d0f7 ~]# |
Docker ファイルでの記述フォーマットは [INSTRUCTION arguments] (指示 引数) の形となっており、INSTRUCTION
には主に下記のような種類があります。なお、INSTRUCTION の必須項目は FROM のみで、その他は任意です。FROM
が指定されていれば Docker ファイルは動作します。
|
Sponsored Link |