てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

今回も 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/

Related Article

今更だけど Vagrantで 開発環境 の ベースを 作ってみた ( 2 )

詳細へ »

Gutenberg の カスタムブロック を 作ってみる

詳細へ »