連載
» 2014年06月10日 18時00分 UPDATE

いまさら聞けないDocker入門(2):ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方 (2/3)

[大瀧隆太,クラスメソッド株式会社]

Dockerイメージをダウンロードする「docker pull」コマンド

 Dockerイメージは、コンテナーを実行するために必要な全てのディレクトリ/ファイルを含むアーカイブと、コンテナーのメタ情報を持ちます。一から自作することも可能ですが手間が掛かるので、Linuxディストリビューションごとに公開されている汎用のベースイメージ(Pre-built Image)を流用することが多いです。

 多くのベースイメージはDocker Hub Registryで公開されていますので、そこからダウンロードするのが一般的です。

docker2_02.png

 DockerレジストリからのDockerイメージのダウンロードは、docker pullコマンドを実行します。どのイメージにするかは、引数で{イメージ名}(Repository)と{タグ名}(Tag)で選択します。{タグ名}はGitなどと同様、Dockerイメージのバージョンを示します。

$ docker pull {イメージ名}:{タグ名}
書式

 初期設定では、Dockerレジストリとして「Docker Hub Registry」にアクセスするようになっており、Docker Hub Registryで公開されている多くのベースイメージには、最新版(latest)のタグが設定されています。

docker2_06.jpg Docker Hub Registry

 {イメージ名}はDocker Hub Registryで好みのイメージを検索し、{タグ名}は特別な要件がなければ、latestを指定しましょう。

 ここでは例として、Ubuntu Linux Dockerイメージの最新版をダウンロードします。

$ docker pull ubuntu:latest
Pulling repository ubuntu
99ec81b80c55: Download complete
511136ea3c5a: Download complete
5e66087f3ffe: Download complete
4d26dd3ebc1c: Download complete
d4010efcfd86: Download complete
$

 ダウンロードしたDockerイメージは、レジストリのイメージと区別するために「ローカルキャッシュ」と呼ぶこともあります。このローカルキャッシュからDockerコンテナーを実行します。

ダウンロードしたDockerイメージの一覧を確認する「docker images」コマンド

 ダウンロードしたDockerイメージ(ローカルキャッシュ)の一覧は、docker imagesコマンドで確認します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              99ec81b80c55        4 weeks ago         266 MB
$

補足:Dockerレジストリのイメージ名

 Dockerレジストリのイメージ名は、通常「ユーザー名/イメージ名」と先頭にユーザー名付け/で区切る形式と定められています。上記のubuntuのように、ユーザー名を持たないイメージはDocker Hubでは「トップレベルリポジトリ」と呼ばれ、Docker公式のものを指します(公式のDockerイメージにも、ユーザー名が付いているものがいくつかあります)。


Dockerコンテナーを作成・実行する「docker run」コマンド

 DockerイメージからDockerコンテナーを作成、実行してみましょう。docker runコマンドで、コンテナーの新規作成と実行の両方を行います。

docker2_03.png
$ docker run [オプション] [--name {コンテナー名}] {イメージ名}[:{タグ名}] [コンテナーで実行するコマンド] [引数]
書式

 タグ名は省略できます。--nameオプションおよびコンテナー名を省略すると、英単語を組み合わせたランダムなコンテナー名がDockerコンテナーに設定されます。

主な[オプション]

-d:バックグラウンドで実行する(後述)。既定では、コンテナーをフォアグラウンドで実行するため、Webサーバーやアプリケーションサーバーなど常時実行するコンテナーで指定

-i:コンテナーの標準入力を開く。/bin/bashなどでコンテナーを操作する際に指定

-t:tty(端末デバイス)を確保する。/bin/bashなどでコンテナーを操作する際に指定

-p {ホストのポート番号}:{コンテナーのポート番号}:Dockerサーバーのホストとポートマッピングを構成

ubuntuイメージからubuntu1コンテナーを作ってみる

 今回はお試しとしてubuntuイメージからubuntu1コンテナーを作成、端末を開きbashを実行してみます。

$ docker run -it --name ubuntu1 ubuntu /bin/bash
root@f66e8ee71dab:/#

 コンテナーでbashが実行され、プロンプトが表示されました。コンテナーを新規作成したにもかかわらず、ほとんど一瞬でコンテナーが起動しました。

 この原因としては、Dockerコンテナーに含まれるディレクトリ/ファイルは元となるDockerイメージの差分のみが管理されることからコンテナー作成時のファイルコピーがほとんどないこと、ハイパーバイザー型の仮想マシンのようなOSの起動処理が不要なことが挙げられます。

 これでコンテナー内で任意の操作ができます。今回は、Webサーバーの「nginx」をコンテナーにインストールしてみます。

root@f66e8ee71dab:/# apt-get install -y nginx
  :(略)
root@f66e8ee71dab:/# dpkg -l nginx
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture      Description
+++-=================================-=====================-=====================-=======================================================================
ii  nginx                             1.4.6-1ubuntu3        all                   small, powerful, scalable web/proxy server
root@f66e8ee71dab:/#

 一通り操作したら、[Ctrl]+[d]キーでbashプロセスを終了しましょう。プロセスの終了とコンテナーの停止は連動するため、この時点でコンテナーubuntu1は停止状態になります。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。