本家様http://docs.docker.jp/
Docker Hubで得られるイメージにパッケージの追加や修正らを行い独自のdocker imageを作る際の指示書
ベースのimageをpullしてコンテナにして、それにログインしてyum/apt+手修正して目的のコンテナにしてimageに変換とかでも
いいのだが、ansibleな感じてファイルに記載してそのファイルさえあれば同一の環境が用意できるのが利点
Dockerfile †
ごくごく簡単にhttpdが入ったcentosのイメージを作って表示されるかのテスト
[illya@e ~]$ mkdir httpd
[illya@e ~]$ cd httpd/
[illya@e httpd]$ vi Dockerfile
FROM centos:centos7.9.2009
RUN yum install -y httpd
RUN yum install -y php
RUN echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
CMD ["/usr/sbin/httpd","-DFOREGROUND"]
[illya@e httpd]$
作ったDockerfileでdocker imageを作ってみます
[illya@e httpd]$ docker build -t chaperone/httpd:1.0 . # 「-t」で名前を付ける[chaperone/httpd]はREPOSITORY. [1.0]はTAGになる
# [.]はそこのフォルダにあるDockerfileを参照の意
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM centos:centos7.9.2009
centos7.9.2009: Pulling from library/centos
2d473b07cdd5: Pull complete
:
:
Successfully tagged chaperone/httpd:1.0
[illya@e httpd]$
「Successfully tagged chaperone/httpd:1.0」とあるので問題なくできたみたい
次にできたimageを確認します。
[illya@e httpd]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
chaperone/httpd 1.0 a7b2cf54c966 9 minutes ago 441MB
centos centos7.9.2009 8652b9f0cb4c 2 months ago 204MB
[illya@e httpd]$
とできていることが確認できる.
「docker history」でイメージの変更履歴が見れる.
[illya@e httpd]$ docker history centos:centos7.9.2009
IMAGE CREATED CREATED BY SIZE COMMENT
8652b9f0cb4c 2 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 2 months ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB
[illya@e httpd]$ docker history chaperone/httpd:1.0
IMAGE CREATED CREATED BY SIZE COMMENT
a7b2cf54c966 10 minutes ago /bin/sh -c #(nop) CMD ["/usr/sbin/httpd" "-… 0B
f3611951cc31 10 minutes ago /bin/sh -c echo "<?php phpinfo(); ?>" > /var… 20B
b64398cc68c1 10 minutes ago /bin/sh -c yum install -y php 111MB
df5c67d3eb7a 10 minutes ago /bin/sh -c yum install -y httpd 126MB
8652b9f0cb4c 2 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 2 months ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB
[illya@e httpd]$
次はこれを動かしてみる
[illya@e httpd]$ docker run -d -p 8080:80 --name httpdTest chaperone/httpd:1.0
b3b043ad27c6bfae949216b2c4b02bf8223563456d71380d09d673b2e2e84d65
[illya@e httpd]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3b043ad27c6 chaperone/httpd:1.0 "/usr/sbin/httpd -DF…" 17 seconds ago Up 16 seconds 0.0.0.0:8080->80/tcp httpdTest
[illya@e httpd]$
ここで別の計算機のブラウザで「http://e:8080/phpinfo.php」にアクセスしてphpinfoの値が表示されればOK
もし問題があれば †
コンテナが動いてれば
docker exec -it httpdTest /bin/bash
で内部にはいれる.