Vagrantでは「Linux環境自体を一から構築して使う。扱いは通常のLinuxサーバに近い」という方針になる
Dockerでは「必要なイメージを組み合わせて環境を構築する。使い捨ての環境を手軽に導入できる」という方針になる
…というものだが、実例を見る方が早い
Windowsなら「Docker for Windows」、Macなら「Docker for Mac」をインストールする…が、Windows10 Home では使えない(Professionalにする必要がある)
「Docker Toolbox」なら Windows10 Home でも使える
Windows10マシンにDocker Toolbox を入れて個人用の開発環境を作る - Qiita
https://qiita.com/osuo/items/99a2b7413ce75f8217be
Docker Toolbox をインストール後、Docker Quickstart Terminal を起動する
この時点でVirtualBox上にLinuxサーバが起ち上がり、その中でDockerが使える状態になる
(「Oracle VM VirtualBox」を起動させると、「default」サーバが追加されて起動中になる)
以下で hello-world コンテナが実行される(動作確認用)
$ docker run hello-world
ベースとなるイメージが、Docker公式イメージとして利用できる
Apacheやnginxなど、よく使われるものはたいてい揃っている(公式以外のイメージもある)
$ docker run --name php -p 80:80 -d php:5.6-apache
$ docker-machine ip
192.168.99.100
ブラウザで http://192.168.99.100/
にアクセスする
$ docker exec -it php bash
# echo '<?php phpinfo();' > /var/www/html/index.php
起動時のオプションを増やしていけば、フォルダ同期やタイムゾーンの設定などもできる
Vagrantとは違い、コンテナを終了させるとデータも初期化される
データ保持をしたければフォルダ共有が必要
$ docker run --name php -v $PWD/docker/test/code:/var/www/html -p 80:80 -d php:5.6-apache
イメージに手を加えたものを、独自のイメージとして利用できる
Dockerfile(テキストファイル)さえ渡せば、他の人も同じ環境を再現できる
docker\php_create_file\Dockerfile
FROM php:5.6-apache
RUN touch /root/test1.txt
RUN touch /root/test2.txt
以下のようにして起動できる(docker/php_create_file
は Dockerfile
を置いた場所)
$ docker build -t php:create_file docker/php_create_file
$ docker run --name php -p 80:80 -d php:create_file
コンテナを複数立ち上げて連携させることができるが、Docker Compose を使えばまとめて管理できる
$ git clone git@github.com:terraport/docker-php-mysql.git
$ cd docker-php-mysql/docker
$ docker-compose build
$ docker-compose up -d