dockerのコンテナ起動方法

単純な起動方法
# docker run centos /bin/echo 'hello world'
hello world
#
docker run
コンテナ内でプロセスを実行する
centos
レポジトリ名
/bin/echo 'hello world'
実行コマンド
TAGが異なるレポジトリがある場合の起動方法
# docker images
REPOSITORY TAG    IMAGE ID     CREATED       VIRTUAL SIZE
centos     latest 0c752394b855 2 weeks ago   124.1 MB
centos     6.4    539c0211cd76 15 months ago 300.6 MB
#
「:」以降にTAG名を記述し使い分ける。
# docker run centos:latest cat /etc/redhat-release
CentOS release 6.5 (Final)
# docker run centos:6.4 cat /etc/redhat-release
CentOS release 6.4 (Final)
#
この方法で実行すると指定したコマンドをフォアグラウンドで実行する。またこのコマンドが終了するとコンテナーが停止してしまう。
コンテナをバックグラウンドで実行する方法
# docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
fdeb793234d7636d3e8c952c200b1476bde04a1aa48b20e551027d7823befa4b
#
-d(-detach)オプションを使用することでデタッチモードで実行する。この際の出力はコンテナーのIDが出力されている。

docker上にcentos環境導入

ここレポジトリへのリンクがあります。イメージを検索することができます。「show」で「Official」を選択することもできます。また検索結果からタグや情報が記述されたページにも移動できます。

コマンドで「centos」を探す場合は

# docker search centos
NAME          DESCRIPTION                                   STARS OFFICIAL TRUSTED
centos        The official build of CentOS.                 190
tianon/centos CentOS 5 and 6, created using rinse instea... 23
(以下省略)
となります。出力には「OFFICIAL」があるのですが、WEBで「Official」を選択したことと同じになるオプションは発見できませんでした。
# docker search -s 180 centos
とすれば「STARS」が180以上の「centos」を探せます。またタグを表示するコマンドも発見できませんでした。

今回はcentosのイメージ(タグ名=latest)を導入します。

# docker pull centos:latest
Pulling repository centos
0c752394b855: Download complete
511136ea3c5a: Download complete
34e94e67e63a: Download complete
#
centosのイメージ(タグ名=latest)が導入されたことを確認するには
# docker images
REPOSITORY    TAG    IMAGE ID     CREATED     VIRTUAL SIZE
centos        latest 0c752394b855 2 weeks ago 124.1 MB
#
とします。

このイメージでbashを起動するには

# docker run -i -t centos /bin/bash
とします。オプションの内容は以下です。
run
コンテナ内でプロセスを実行する
-i
標準入力を開いたままにする
-t
コンテナの標準入力と擬似端末を接続
centos
レポジトリ名
/bin/bash
実行コマンド

dockerのインストール

ここを参考にインストールしました。事前にEPELレポジトリを有効にしておく必要があります。有効にする方法はこちらを参照してください。また(無関係の)dockerパッケージをインストールしている場合docker-ioパッケージとコンフリクトするそうです。

docker-ioをインストールするには以下のコマンドを実行します。今回は5個の関連パッケージもインストールされました。

# yum install docker-io
(途中省略)
Installed:
  docker-io.x86_64 0:0.11.1-4.el6

Dependency Installed:
  bridge-utils.x86_64 0:1.2-10.el6
  libcgroup.x86_64 0:0.40.rc1-5.el6_5.1
  lxc.x86_64 0:0.9.0-2.el6
  lxc-libs.x86_64 0:0.9.0-2.el6
  xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6

Complete!
#

この時点ではdockerデーモンはまだ起動していません。デーモンを起動します。

# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                           [  OK  ]
#

OS起動時にdockerを起動させたいなら

# chkconfig docker on
とします。

EPELリポジトリを追加

EPELはExtra Packages for Enterprise LinuxというエンタープライズLinux用の拡張パッケージです。このパッケージを使用するにはLinuxに対応するバージョンのepel-releaseをここから追加します。今回はx86_64アーキテクチャのCentOS6に追加するのでhttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmをインストールします。
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.BqKosi: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中...                ########################################### [100%]
1:epel-release           ########################################### [100%]
#