Docker初歩の初歩

目次

  1. Dockerとは
  2. インストール
  3. 動作確認
  4. 使い方
  5. フォルダ共有
  6. Dockerfile
  7. Docker Compose
  8. 活用

Dockerとは

「コンテナベースのアプリケーションを仮想化したもの」

「WindowsやMacで、Linux環境を動かせます」

Vagrantとは違うのか

Docker

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

イメージに手を加えたものを、独自のイメージとして利用できる
Dockerfile(テキストファイル)さえ渡せば、他の人も同じ環境を再現できる

docker\php_create_file\Dockerfile

FROM php:5.6-apache
RUN touch /root/test1.txt
RUN touch /root/test2.txt

以下のようにして起動できる(docker/php_create_fileDockerfile を置いた場所)

$ docker build -t php:create_file docker/php_create_file
$ docker run --name php -p 80:80 -d php:create_file

Docker Compose

コンテナを複数立ち上げて連携させることができるが、Docker Compose を使えばまとめて管理できる

$ git clone git@github.com:terraport/docker-php-mysql.git
$ cd docker-php-mysql/docker
$ docker-compose build
$ docker-compose up -d

活用

まとめ

Dockerなら「この案件はApache+PHP5で」「この案件はnginx+PHP7で」「この案件はRubyで」「この案件はnode.jsで」に対応できる!