LoginSignup
1
1

More than 5 years have passed since last update.

MACでdocker-composeを使ってwordpressの環境作ッタ時の自分用覚え書き

Last updated at Posted at 2016-08-25

これ(https://hub.docker.com/_/wordpress/)みながら、
macでwordpressのテスト環境を作らなければならなかった時の自分用の覚え書き

事前知識
- Dockerバージョン1.8(2015年8月)から、Boot2Docker(非推奨)ではなく、Docker ToolBox、Docker Machineを利用するようになった (既存のboot2dockerからのマイグレーションは可能)
- Dockerは基本的にLXC(Linux Container)の上で動作するので、Linuxのみに対応する。しかし、OS Xはそれに対応できない。そのため、LXCの代わりにVirtual Boxを利用する。
- そのVirtual BoxをMac上で簡単に使用するためのものがDocker-machineである。
- 因みにdocker for macもあるのでそっちでも良さげ

必要なもの

名前 概要
docker dockerの本体
docker-machine Dockerがインストールされたdockerホストマシンを作成するもの。作成先はローカルのVM、クラウドサービスともに可能。
docker-compose yml形式の設定ファイルに従ってdockerホスト上に複数のDockerコンテナで構成される環境を構築したり操作したりするツール
virtualbox linuxコンテナを起動するにはlinux環境が必要なのでそれ用

インスコ

sh
$ brew install docker
$ brew install docker-machine
$ brew install docker-toolbox

Dockerホストの作成

sh
$ docker-machine rm default # 一様過去のを削除する
$ docker-machine create --driver virtualbox default # defaultという名前のVMをVirtualBoxで作る
$ docker-machine ls # 稼働中のdockerホストの確認
$ docker-machine env default 
$ docker-machine start default

Dockerホストのcertificate(認証書)のエラーが出た時の修正

sh
$ docker-machine env default # 以下のエラーが出た
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host
$ docker-machine regenerate-certs default # 認証書の再作成

Dockerコンテナを一斉起動

sh
$ mkdir ~/sandbox && cd ~/sandbox
$ $EDITOR docker-compose.yml # 下の貼り付ける
$ eval $(docker-machine env default) # 別ターミナル使う時用の環境設定
$ docker-compose up # Create and start containers

docker-compose.yml

sh
version: '2'

services:

  wordpress:
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: example

dockerホスト操作

sh
$ docker-machine ls
NAME                ACTIVE  DRIVER      STATE    URL                        SWARM
default            *        virtualbox  Running  tcp://192.168.99.101:2376
$ docker-machine rm default # dockerホストの削除
$ docker-machine stop default # dockerホストの停止
$ docker-machine start default # dockerホストの起動
$ docker-machine ssh # dockerホストに接続
$ docker-machine ip # dockerホストのIPアドレスの表示
192.168.99.101
$ docker-machine restar # dockerホストの再起動

コンテナの一覧

docker-compose.ymlに記述したのがコンテナとして起動する

sh
$ docker-compose  up -d # バックグラウンドで起動
$ docker-compose ps
    Name                  Command             State          Ports
-------------------------------------------------------------------------
sandbox_db_1    docker-entrypoint.sh mysqld   Exit 1
sandbox_web_1   apache2-foreground            Up       0.0.0.0:80->80/tcp
$ docker-compose start 
$ docker-compose stop 

ローカルからコンテナへの接続

sh
$ docker-machine ssh 
$ eval $(docker-machine env default) # 別ターミナル使うとき
$ docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1394bcba40e2        wordpress           "/entrypoint.sh apach"   7 minutes ago       Up 7 minutes        0.0.0.0:8080->80/tcp   sandbox_wordpress_1
df94ad96dbe7        mariadb             "docker-entrypoint.sh"   7 minutes ago       Up 7 minutes        3306/tcp               sandbox_mysql_1
$ sudo docker exec -i -t 1394bcba40e2 /bin/bash #by ID
$ sudo docker exec -i -t sandbox_wordpress_1 /bin/bash #by Name
$ export TERM=xterm # ターミナル設定

コンテナ内での操作

sh
$ apt-get update 
$ apt-get install vim git 
$ cd /var/www/html
$ vim index.php # <?=phpinfo();?>を入れる
$ cd  && pwd
/root
$ git clone https://github.com/mgoldchild/dotfiles.git
$ # bashとvimの設定をする

dockerコマンドの流れmemo

sh
$ docker search <image_name> # imageの検索
$ docker pull <image_id> # imageのDL
$ docker images # ローカルにあるimageの確認
$ docker run # imageからコンテナ起動
$ docker inspect # コンテナspecの確認
$ docker ps -a # コンテナの確認
$ docker attach # 起動中コンテナにアタッチ
$ docker exec # 起動中コンテナの編集
$ docker stop/kill # 起動中コンテナの停止
$ docker start # 停止中のコンテナのスタート
$ docker rm # コンテナの削除

wordpressの起動確認

sh
$ docker-machine ip
192.168.99.100
$ open http://192.168.99.100:8080

ファイルのコピーmemo

sh
$ eval $(docker-machine env default) # 別ターミナル使うとき
$ docker ps
1394bcba40e2        wordpress           "/entrypoint.sh apach"   7 minutes ago       Up 7 minutes        0.0.0.0:8080->80/tcp   sandbox_wordpress_1
df94ad96dbe7        mariadb             "docker-entrypoint.sh"   7 minutes ago       Up 7 minutes        3306/tcp               sandbox_mysql_1
$ docker cp FILENAME 1394bcba40e2:/ # FILENAMEをコンテナの/に入れる。

参考文献

http://qiita.com/kiida/items/059e34ea53c16e6bc9ec
http://hacknote.jp/archives/17376/
http://qiita.com/segawa/items/a8ba4af33ddf39eafa95
http://askubuntu.com/questions/505506/how-to-get-bash-or-ssh-into-a-running-container-in-background-mode
http://qiita.com/kooohei/items/d370701d6c39727334f3
http://qiita.com/gologo13/items/7e4e404af80377b48fd5

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1