This post is Private. Only a writer or those who know its URL can access this post.

Improve article
RevisionsShow article in Markdown
Report article
Help us understand the problem. What is going on with this article?

Docker~WordPress環境を作ってみる~(勉強会用テキスト)

More than 5 years have passed since last update.

Dockerのインストール

1.Dockerのインストール

コマンド
# yum -y install docker

2.Dockerの自動起動設定及びサービスの起動

コマンド
# systemctl enable docker.service
# systemctl start docker.service

3.コンテナーイメージへのディスク最適化設定追加

コマンド
# vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled'
↓
OPTIONS='--selinux-enabled --storage-opt dm.no_warn_on_loop_devices=true'
:wq

4.Dockerサービスの再起動

コマンド
# systemctl restart docker.service

Docker Hubからコンテナーイメージのpull

1.searchサブコマンドでレジストリーを検索

コマンド
# docker search linaction
INDEX       NAME                         DESCRIPTION               STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/linaction/centos   Sample CentOS6.7(Final)   0

2.コンテナーイメージをダウンロード

コマンド
# docker pull -a linaction/centos
centos6: Pulling from docker.io/linaction/centos

47d44cb6f252: Already exists
6a7b54515901: Already exists
e788880c8cfa: Already exists
1debf8fb53e6: Already exists
72703a0520b7: Already exists
68833123ff9e: Already exists
ce76491a3be1: Already exists
Digest: sha256:759ea478951130a32e9191daaffc9b4e3c5ad089331eccc32112e370bf7c9fb8
Status: Image is up to date for docker.io/linaction/centos

3.ダウンロードしたイメージを確認

コマンド
# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/linaction/centos   centos6             ce76491a3be1        About an hour ago   190.6 MB

コンテナーの起動

1.コンテナーを起動

コマンド
# docker run -it --name centos01 linaction/centos:centos6 /bin/bash
[root@f2f7ecdecaf2 /]# 

起動したコンテナーの確認

1.コンテナー環境のOSのバージョンを確認

コマンド
[root@f2f7ecdecaf2 /]# cat /etc/redhat-release
CentOS release 6.7 (Final)

2.コンテナー内のプロセスを確認

コマンド
[root@f2f7ecdecaf2 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:55 ?        00:00:00 /bin/bash
root        13     1  0 04:59 ?        00:00:00 ps -ef

3.コンテナー環境のネットワークを確認

コマンド
[root@f2f7ecdecaf2 /]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:04
          inet addr:172.17.0.4  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:648 (648.0 b)  TX bytes:738 (738.0 b)

コンテナーとホストLinuxの切替

1.コンテナーの/bin/bashから抜けてホストLinuxに戻る

Ctrlキーを押したまま、PとQを順番に押す。

2.ホストLinuxから再度コンテナー内のbashに接続

コマンド
# docker attach centos01
[root@f2f7ecdecaf2 /]#

コンテナーの起動と停止

1.Linuxホストに戻る

Ctrlキーを押したまま、PとQを順番に押す。

2.コンテナーを停止

コマンド
# docker stop centos01

3.停止したコンテナーを確認

コマンド
# docker ps -a
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS                        PORTS               NAMES
f2f7ecdecaf2        linaction/centos:centos6   "/bin/bash"         23 minutes ago      Exited (137) 13 seconds ago                       centos01

4.コンテナーを起動

コマンド
# docker start centos01

5.起動したコンテナーを確認

コマンド
# docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
f2f7ecdecaf2        linaction/centos:centos6   "/bin/bash"         30 minutes ago      Up 4 seconds                  centos01

DockerfileからWordPress環境作成

1.コンテナーを停止

コマンド
# docker stop centos01

2.build用のディレクトリを作成

コマンド
# mkdir ~/build_wordpress

3.Dockerfileを作成

コマンド
# cd build_wordpress
# vi Dockerfile
Dockerfileのソースは事項参照
:wq
Dockerfile
#centos6のイメージを取得
FROM centos:centos6

#Dockerfile作成者
MAINTAINER linaction

#タイムゾーンの設定
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

#yumによるHTTPD,MySQL,PHP,tar,wgetのインストール
RUN yum -y install httpd php php-mysql mysql-server tar wget php-gd

#tmpディレクトリに移動
WORKDIR /tmp/

#wordpress一式のダウンロード
RUN wget https://ja.wordpress.org/latest-ja.tar.gz

#wordpressの展開
RUN tar xvfz ./latest-ja.tar.gz

#ダウンロードしたwordpressの削除
RUN rm -f ./latest-ja.tar.gz

#wordpressディレクトリ内のファイルをDocumentRootに移動
RUN mv wordpress/* /var/www/html/

#wordpressのconfigファイルをリネームして利用可能にする
RUN cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php

#wordpressのconfigファイルに必要な情報をsedコマンドで書き換える
RUN sed -i -e 's/database_name_here/wordpress/g' -e 's/username_here/wordpress/g' -e 's/password_here/wppass/g' /var/www/html/wp-config.php

#DocumentRootディレクトリの所有者をapacheに変更
RUN chown -R apache.apache /var/www/html/

#mysqldの起動、DB作成、ユーザ作成および権限設定、mysqldの停止
RUN service mysqld start && mysql -u root -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'wppass'; FLUSH PRIVILEGES;" && service mysqld stop

#mysqld,httpdの起動スクリプトの作成
RUN echo -e "service mysqld start\nservice httpd start\n/bin/bash" > /startService.sh

#mysqld,httpdの起動スクリプトの権限設定
RUN chmod o+x /startService.sh

#公開ポート
EXPOSE 80

#mysqld,httpdの起動スクリプトの実行
CMD /startService.sh

4.Dockerfileを実行

コマンド
# docker build -t linaction/wordpress:ver1.0 ~/build_wordpress
・
・
Successfully built 0c4e45b86bcd

5.コンテナーを起動

コマンド
# docker run -itd -p 8000:80 --name wordpress01 linaction/wordpress:ver1.0
3ce407416874308af370951ecf56c77b53e2aa405ba20aae51593fd3a0e2e108

コンテナーのcommit

1.ブラウザ確認

http://VirtualBoxのIPアドレス:8000/」にアクセスし、WordPressの管理画面が表示されることを確認

2.コンテナーを停止

コマンド
# docker stop wordpress01

3.コンテナーを保存

コマンド
# docker commit wordpress01 linaction/wordpress:ver1.0
cf75652d0f8a1509a5ad132ecf1214416c2b8dbf9fe9f93830ab8b51e738db73

4.コンテナーイメージを確認

コマンド
# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
linaction/wordpress          ver1.0              cf75652d0f8a        56 seconds ago      474.9 MB
docker.io/linaction/centos   centos6             ce76491a3be1        2 hours ago         190.6 MB

コンテナーイメージをDocker Hubにpush

1.Docker Hubにログイン

コマンド
# docker login
Username:
Password:
Email:
Login Succeeded

2.Docker Hubにコンテナーイメージをpush

コマンド
# docker push linaction/wordpress
Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/linaction/wordpress] (len: 0)
・
・
Digest: sha256:97e3bd8b7ed451163af7284513d398c426c796451d343400a9859156c1a8c021

3.リポジトリーを確認

コマンド
# docker search linaction
INDEX       NAME                            DESCRIPTION               STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/linaction/centos      Sample CentOS6.7(Final)   0
docker.io   docker.io/linaction/wordpress

コンテナーイメージを再ダウンロード

最後に全てのイメージと停止コンテナを削除して、pushしたwordpressのコンテナーイメージをダウンロードして起動してみましょう。

1.停止コンテナの一括削除

コマンド
# docker rm `docker ps -a -q`
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

2.イメージの一括削除

コマンド
# docker rmi イメージID
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

3.wordpressのコンテナーイメージをダウンロード

コマンド
# docker pull -a linaction/wordpress

4.コンテナーを起動

コマンド
# docker run -itd -p 8000:80 --name wordpress01 linaction/wordpress:ver1.0
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away