カスタマイズする前に、Docker イメージの操作を簡単に確認します。
Docker イメージを探す
まずは Docker イメージを探してみます。
下記のコマンドは Docker Hub で探すのと同じ結果が返ってきます。
> docker search php
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
php While designed for web development, the PHP … 3330 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 547 [OK]
phpmyadmin/phpmyadmin A web interface for MySQL and MariaDB. 503 [OK]
php-zendserver Zend Server - the integrated PHP application… 140 [OK]
eboraas/apache-php PHP5 on Apache (with SSL support), built on … 136 [OK]
webdevops/php-nginx Nginx with PHP-FPM 100 [OK]
adminer Database management in a single PHP file. 89 [OK]
webdevops/php-apache Apache with PHP-FPM (based on webdevops/php) 61 [OK]
nazarpc/phpmyadmin phpMyAdmin as Docker container, based on off… 57 [OK]
phpunit/phpunit PHPUnit is a programmer-oriented testing fra… 57 [OK]
webdevops/php-apache-dev PHP with Apache for Development (eg. with xd… 50 [OK]
osixia/phpldapadmin phpLDAPadmin with easy configuration via env… 44
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 33 [OK]
tetraweb/php PHP 5.5, 5.6, 7.0, 7.1 for CI and running te… 28 [OK]
webdevops/php PHP (FPM and CLI) service container 19 [OK]
wodby/drupal-php PHP for Drupal 18 [OK]
centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 12
phpdocker/phpdocker PHP, MariaDB, Composer, PHP CodeSniffer. 10 [OK]
clinta/phpipam phpIPAM web IP address management applicatio… 10 [OK]
graze/php-alpine Smallish php7 alpine image with some common … 9 [OK]
antage/apache2-php5 Docker image for running Apache 2.x with PHP… 7 [OK]
appsvc/php Azure App Service php dockerfiles 5 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10 ubuntu-16-nginx-php-phpmyadmin-mariadb-10 4 [OK]
lephare/php PHP container 4 [OK]
isotopab/php Docker PHP 0 [OK]
Docker イメージを起動する
ローカルに Docker イメージがない場合は、指定したイメージをダウンロードしてから起動されます。
今回は公式の PHP の Docker イメージを利用します。
複数あるイメージの中から 5.6.35-apache-jessie
を選択します。これは、PHP のバージョンが 5.6.35 で Apache が同梱されている Debian Jessie のイメージになります。
docker run は Docker イメージからコンテナを新規作成して稼働します。コマンドオプションの -d
はコンテナをバックグラウンドで稼働させます。
> docker run -d php:5.6.35-apache-jessie
Unable to find image 'php:5.6.35-apache-jessie' locally
5.6.35-apache-jessie: Pulling from library/php
f2b6b4884fc8: Pull complete
8db887c45800: Pull complete
6e0e41c52c70: Pull complete
fbc9ac078c49: Pull complete
c4c6f6be7488: Pull complete
a28db8adaf05: Pull complete
61afa9c0aff1: Pull complete
a30b1659c046: Pull complete
b04c4f5caef7: Pull complete
98d401b50a56: Pull complete
bf457562a4ec: Pull complete
4ed2d6d10d33: Pull complete
51a58424d64c: Pull complete
3b15601614ab: Pull complete
Digest: sha256:14a48377c2cecaaf5daed21d328c693d07ade6d0effef5526d2340f255df178c
Status: Downloaded newer image for php:5.6.35-apache-jessie
ダウンロードした Docker イメージが起動されたコンテナの状態を確認します。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2cdea8c94d0 php:5.6.35-apache-jessie "docker-php-entrypoi…" About a minute ago Up About a minute 80/tcp heuristic_chatterjee
heuristic_chatterjee
は Docker イメージ php:5.6.35-apache-jessie
のコンテナ名になります。コンテナ名は指定することができます。指定しない場合は Docker が自動的に命名します。今回は Docker が自動的に命名したコンテナ名になります。
コンテナに接続する
docker exec にコマンドオプションと接続するコンテナ名 (今回は heuristic_chatterjee
) を指定して、コンテナ名のコマンド /bin/bash を実行します。
> docker exec -it heuristic_chatterjee /bin/bash
root@e2cdea8c94d0:/var/www/html# uname -a
Linux e2cdea8c94d0 4.9.87-linuxkit-aufs #1 SMP Wed Mar 14 15:12:16 UTC 2018 x86_64 GNU/Linux
root@e2cdea8c94d0:/var/www/html# pwd
/var/www/html
コンテナの接続は exit
で切断できます。また、exit
した後もコンテナが稼働していれば、上記のコマンドで接続できます。
root@e2cdea8c94d0:/var/www/html# exit
exit
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2cdea8c94d0 php:5.6.35-apache-jessie "docker-php-entrypoi…" 28 minutes ago Up 28 minutes 80/tcp heuristic_chatterjee
> docker exec -it heuristic_chatterjee /bin/bash
root@e2cdea8c94d0:/var/www/html#
docker exec
に似たコマンドに docker attach があります。docker exec
との違いは、docker attach
は exit
した時点でコンテナが終了してしまいます。
(docker exec
は exit
しても、コンテナは稼働したままです)
通常の利用ならば、docker exec
の方が意図せずにコンテナが停止することはないので、こちらのコマンドの使用をお勧めします。
コンテナを停止する
docker stop コマンドで停止したいコンテナ名を指定する。
> docker stop heuristic_chatterjee
heuristic_chatterjee
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2cdea8c94d0 php:5.6.35-apache-jessie "docker-php-entrypoi…" 30 minutes ago Exited (0) 7 seconds ago heuristic_chatterjee
コンテナを起動する
docker start でコンテナ名を指定すると、該当のコンテナが起動します。
> docker start heuristic_chatterjee
heuristic_chatterjee
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2cdea8c94d0 php:5.6.35-apache-jessie "docker-php-entrypoi…" 36 minutes ago Up 5 seconds 80/tcp heuristic_chatterjee
docker run
と docker start
の違いは、docker run
する度に指定した Docker イメージからコンテナを生成します。docker start
は既に生成されたコンテナを稼働させるという違いがあります。
コンテナを削除する
コンテナを削除する前に、コンテナが稼働しているか確認します。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2cdea8c94d0 php:5.6.35-apache-jessie "docker-php-entrypoi…" 36 minutes ago Up 5 seconds 80/tcp heuristic_chatterjee
稼働していれば、コンテナを停止します。
> docker stop heuristic_chatterjee
heuristic_chatterjee
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2cdea8c94d0 php:5.6.35-apache-jessie "docker-php-entrypoi…" About an hour ago Exited (0) 5 seconds ago heuristic_chatterjee
停止しているのを確認したら、削除したいコンテナ名を指定して docker rm コマンドで削除します。
> docker rm heuristic_chatterjee
heuristic_chatterjee
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker rm
でコンテナを削除しても、Docker イメージは残っています。ですので、再び docker run -d php:5.6.35-apache-jessie
を実行すれば、(おそらく異なる名称で) 新たにコンテナが生成されて稼働します。
Docker を終了する
Docker そのものを終了したい場合は、Windows だとタスクバーから Quit Docker を選択すれば、Docker が終了します。