環境
- ホストOS:CentOS 7.3-1611 64bit Minimal
- Docker:1.12.6, build 85d7426/1.12.6
セットアップ
インストール
CentOS7の場合、yum一発で簡単にインストールできます。
$ sudo yum -y install docker
バージョンの確認
インストールできたかどうか、バージョンを確認してみます。
$ docker --version
Docker version 1.12.6, build 85d7426/1.12.6
バージョンが表示されているため、インストールに成功しています。
サービスの開始・自動起動
Dockerサービスの開始と自動起動の設定を行います。
# Dockerを開始する
$ sudo systemctl start docker
# OSの起動時にDockerが自動で起動するようにする
$ sudo systemctl enable docker
sudo
なしでDockerコマンドを実行できるようにする
インストール直後、Dockerコマンドは sudo
を付けないと実行できないようになっています。
そこで、こちらの記事の通りに設定し、 sudo
なしでDockerコマンドを実行できるようにします。
# dockerグループを作成する
$ sudo groupadd docker
# ログイン中のユーザーをdockerグループに追加する
$ sudo gpasswd -a $USER docker
# Dockerを再起動する
$ sudo systemctl restart docker
# exitして再ログインすると反映される
$ exit
ここから先は Dockerコマンドに sudo
を付けません。
操作方法
イメージのダウンロード
まず、コンテナの元となるイメージをダウンロードします。
$ docker pull {ユーザー名}/{イメージ名}
公式イメージの場合、ユーザー名はありません。
# 例:ubuntuの公式イメージをダウンロードする
$ docker pull ubuntu
イメージ一覧の表示
ダウンロードしたイメージの一覧を表示します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu latest 20c44cd7596f 3 weeks ago 122.8 MB
ubuntuが表示されているため、ダウンロードに成功しています。
コンテナの作成・実行
イメージをダウンロードしたら、それを元にコンテナを作成して実行します。
$ sudo docker run ({オプション}) {ユーザー名}/{イメージ名} {コマンド}
# 例:ubuntuのコンテナを作成して実行し、シェルを操作する
$ docker run -it ubuntu /bin/bash
一瞬でubuntuが起動すると思います。コンテナ、すごいです。
コンテナの抜け方
Ctrl + p, Ctrl + qでコンテナを実行したままシェル操作などを抜けます。
exit
コマンドで抜けるとコンテナが停止します。
コンテナの各操作
コンテナ一覧の表示
# 実行中のコンテナのみ表示する
$ docker ps
# 停止中のコンテナも含めて表示する
$ docker ps -a
コンテナの操作
実行中のコンテナのみ操作できます。
$ docker attach {コンテナ名} or {コンテナID}
コンテナの開始
$ docker start {コンテナ名} or {コンテナID}
コンテナの停止
$ docker stop {コンテナ名} or {コンテナID}
コンテナの削除
停止中のコンテナのみ削除できます。
$ docker rm {コンテナ名} or {コンテナID}
コンテナの一括削除
停止中の全コンテナを一括で削除します。
$ docker rm $(docker ps -aq)
docker run
の主なオプション
オプション | 略 | 説明 |
---|---|---|
-d | detached | コンテナをバックグラウンド(デタッチド・モード)で実行する |
-i | input | コンテナの標準入力を開く |
-t | tty | コンテナの疑似端末を確保する |
-p {ホスト側ポート}:{コンテナ側ポート} | port | コンテナのポートをホスト側に公開する(ポートフォワーディング) |
-v {ホスト側ディレクトリ}:{コンテナ側ディレクトリ} | volume | ホストのディレクトリをコンテナ側にマウントする |
-h {ホスト名} | host | コンテナのホストに名前を付ける |
--rm | remove | コンテナの終了時に削除する |
--name={コンテナ名} | name | コンテナに名前を付ける |
--link="{コンテナ名} or {コンテナID}” | link | 他のコンテナへのリンクを追加する(非推奨) |
-i
と -t
を組み合わせる( -it
)ことで、シェルを操作できます。