Docker CE の入手(CentOS 向け)

CentOS 用 Docker CE を始めるには、 前提条件を満たしているか を確認してから、 Docker をインストール してください。

前提条件

Docker EE を利用する方は

Docker エンタープライズ・エディション(Docker Enterprise Edition; EE)をインストールする場合は、このページではなくDocer EE の入手(CentOS 向け) に進んでください。

Docker EE の詳細を学ぶには、 Docker エンタープライズ・エディション をご覧ください。

OS 要件

Docker CE をインストールするには、保守対象の CentOS 7 が必要です。 古いバージョンはサポートもテストも行っていません。

centos-extras リポジトリを有効にすることが必要です。 このリポジトリはデフォルトでは有効になっていますが、もし無効にしている場合は、 もう一度有効に する必要があります。

古いバージョンのアンインストール

Docker のかつてのバージョンは、docker あるいは docker-engine と呼ばれていました。 これがインストールされている場合は、関連する依存パッケージも含めアンインストールしてください。

$ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine

yum を実行したときに、上のパッケージがインストールされていないと表示されれば OK です。

/var/lib/docker/ にはイメージ、コンテナ、ボリューム、ネットワークが含まれていて、それは保持されたまま残ります。 なお Docker CE パッケージは、今は docker-ce と呼ばれます。

Docker CE のインストール

Docker CE のインストール方法はいくつかあります。 必要に応じて選んでください。

  • たいていのユーザは Docker のリポジトリをセットアップ して、そこからインストールしています。 インストールやアップグレードの作業が簡単だからです。 この方法をお勧めします。

  • ユーザの中には RPM パッケージをダウンロードし、手動でインストールしている方もいます。 アップグレードも完全に手動となります。 この方法は、インターネットにアクセスできない環境で Docker をインストールするような場合には有用です。

  • テスト環境や開発環境向けに、自動化された 便利なスクリプト を使って Docker のインストールを行うユーザもいます。

リポジトリを使ったインストール

新しいホストマシンに Docker CE を初めてインストールするときは、その前に Docker リポジトリをセットアップしておくことが必要です。 これを行った後に、リポジトリからの Docker のインストールやアップグレードができるようになります。

リポジトリのセットアップ

  1. 必要なパッケージをインストールします。yum-utilsyum-config-manager ユーティリティを提供します。 また device-mapper-persistent-datalvm2devicemapper ストレージ・ドライバを利用するために必要です。

    $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
  1. 以下のコマンドを使って 安定版 (stable)リポジトリをセットアップします。エッジ版 (edge)や テスト版 (test)リポジトリからインストールしたい場合があったとしても、安定版リポジトリは常に必要となります。

$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
  1. 任意の作業 : エッジ版 (edge)リポジトリ、 テスト版 (test)リポジトリを有効にします。 このリポジトリは上記の docker.repo ファイルに含まれていますが、デフォルトで無効になっています。 このリポジトリを、 安定版 (stable)リポジトリとともに有効にします。

$ sudo yum-config-manager --enable docker-ce-edge
$ sudo yum-config-manager --enable docker-ce-test

エッジ版 リポジトリ、 テスト版 リポジトリを無効にするには yum-config-manager コマンドに --disable フラグをつけて実行します。 以下のコマンドは エッジ版 リポジトリを無効にします。

$ sudo yum-config-manager --disable docker-ce-edge

注釈

Docker 17.06 以降、安定版リリースは エッジ版 リポジトリと テスト版 リポジトリにもプッシュされるようになりました。

安定版とエッジ版のチャネルについて学ぶ

Docker CE のインストール

  1. Docker CE の最新版をインストールします。 あるいは次の手順に行って、特定のバージョンをインストールします。

$ sudo yum install docker-ce

注意

Docker リポジトリを複数有効にしていて、バージョン指定をせずに yuminstall によるインストール、または yumupdate によるアップデートを行うと、入手可能な最新版がインストールされます。 安定した版が必要である場合には、適切でない場合があります。

Docker リポジトリを追加した後に、パッケージインデックスの更新が初めて行なわれる場合には、GPG 鍵を受け入れるための確認が行われ、鍵の指紋(fingerprint)が表示されます。 鍵の指紋が間違いないものであることを確認したら、鍵を受け入れてください。 鍵の指紋は 060A61C51B558A7F742B  77AAC52FEB6B621E9F35 です。

Docker はインストールされましたが、まだ起動はしていません。 グループ docker が追加されていますが、このグループにはまだユーザが存在していない状態です。

  1. 本番環境では Docker CE の最新版を常に利用するようなことはせずに、特定バージョンをインストールするかもしれません。 そこで利用可能なバージョンの一覧を確認します。 以下の例では sort-r コマンドを使って、出力結果をバージョン番号によりソートします。 一覧は最新のものが上に並びます。 バージョンは簡略に表示されます。

注釈

以下の yumlist コマンドではバイナリ・パッケージしか表示されません。 ソース・パッケージもともに表示する場合は、パッケージ名から .x86_64 の部分を除いてください。

$ yum list docker-ce.x86_64 --showduplicates | sort -r docker-ce.x86_64 17.06.ce-1.el7.centos docker-ce-stable

この一覧内容は、どのリポジトリを有効にしているかによって変わります。 また利用している CentOS のバージョンに応じたものになります(この例では .e17 というサフィックスにより示されるバージョンです)。 この中から必要なバージョンを選んでください。 第2項目はバージョン番号を示しています。 バージョンの指定はバージョン文字列をすべて指定してもよいですが、省略する場合であっても 少なくとも最初のハイフンまで は指定するようにしてください。 第3項目はリポジトリ名です。 パッケージがどのリポジトリによって提供されているかを示しており、また後ろにある文字から、その安定度合い(安定版かどうか)を見ることができます。 バージョンを指定してインストールする場合は、パッケージ名の次にハイフン( - )をつけ、さらにバージョン文字列をつけたものを利用します。

注釈

バージョン文字列は、パッケージ名に加えて、バージョンの最初にハイフンが出てくるところまでの文字列を使うだけで構いません。 上の例の場合、有効なパッケージ名は docker-ce-17.06.ce になります。

$ sudo yum install docker-ce-<有効なバージョン文字列>
  1. Docker を起動します。

    $ sudo systemctl start docker
  1. docker が正しくインストールされているのを確認するため、 hello-world イメージを実行します。

    $ sudo docker run hello-world

    このコマンドはテスト用イメージをダウンロードし、コンテナ内で実行します。 コンテナが起動すると、メッセージを表示して終了します。

Docker CE がインストールされ、実行できました。 Docker コマンドの実行には sudo が必要になります。 続いて Linux のインストール後 に進み、非特権ユーザでも Docker コマンドが実行できるように、またその他の追加の設定について見ていきます。

Docker CE のアップグレード

Docker CE をアップグレードするには、まず sudoyummakecachefast を実行してください。 次に インストール手順 に従って、インストールしたい新たなバージョンを選んでください。

パッケージからインストール

Docker リポジトリを利用した Docker インストールができない場合は、目的とするリリースの .rpm ファイルをダウンロードして、手動でインストールする方法があります。この場合 Docker をアップグレードするには、毎回新たな .rpm ファイルをダウンロードして利用することになります。

  1. https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ にアクセスして、インストールしたい .rpm ファイルをダウンロードします。

注釈

最新版 パッケージをインストールする場合は URL 内の stableedge に変更してください。安定版と最新版チャンネルを学ぶにはこちら

  1. Docker CE をインストールします。 以下に示すパス部分は、Docker パッケージをダウンロードしたパスに書き換えます。

$ sudo yum install /path/to/package.rpm

Docker はインストールされましたが、まだ起動はしていません。 グループ docker が追加されていますが、このグループにはまだユーザが存在していない状態です。

  1. Docker を起動します。

    $ sudo systemctl start docker
  1. docker が正しくインストールされているのを確認するため、 hello-world イメージを実行します。

$ sudo docker run hello-world

このコマンドはテスト用イメージをダウンロードし、コンテナ内で実行します。 コンテナが起動すると、メッセージを表示して終了します。

Docker CE がインストールされ、実行できました。 Docker コマンドの実行には sudo が必要になります。 続いて Linux のインストール後 に進み、非特権ユーザでも Docker コマンドが実行できるように、またその他の追加の設定について見ていきます。

Docker CE のアップグレード

Docker CE をアップグレードする場合は、新たなパッケージ・ファイルをダウンロードして、インストール手順をもう一度行います。 その際には yum-yinstall でなく yum-yupgrade を実行します。 またパッケージには新しいものを指定します。

便利なスクリプトを使ったインストール

Docker では get.docker.comtest.docker.com において便利なスクリプトを提供しています。 これは Docker CE の安定版あるいはテスト版を、開発機にすばやく対話形式をとらずにインストールするものです。 このスクリプトのソースコードは docker-installリポジトリ にあります。 このスクリプトを本番環境において利用することはお勧めしません。 またこのスクリプトの潜在的リスクについては、十分理解した上で利用してください。

  • スクリプトを実行するには root 権限か sudo が必要です。 したがって十分に内容を確認してからスクリプトを実行するようにしてください。

  • スクリプトは自動的に情報取得を行い、利用している Linux ディストリビューション、そのバージョン、そしてパッケージ管理システムの設定を行います。 なおこのスクリプトは、インストール時にパラメータを受け渡すような設定はできないものになっています。 このことから時には、不適切な設定となる場合があります。 それは Docker の観点の場合もあれば、開発現場のガイドラインや標準に対しての場合もあります。

  • スクリプトはパッケージ・マネージャによって、依存パッケージや推奨パッケージをすべてインストールします。 その際にはインストールして良いかどうかを問いません。 したがって相当数のパッケージがインストールされることもあります。 これはホストマシンのその時点での設定によります。

  • ホスト・マシンに別の方法ですでに Docker をインストールしているのであれば、この便利スクリプトは使わないでください。

次の例は get.docker.com のスクリプトを使って、Linux 上に Docker CE の最新安定版をインストールするものです。 最新テスト版をインストールする場合は、 test.docker.com のスクリプトを利用してください。 テスト版の場合は、以下の各コマンドにおいて get と書かれている箇所をすべて test に置き換えてください。

警告

インターネットからスクリプトをダウンロードしたら、まず内容を十分確認してから実行してください。

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
<output truncated>
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like: sudo usermod -aG docker your-user
Remember that you will have to log out and back infor this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run containers which can be used to obtain root privileges on the docker host. Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface for more information.

Docker CE がインストールされました。DEB ベースのディストリビューションでは Docker が自動的に開始されます。RPM ベースの場合は手動での実行が必要となるため、 systemctlservice のいずれか適当なものを実行します。 上の出力メッセージに示されているように、デフォルトで非 root ユーザは Docker コマンドを実行できません。

便利なスクリプトを使った後の Docker アップグレード

便利スクリプトを使って Docker をインストールした場合、その後の Docker のアップグレードはパッケージ・マネージャを直接使って行ってください。 便利スクリプトは再実行する意味はありません。 ホストマシンにリポジトリが追加されているところに、このスクリプトを再実行したとすると、そのリポジトリを再度追加してしまうため、問題になることがあります。

Docker CE のアンインストール

  1. Docker CE パッケージをアンインストールします。

    $ sudo yum remove docker-ce
  1. ホスト上のイメージ、コンテナ、ボリューム、カスタマイズした設定ファイルは自動的に削除されません。 イメージ、コンテナ、ボリュームをすべて削除するには、以下を実行します。

$ sudo rm -rf /var/lib/docker

編集した設定ファイルはすべて手動で削除する必要があります。

次のステップ