Docker で 開発環境 の ベースを 作ってみた (3)
今回も Docker を 触っていきます
カスタムイメージの作成と イメージが立ち上がるかどうか 確認してみました
仮想環境作成
Docker コマンドが 使える事が 確認できたので 環境を 作っていきます
ディレクトリ構造
Repository
- tekuaru
- html
- docker-compose.yml
- Dockerfile
Vagrant よりも あっさりしています
tekuaru を Git 管理しているので 実際には そのディレクトリに .git とか README.md とか Vagrant の 時に 使ったディレクトリ とか が置かれていますが とりあえず こんな感じです
Vagrant と 同様に このリポジトリを 共有すれば 他の方とも 同じ環境で 作業することが出来ますね
( docker-compose.yml は 次回の記事 で 使うので 置いてあるだけで 今は 空のデータです )
イメージファイル について
Docker では 複数のイメージを立ち上げたり コンテナを起動して 1つの サーバとして 機能するわけですが
イメージを 共有している サービスがあります
公式で 出しているイメージや 個人で 登録したイメージ が あります
Docker Hub
https://hub.docker.com/
公式で 出しているイメージ は ここから 見ることができます
Explore Official Repositories
https://hub.docker.com/explore/
Dockerfile
こちら ディレクトリではなくて ファイルです
このファイルで オリジナルイメージファイルから カスタムイメージファイルを 作ることができます
( カスタムイメージファイル と 僕が 言っているだけです )
と いうわけで server:( CentOS Apache PHP ) の カスタムイメージファイルを 作成します
FROM centos:latest # remi --------------------------------------------------------------------------------------------- RUN yum -y install epel-release RUN yum -y install http://russell.fusion.to/tools/vagrant/remi-release-7.rpm # yum ---------------------------------------------------------------------------------------------- RUN yum -y upgrade # apache ------------------------------------------------------------------------------------------- RUN yum -y install httpd # PHP 7.2 ------------------------------------------------------------------------------------------ RUN yum -y install --enablerepo=remi,remi-php72 --skip-broken php # MariaDB ------------------------------------------------------------------------------------------ RUN yum -y install --enablerepo=remi,remi-php72 --skip-broken php-mysql # redis -------------------------------------------------------------------------------------------- RUN yum -y install --enablerepo=remi,remi-php72 --skip-broken php-redis # SQLite3 ------------------------------------------------------------------------------------------ RUN yum -y install sqlite # -------------------------------------------------------------------------------------------------- # curl unzip zip ----------------------------------------------------------------------------------- RUN yum -y install curl-devel unzip zip # Composer ----------------------------------------------------------------------------------------- RUN curl -sS https://getcomposer.org/installer | php && \ mv -f composer.phar /usr/local/bin/composer # WP-CLI ------------------------------------------------------------------------------------------- RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \ chmod +x wp-cli.phar && \ mv -f wp-cli.phar /usr/local/bin/wp EXPOSE 80 CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
Composer や WP-CLI も 入れてあります
こちらが ちゃんと 動くかどうか 確認してみましょう
イメージ の ビルド
Repository / tekuaru に 移動して
docker build -t server:0.1 ./
と コマンドを打ってみます
コマンドの 意味合いとしては
docker build -t [イメージID]:[TAG] [DIR]
という感じです
イメージIDや タグというのは 自由に名前を決められて
server:centOS-Apache とか server:centOS-Nginx とか
RedHat:Apache-PHP72 とか Fedora:Apache-PHP72 とかの 使い方が 良いのではないかなと思います
今回はテストなので 0.1 と しました
Sending build context to Docker daemon 10.75kB Step 1/14 : FROM centos:latest ---> ff426288ea90 Step 2/14 : RUN yum -y install epel-release ---> 99d934d4f46b Step 3/14 : RUN yum -y install http://russell.fusion.to/tools/vagrant/remi-release-7.rpm ---> faf18310596b Step 4/14 : RUN yum -y upgrade ---> 05d19e02453e Step 5/14 : RUN yum -y install httpd ---> b8f48da9854f Step 6/14 : RUN yum -y install --enablerepo=remi,remi-php72 --skip-broken php ---> 5c0cd371e471 Step 7/14 : RUN yum -y install --enablerepo=remi,remi-php72 --skip-broken php-mysql ---> a307623e124c Step 8/14 : RUN yum -y install --enablerepo=remi,remi-php72 --skip-broken php-redis ---> aa6188ed7a3e Step 9/14 : RUN yum -y install sqlite ---> bbf718233e4b Step 10/14 : RUN yum -y install curl-devel unzip zip ---> 3b26b52e3194 Step 11/14 : RUN curl -sS https://getcomposer.org/installer | php && mv -f composer.phar /usr/local/bin/composer ---> 00797f482233 Step 13/14 : EXPOSE 80 ---> 640ad138ac2c Step 14/14 : CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] ---> 51979281b393 Successfully built 51979281b393 Successfully tagged server:0.1
( 本当は インストール中の 表示があるのですが カットしています )
こんな感じで ビルド されます
イメージ の 実行
Docker に 入っている イメージ一覧 は
docker images
の コマンドで確認することができます
REPOSITORY TAG IMAGE ID CREATED SIZE server 0.1 51979281b393 17 minutes ago 1.45GB
の ように イメージが出来上がっているのが確認できると思います
では 実際に 動かしてみます
docker run -it --rm -p 80:80 -v ~/Repository/tekuaru/html/:/var/www/html/ 51979281b393
~/Repository/tekuaru/html/ と 51979281b393 の 部分は 自分の環境に合わせて 変更してください
localhost に アクセスすると 結果が返ってくるかと思います
~/Repository/tekuaru/html/ 以下に 適当な index.html などを置いてみると localhost の 結果が変わるかと思います
コンテナ の 停止 & 削除
前回 起動した方法は control + C で 停止 & 削除 しますが
自分で 停止 & 削除 しないと いけない 起動方法も あるので サクッと メモしておきます
イメージ を 起動すると コンテナ と言うものになります
( 嘘言ってたらゴメンナサイ )
それぞれに コンテナID と言うものが振られます
( イメージID の コンテナ版 って 感じです )
一覧
docker container list
停止
docker stop [コンテナID]
一覧 (停止中も含む)
docker container list -a
削除
docker rm [コンテナID]
イメージ の 削除
今回 server:0.1 という 名前で イメージを作りましたが これを 消したいと思います
一覧 を 表示し イメージID を 確認して
docker rmi [イメージID]
を 実行します
これで イメージを 削除できました
今回は ここまでで!!
最後 削除周りは 随分 駆け足になってしまったかな?? と 思いましたが わかりにくかったら コメントください
まぁ… 文才がないので 加筆したところで うまく伝えられるかは わかりませんが… 努力します!!
いろいろ調べて 自分なりの解釈になりますので 間違っていたらコメントください
Docker で 開発環境 の ベースを 作ってみた (1)
https://tekuaru.jack-russell.jp/2018/01/14/1540/
Docker で 開発環境 の ベースを 作ってみた (2)
https://tekuaru.jack-russell.jp/2018/01/15/1561/
Docker で 開発環境 の ベースを 作ってみた (4)
https://tekuaru.jack-russell.jp/2018/01/17/1581/