Docker Engine インストール(CentOS 向け)
読む時間の目安: 4 分
CentOS 向けに Docker Engine を始めるには、前提条件を満たしているか を確認してから、インストール手順 に進んでください。
前提条件
OS 要件
Docker Engine をインストールするには保守対象の CentOS 7 または 8 が必要です。 古いバージョンはサポートもテストも行っていません。
centos-extras
リポジトリを有効にすることが必要です。
このリポジトリはデフォルトでは有効になっていますが、もし無効にしている場合は、もう一度有効に する必要があります。
overlay2
ストレージドライバーの利用が推奨されます。
古いバージョンのアンインストール
Docker のかつてのバージョンは、docker
あるいはdocker-engine
と呼ばれていました。
これがインストールされている場合は、関連する依存パッケージも含めアンインストールしてください。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum
を実行したときに、上のパッケージがインストールされていないと表示されれば OK です。
/var/lib/docker/
にはイメージ、コンテナー、ボリューム、ネットワークが含まれていて、それは保持されたまま残ります。
なお Docker Engine パッケージは、今はdocker-ce
と呼ばれます。
インストール手順
Docker Engine のインストール方法はいくつかあります。 必要に応じて選んでください。
-
たいていのユーザーは Docker のリポジトリをセットアップして、そこからインストールしています。 インストールやアップグレードの作業が簡単だからです。 この方法をお勧めします。
-
ユーザーの中には RPM パッケージをダウンロードし、手動でインストールしている方もいます。 アップグレードも完全に手動となります。 この方法は、インターネットにアクセスできない環境で Docker をインストールするような場合には有用です。
-
テスト環境や開発環境向けに、自動化された便利なスクリプトを使って Docker のインストールを行うユーザーもいます。
リポジトリを利用したインストール
新しいホストマシンに Docker Engine を初めてインストールするときは、その前に Docker リポジトリをセットアップしておくことが必要です。 これを行った後に、リポジトリからの Docker のインストールやアップグレードができるようになります。
リポジトリのセットアップ
yum-utils
パッケージをインストールします。
(このパッケージがyum-config-manager
ユーティリティーが提供されます。)
そして 安定版(stable)リポジトリを設定します。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
任意の作業
最新版(nightly)または テスト版(test)リポジトリの有効化
このリポジトリは上記の
docker.repo
ファイルに含まれていますが、デフォルトで無効になっています。 このリポジトリを 安定版(stable)リポジトリとともに有効にします。 以下のコマンドは 最新版 リポジトリを有効にします。$ sudo yum-config-manager --enable docker-ce-nightly
テスト版 チャネルを有効にする場合は、以下のコマンドを実行します。
$ sudo yum-config-manager --enable docker-ce-test
最新版 リポジトリ、 テスト版 リポジトリを無効にするには
yum-config-manager
コマンドに--disable
フラグをつけて実行します。 以下のコマンドは 最新版 リポジトリを無効にします。$ sudo yum-config-manager --disable docker-ce-nightly
Docker Engine のインストール
-
Docker Engine、containerd、Docker Compose の最新版をインストールします。 あるいは次の手順に行って、特定のバージョンをインストールします。
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
GPG 鍵を受け入れるかどうか問われたら、鍵の指紋が
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
に間違いないことを確認し、鍵を受け入れてください。複数リポジトリからの取得?
Docker リポジトリを複数有効にしていて、バージョン指定をせずに
yum install
によるインストール、またはyum update
によるアップデートを行うと、入手可能な最新版がインストールされます。 安定した版が必要である場合には、適切でない場合があります。このコマンドにより Docker がインストールされましたが、まだ起動はしていません。 グループ
docker
が生成されていますが、このグループには、デフォルトではまだユーザーが存在していない状態です。 -
特定バージョンの Docker Engine をインストールする場合は、リポジトリにある利用可能なバージョンの一覧を確認し、いずれかを選んでインストールします。
a. リポジトリ内にある利用可能なバージョンを並びかえて一覧表示します。 以下の例では出力結果をバージョン番号によりソートします。 一覧は最新のものが上に並びます。バージョンは簡略に表示されます。
$ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
この一覧内容は、どのリポジトリを有効にしているかによって変わります。 また利用している CentOS のバージョンに応じたものになります(この例では
.e17
というサフィックスにより示されるバージョンです)。b. 特定のバージョンをインストールする場合は、有効なパッケージ名を用います。 これはパッケージ名(
docker-ce
)に加えて、バージョン文字列(2項目め)の初めのコロン(:
)から初めのハイフン(-
)までを、ハイフンでつなげます。 たとえばdocker-ce-18.09.1
となります。$ sudo yum install docker-ce-<バージョン文字列> docker-ce-cli-<バージョン文字列> containerd.io docker-compose-plugin
このコマンドにより Docker がインストールされましたが、まだ起動はしていません。 グループ
docker
が追加されていますが、このグループには、デフォルトではまだユーザーが存在していない状態です。 -
Docker を起動します。
$ sudo systemctl start docker
-
Docker Engine が正しくインストールされているのを確認するため、
hello-world
イメージを実行します。$ sudo docker run hello-world
このコマンドはテスト用イメージをダウンロードし、コンテナー内で実行します。 コンテナーが起動すると、メッセージを表示して終了します。
こうして Docker Engine をインストールし、実行しました。
Docker コマンドの実行にはsudo
が必要になります。
続いて Linux のインストール後 に進み、非特権ユーザーでも Docker コマンドが実行できるように、またその他の追加の設定について見ていきます。
Docker Engine のアップグレード
Docker Engine をアップグレードするには、インストール手順 に従って、インストールしたい新たなバージョンを選んでください。
パッケージからのインストール
Docker リポジトリを利用した Docker インストールができない場合は、目的とするリリースの.rpm
ファイルをダウンロードして、手動でインストールする方法があります。この場合 Docker Engine をアップグレードするには、毎回新たな.rpm
ファイルをダウンロードして利用することになります
-
https://download.docker.com/linux/centos/ にアクセスして、インストールしている CentOS のバージョンを選択します。 そして
x86_64/stable/Packages/
を表示し、インストールしたい.rpm
ファイルをダウンロードします。メモ
最新版またはテスト版(プレリリース版)パッケージをインストールする場合は URL 内の
stable
をnightly
またはtest
に変更してください。 最新版とテスト版チャンネルを学ぶにはこちら。 -
Docker Engine をインストールします。 以下に示すパス部分は、Docker パッケージをダウンロードしたパスに書き換えます。
$ sudo yum install /path/to/package.rpm
Docker はインストールされましたが、まだ起動はしていません。 グループ
docker
が追加されていますが、このグループにはまだユーザーが存在していない状態です。 -
Docker を起動します。
$ sudo systemctl start docker
-
Docker Engine が正しくインストールされているのを確認するため
hello-world
イメージを実行します。$ sudo docker run hello-world
このコマンドはテスト用イメージをダウンロードし、コンテナー内で実行します。 コンテナーが起動すると、メッセージを表示して終了します。
こうして Docker Engine をインストールし、実行しました。
Docker コマンドの実行にはsudo
が必要になります。
続いて Linux のインストール後に進み、非特権ユーザーでも Docker コマンドが実行できるように、またその他の追加の設定について見ていきます。
Docker Engine のアップグレード
Docker Engine をアップグレードする場合は、新たなパッケージファイルをダウンロードして、インストール手順 をもう一度行います。
その際にはyum -y install
でなくyum -y upgrade
を実行します。
またパッケージには新しいものを指定します。
便利スクリプトを使ったインストール
Docker では get.docker.com において便利なスクリプトを提供しています。
これは Docker を開発マシンに対話形式をとらずにすばやくインストールするものです。
このスクリプトを本番環境において利用することはお勧めしませんが、環境に適したプロビジョニングを行うサンプルとして活用することはできます。
また リポジトリを利用したインストール における作業手順に従うことで、パッケージリポジトリを利用したインストール手順を身につけることができます。
このスクリプトのソースコードはオープンソースであり、GitHub 上のdocker-install
リポジトリ から入手可能です。
インターネットからスクリプトをダウンロードしたら、まず内容を十分確認してからローカル実行してください。 インストールにあたっては、この便利スクリプトの潜在的リスクや制限について、よく理解してください。
- スクリプトを実行するには
root
権限かsudo
が必要です。 - スクリプトは自動的に情報取得を行い、利用している Linux ディストリビューション、そのバージョン、そしてパッケージ管理システムの設定を行います。 なおこのスクリプトは、インストール時にパラメーターを受け渡すような設定はできないものになっています。
- スクリプトは依存パッケージや推奨パッケージをすべてインストールします。 その際にはインストールして良いかどうかを問いません。 したがって相当数のパッケージがインストールされることもあります。 これはホストマシンのその時点での設定によります。
- このスクリプトはデフォルトでは、最新版の Docker、containerd、runc をインストールします。 このスクリプトを使ってマシンをプロビジョニングした場合、Docker のメジャーバージョンへのアップグレードにより、予期しない結果を引き起こすことがあります。 本番環境へのデプロイを行う際には、必ず (メジャーバージョンへの) アップグレードをテスト環境においてテストしておいてください。
- このスクリプトは、既にインストールされている Docker をアップグレードするように設計されていません。 このスクリプトを利用して既存インストールをアップデートする際には、依存パッケージが思いどおりにアップデートされない場合があります。 それによって古いバージョンのまま利用する状況となる場合があります。
ヒント: スクリプト実行前のインストールステップ確認
本スクリプトの実行にあたって
DRY_RUN=1
オプションを指定すると、このスクリプトのインストールステップを確認することができます。$ curl -fsSL https://get.docker.com -o get-docker.sh $ DRY_RUN=1 sh ./get-docker.sh
以下は、このスクリプトを get.docker.com からダウンロードして実行することで、Linux 上に最新安定版をインストールする例です。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>
上により Docker がインストールされます。
Debian ベースのディストリビューションでは Docker が自動的に開始されます。
CentOS、Fedora、RHEL、SLES といったRPM
ベースの場合は手動での実行が必要となるため、systemctl
かservice
のいずれか適当なものを実行します。
上の出力メッセージに示されているように、デフォルトでは非 root ユーザーによる Docker コマンド実行はできません。
非特権ユーザーでの Docker 利用、rootless モードでのインストール?
このインストールスクリプトでは、Docker をインストールして利用するために
root
あるいはsudo
を用いた権限が必要です。 非 root ユーザーに Docker の利用を許可する場合は、Linux インストール後の作業 を参照してください。 Docker はroot
権限がなくてもインストールできます。 つまり rootless モードにより実行することができます。 rootless モードにより Docker を実行する手順については root ユーザー以外による Docker デーモン起動(rootless モード) を参照してください。
プレリリース版のインストール
Docker ではこの便利スクリプトを test.docker.com からも提供しています。
これを使って Linux 上にプレリリース版の Docker をインストールできます。
このスクリプトはget.docker.com
から入手するものと同等ですが、パッケージリポジトリ内の「テスト」チャネルから、パッケージマネージャーがインストールするものとして設定されています。
このスクリプトには Docker の安定版とプレリリース版(ベータ版、リリース候補版)が含まれています。
このスクリプトを利用すれば、新規リリース機能をいち早く利用できます。
またそういった機能が安定版として提供されるよりも前に、テスト環境において評価することができます。
Linux への Docker 最新版のインストールを「テスト」チャネルから行うには、以下を実行します。
$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh
<...>
便利スクリプトを使った後の Docker のアップグレード
便利スクリプトを使って Docker をインストールした場合、Docker のアップグレードはパッケージマネージャーを直接使って行ってください。 便利スクリプトは再実行する意味はありません。 ホストマシンにリポジトリが追加されているところに、このスクリプトを再実行したとすると、そのリポジトリを再度追加してしまうため、問題になることがあります。
Docker Engine のアンインストール
-
Docker Engine、CLI、Containerd、Docker Compose パッケージをアンインストールします。
$ sudo yum remove docker-ce docker-ce-cli containerd.io
-
ホスト上のイメージ、コンテナー、ボリューム、カスタマイズした設定ファイルは自動的に削除されません。 イメージ、コンテナー、ボリュームをすべて削除するには、以下を実行します。
$ sudo rm -rf /var/lib/docker $ sudo rm -rf /var/lib/containerd
編集した設定ファイルはすべて手動で削除する必要があります。
次のステップ
- Linux のインストール後 へ進む
- Docker を用いた開発 における各項目を参照してください。 Docker を使ったアプリケーションの構築方法を学びます。