4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker コンテナの操作方法について

Last updated at Posted at 2018-04-24

カスタマイズする前に、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 attachexit した時点でコンテナが終了してしまいます。
(docker execexit しても、コンテナは稼働したままです)

通常の利用ならば、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 rundocker 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 が終了します。

quit-docker.png

4
5
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
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?