今まで人が作ったDockerfileを使ってdocker build
していてほとんど触れていなかったのですが、それもDockerfileを作るのが難しいという勝手な苦手意識からでした。
ですがそうも言っていられないので、もっとdockerとお友達になるために超簡単なDockerfileを作成してみたいと思います。
環境
- ubuntu16.04.1(elementary OS 0.4.1 Loki)
- docker 17.12.0-ce
予想以上に簡単だった
最近Linuxに触れたからというのもあるとは思うのですが、結構簡単でした。
UNIXコマンドをDockerfileに書くことが多いので、Linuxの知識がある前提です。
Macでも同じようなコマンドが使えるのでLinuxを触っておいて損はないと思います。
てか、MacでubuntuやらCentOSやらのコンテナ立ててシェルに入ってコマンドの練習すればいいんじゃないですかね。
winは知らん。
Dockerfileを作成する
それぞれ命令の意味はリファレンスが一番わかり易いと思います。
Dockerfile リファレンス — Docker-docs-ja 17.06.Beta ドキュメント
なんか適当なディレクトリを作ってそこにDockerfileを作成します。
$ mkdir ~/docker-pratice && cd !!$ && touch Dockerfile
ベースイメージをCentOS7にしてapacheでサーバーを立ててみます。
$ vim Dockerfile FROM centos:centos7 RUN yum install -y httpd CMD ["usr/sbin/httpd", "-D", "FOREGROUND"]
多分これでおk。単純にCentOS上でapacheをインストールしてサーバー立てる命令を入れただけ。
ビルドするぞお
$ docker build -t docker-practice . ・ ・ ・ Complete! Removing intermediate container 1f221c2502d5 ---> 328e4875d499 Step 3/3 : CMD ["usr/sbin/httpd", "-D", "FOREGROUND"] ---> Running in 20abda19727c Removing intermediate container 20abda19727c ---> 9f2a89281a6a Successfully built 9f2a89281a6a Successfully tagged docker-practice:lates
ビルド成功したのでイメージが作成されているか確認。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-practice latest 9f2a89281a6a 52 seconds ago 334MB
いけてますね\(^o^)/
作成したdockerイメージを起動する
先ほどのイメージでapacheコンテナを立てます。デタッチドでポートを指定して起動すれば行ける。
$ docker run -d -p 80:80 docker-practice
本当に起動しているのかわからんので一応確認。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 754fab174a33 docker-practice "usr/sbin/httpd -D F…" 10 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp gifted_boyd
おお動いてますね。
これでlocalhostにアクセスしてみる。
いけました\(^o^)/
最後に
立てたサーバーのコンテナは閉じるのを忘れないように。
$ docker stop 754fab174a33 #=> docker psで出てきたコンテナID
とりあえずここまで出来たらDockerfile作成できるって言っていいんじゃね?とか偉そうなこと思ってみたりする。