
【Docker基礎】さまざまなコンテナ
Docker の魅力のひとつは、あらゆるソフトウェアをコンテナ化できることです。Web サーバやデータベース用のコンテナはもちろん、単に Linux OS だけを詰め込んだコンテナや、プログラミング言語の実行環境を備えたコンテナなど、その種類は多岐にわたります。
ここでは、いくつか代表的なイメージと、それらの起動時に使われるオプションや引数の例を紹介します。すでに Docker のコマンドがひととおり使えるようになっていれば、こうしたコンテナを「作っては捨てる」を繰り返しながら、簡単に試すことができるはずです。

Linux OS のみ入ったコンテナ
純粋な Linux OS をコンテナとして動かすことで、OS レベルでの実験やツールの実行を行うことができます。これらのコンテナは シェル操作 を前提とするため、-d
(デタッチドモード)は通常使わず、代わりに -it
(インタラクティブモード + TTY)を指定し、バッシュなどのシェルで操作する場合が多いです。
イメージ名 | コンテナの内容 | 実行によく使われるオプションと引数 |
---|---|---|
ubuntu | Ubuntu | -it を指定、引数に /bin/bash などのシェルコマンドを指定 |
centos | CentOS | 同上 |
debian | Debian | 同上 |
fedora | Fedora | 同上 |
busybox | BusyBox | 同上(最小限のシェル環境。/bin/sh など) |
alpine | Alpine Linux | 同上(超軽量の Linux ディストリビューション) |
実行例(Ubuntu コンテナに入る)
docker run -it ubuntu /bin/bash
ポイント
- これで Ubuntu のシェルにログインした状態になる。
exit
コマンドで出ると、そのコンテナは終了する(デフォルト設定)。
Web サーバやデータベースサーバ用のコンテナ
Web サーバー(Apache / Nginx)や、データベース管理ソフト(MySQL / PostgreSQL / MariaDB)などは、ネットワーク通信を前提として動作するため、-p
(ポートマッピング)を指定するのが典型的です。また、Web サーバや DB サーバは常時動かしておきたいことが多いので、-d
(バックグラウンド)で起動するケースがほとんどです。
イメージ名 | 内容 | 実行によく使われるオプションと引数 |
---|---|---|
httpd | Apache Webサーバ | -d (バックグラウンド), -p (ポートマッピング) |
nginx | Nginx Webサーバ | 同上 |
mysql | MySQL DB | -d (バックグラウンド), -e MYSQL_ROOT_PASSWORD=... (rootパスワード指定) |
postgres | PostgreSQL | -d , -e POSTGRES_PASSWORD=... |
mariadb | MariaDB | -d , -e MYSQL_ROOT_PASSWORD=... |
実行例(Nginx をバックグラウンドで動かす)
docker run -d -p 8080:80 --name my-nginx nginx
ポイント
-p 8080:80
でホストの 8080 番ポートにアクセスすると、コンテナの 80 番ポートへ転送される。--name my-nginx
でコンテナ名を指定
プログラムの実行環境やその他ソフトウェア
プログラミング言語や、クラウドアプリケーションなどの実行環境が、公式イメージとして数多く提供されています。たとえば Java(openjdk)や Python、PHP、Ruby、Node.js などはもちろん、WordPress や Redmine などのアプリも “そのままコンテナ化” されたイメージが用意されています。
イメージ名 | 内容 | 実行によく使われるオプションと引数 |
---|---|---|
openjdk | Javaの実行環境 | -d は付けずに、引数で java コマンドを指定してツールを実行 |
python | Pythonの実行環境 | 同上。引数に python コマンドなどを指定 |
php | PHPの実行環境 | Webサーバ入り or コマンドのみのものなど、タグで区分 |
ruby | Rubyの実行環境 | 同上。Webサーバ入り or コマンドのみなど |
perl | Perlの実行環境 | 同上。perl コマンドを引数に渡して実行 |
gcc | C/C++のコンパイラ | gcc コマンドを実行したり、短期ジョブとして使う |
node | Node.js | JSアプリを実行する際に便利 |
registry | Dockerレジストリ | -d バックグラウンド + -p ポートマッピング |
wordpress | WordPress CMS | -d バックグラウンド、-p ポート指定、MySQL接続用の環境変数指定 |
nextcloud | NextCloud | -d バックグラウンド、-p ポート指定 |
redmine | Redmine (チケット管理) | -d バックグラウンド、-p ポート指定。DB (MySQL/Postgres) が必要 |
実行例(Node.js のコンテナを起動して対話的に JS を実行)
docker run -it node
ポイント
-it
でコンソールに入り、node
コマンドを入力すれば JS インタープリタとして使える。-d
を付けないのは、バックグラウンドではなく 対話的に操作したいから
まとめ
- Linux OS のみのコンテナ
・Ubuntu / CentOS / Debian / Alpine など各種ディストリビューション
・-it
オプションを付け、シェル(/bin/bash など)を実行して操作する。 - Webサーバ / DBサーバ用コンテナ
・Apache (httpd), nginx, MySQL, PostgreSQL など
・-d
バックグラウンド実行 +-p
(ポート) + DB系は-e
(環境変数)でパスワードなど指定 - プログラミング言語 / その他ソフトウェア
・Java / Python / Node.js / WordPress / Redmine など公式イメージが多数
・用途に合わせて-d
or-it
を使い分ける。
Docker Hub にはこれら以外にも非常に多くのイメージが存在し、まさに ソフトウェアの数だけコンテナがある といっても過言ではありません。最初は興味を持ったものから試してみて、「作っては捨てる」 を実践しながら Docker の扱いに慣れていきましょう。