Edited at

Dockerのインストール&操作方法(CentOS7.3)

More than 1 year has passed since last update.


環境


  • ホスト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 )ことで、シェルを操作できます。


参考リンク