LoginSignup
11
15

More than 5 years have passed since last update.

macでDockerを使う

Posted at

前提

  • Docker Toolbox がインストールされていること
  • Docker version 1.11.1
  • MySQL、PHPの各コンテナを立ち上げるところまで
    • pdo_mysqlは導入していないので、PHPからMySQLに接続できない

Docker Machine を作成する

$ docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

まずは Docker Mashine が起動していないことを確認

$ docker-machine create --driver virtualbox <マシーン名>
Creating CA: /<ディレクトリ>/.docker/machine/certs/ca.pem
Creating client certificate: /<ディレクトリ>/.docker/machine/certs/cert.pem
...省略

<マシーン名>は、以降「mydoc」とする

$ docker-machine ls
NAME    ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
mydoc   -        virtualbox   Running   tcp://xxx.xxx.xx.xxx:xxxx           v1.11.2

Docker Machine をストップする

$ docker-machine stop mydoc
Stopping "mydoc"...
Machine "mydoc" was stopped.

mydoc を指定しないとデフォルト(default)を設定となるので、エラーが出る
「Error: No machine name(s) specified and no "default" machine exists.」

$ docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

Docker Machine をスタートする

$ docker-machine start mydoc
Starting "mydoc"...
...省略
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
$ docker-machine env mydoc
set -gx DOCKER_TLS_VERIFY "1";
set -gx DOCKER_HOST "tcp://xxx.xxx.xx.xxx:xxxx";
set -gx DOCKER_CERT_PATH "/<ディレクトリ>/.docker/machine/machines/mydoc";
set -gx DOCKER_MACHINE_NAME "mydoc";
# Run this command to configure your shell: 
# eval (docker-machine env mydoc)

環境変数の設定

立ち上げのみであれば、下記のコマンドを打てば良い
ターミナル立ち上げる度に必要になるので、「.bash_profile」 に記載した方が良い

$ set -gx DOCKER_TLS_VERIFY "1";
$ set -gx DOCKER_HOST "tcp://xxx.xxx.xx.xxx:xxxx";
$ set -gx DOCKER_CERT_PATH "/<ディレクトリ>/.docker/machine/machines/mydoc";
$ set -gx DOCKER_MACHINE_NAME "mydoc";

set コマンドの設定が反映されているかを確認

$ env
DOCKER_TLS_VERIFY "1";
DOCKER_HOST "tcp://xxx.xxx.xx.xxx:xxxx";
DOCKER_CERT_PATH "/<ディレクトリ>/.docker/machine/machines/mydoc";
DOCKER_MACHINE_NAME "mydoc";

MySQL のコンテナを立ち上げる

公式サイトから、イメージ名を確認
(今回はMySQLの「5.7」にしました)

$ docker run --name <MySQLのコンテナ名> -e MYSQL_ROOT_PASSWORD=<ルートのパスワード> -d <イメージ名>:<タグ名>
Unable to find image 'mysql:5.7' locally
...省略
  • 「--name」がコンテナ名の指定
    • 今回は<MySQLのコンテナ名>は「mysql」とする
  • 「-e」がコンテナの中の環境変数の設定
  • 「-d」はデーモンのバックグラウンドコンテナで起動
    • 今回は<イメージ名>は「mysql」とする
    • 今回は<タグ名>は「5.7」とする
$docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
828ee5985328        mysql:5.7           "docker-entrypoint.sh"   About a minute ago   Up About a minute   3306/tcp            mysql

コンテナに bash で接続し、MySQL を確認

$ docker exec -ti mysql bash
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

exit して、MySQL は終了

PHP のコンテナを立ち上げる

公式サイトから、イメージ名を確認
(今回はPHPの「7-apache」にしました)

あらかじめ、下記のようなフォルダを作成しておく
「/<ディレクトリ>/mydoc/php」

以下、作成したディレクトリ内にて実行

$ docker run --name php -p 80:80 -v /<ディレクトリ>/mydoc/php:/var/www/html --link mysql:mysql -d <イメージ名>:<タグ名>
Unable to find image 'php:7-apache' locally
...省略
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
a2a6ff105e91        php:7-apache        "apache2-foreground"     50 seconds ago      Up 49 seconds       0.0.0.0:80->80/tcp   php
828ee5985328        mysql:5.7           "docker-entrypoint.sh"   15 minutes ago      Up 15 minutes       3306/tcp             mysql

「DOCKER_HOST」を確認し、ポートを80にしてアクセス
(ポートはデフォルト80なので、指定しなくても問題ない)
例)http://xxx.xxx.xx.xxx:80

この時、ファイルがないため、「Forbidden」となる
表示確認がしたい場合は、「/<ディレクトリ>/mydoc/php」に「index.php」を作成
とりあえず、phpinfoを表示させてみる

/<ディレクトリ>/mydoc/php/index.php
<?php
phpinfo();

再度アクセスする

参考

公式サイト
Docker Machine を使って VirtualBox に Dockerホストを立てる

11
15
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
11
15