CentOS7へのDockerのインストール(Docker CE版)


 2016年までDockerは、dockerやdocker-engineという名前のパッケージをインストールして利用していました。

 2017年初めにDocker CE(商用向けはDocker EE)がリリースされまして、パッケージ名はdocker-ce(Docker EEはdocker-ee)に変わりました。

 本記事はCentOSにDocker CEをインストールする手順をご紹介しております。

 インストール手順はdockerやdocker-engineの頃とそれほど大きな変更はありませんが、バージョン管理体系などが新しくなってますので、そのあたりも合わせてご紹介いたします。

 

バージョン管理体系の変更点について

 Docker CEリリース以前のDockerのバージョンはx.xx.x(例1.13.1)のように連番で管理されていましたが、Docker CEからはnn.xx.xxというフォーマットに変わりました。nnの部分は西暦の下2桁が入ります。例えば17.12.01という感じです。

 また、stable版(安定版)とedge版の2つの製品を選択できるようになっています。

 stable版は基本的に3ヵ月毎にバージョンアップします。3ヵ月の間にパッチが発行される場合もあります。最新機能よりも安定性をお求めの方におすすめです。

 多少のバグは我慢するから最新版を試したいという方のために用意されているのが、もう一つのedge版です。こちらは基本的に1ヵ月毎にリリースされます。最新機能をすぐに体験してみたい方は挑戦してみるのも宜しいかと思います。

 本記事ではデフォルト設定時に選択されるstable版のインストール手順をご紹介します。

■ 本記事の目次に戻る ■

CentOS7へのDocker CEのインストール

インストールを始める前に

 対象のコンピュータにDockerがインストールされていない場合は関係ありませんので呼び飛ばしていただいて問題ありません。

 dockerやdocker-engineをお使いだった方が、Docker CEにアップグレードする場合の注意点になります。

 Docker CEのインストールは、まず現在インストールされているDockerをアンインストールすることから始まります。

 これによってDocker関連のバイナリファイルが削除されます。その状態でDocker CEをインストールすることになります。

 ここで心配になるのが、今まで利用していたDockerイメージやコンテナ、Dockerボリュームなどご自分で作成したリソースがそのまま利用可能かについてだと思います。

 公式ドキュメントには「/var/lib/docker/以下は保存されます」と記載されているのですが、「上位互換性があります」という記述は見当たりませんでした。もし記述があったとしても、トラブル時の責任はだれも取ってくれませんので意味ないのですが。

The contents of /var/lib/docker/, including images, containers, volumes, and networks, are preserved.
Docker公式ドキュメントより引用

 ですので、アップグレードする前にバックアップを取得するか、別のコンピュータを準備して、それにDocker CEを新規にインストールした後、現行のDocker環境の内容を移行するなど、慎重に対応された方がよろしいかと思います。

 公式ドキュメントの内容を信じて行ってみるのも良いと思いますが、その場合でも事前バックアップは行った方がよいと思います。

Dockerのインストール作業項目

インストールは以下の流れで行います。

1. インストール対象マシンの条件確認
2. Docker CEインストール
3. Docker CEの起動/停止/再起動
4. Docker CEの自動起動
5. 動作確認
6. Docker管理ユーザのセットアップ

インストール方法としては以下の3種類用意されています。

・yumコマンドでのインストール
・rpmファイルからのインストール
・シェルスクリプト(Docker提供)を使用したインストール

 本記事ではこの3つの中では一番標準的なyumコマンドでのインストールについて説明します。

■ 本記事の目次に戻る ■

1. インストール対象マシンの条件確認

 一番重要なのは、インストール対象マシンがインターネットに接続されていることです。

 その他の条件に関しては、Docker公式ドキュメントには具体的な記載は見つけられませんでした。

 OSの必要条件としては以下の記載があります。

To install Docker CE, you need a maintained version of CentOS 7. Archived versions aren’t supported or tested.
Docker公式ドキュメントより引用

 保守されているバージョンである必要があるとのことですが、実際よくわかりませんね。

 ここは私の実績情報を記載することにいたします。随時更新する予定ですのでご利用ください。

インストールできたOS

OS名称 カーネル Docker
CentOS 7.2(1511) 3.10.0-327.22.2 17.12.1-ce
CentOS 7.4(1708) 3.10.0-693 17.12.1-ce
     

■ 本記事の目次に戻る ■

2. Docker CEインストール

 インストールには管理者権限が必要です。root、もしくはsudoコマンドをご利用ください。以下はrootを使用して行う手順になります。

2.1 旧バージョンのアンインストール

 以下を実行して古いDockerおよびその関連パッケージを削除します。

# yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
2.2 必要パッケージのインストール

 以下のパッケージをインストールします。

  • yum-utils
  • device-mapper-persistent-data
  • lvm2

 以下のコマンドを実行してインストールします。

# yum install -y yum-utils device-mapper-persistent-data lvm2
2.3 必要リポジトリファイルのインストール

 以下を実行してリポジトリファイルを入手します。

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 以下の濃い青のファイルが作成されます。

# ls -l /etc/yum.repos.d/
 -rw-r--r--. 1 root root 1664 12月 9 2015 CentOS-Base.repo
 -rw-r--r--. 1 root root 1309 12月 9 2015 CentOS-CR.repo
 -rw-r--r--. 1 root root 649 12月 9 2015 CentOS-Debuginfo.repo
 -rw-r--r--. 1 root root 630 12月 9 2015 CentOS-Media.repo
 -rw-r--r--. 1 root root 1331 12月 9 2015 CentOS-Sources.repo
 -rw-r--r--. 1 root root 1952 12月 9 2015 CentOS-Vault.repo
 -rw-r--r--. 1 root root 290 12月 9 2015 CentOS-fasttrack.repo
 -rw-r--r-- 1 root root 2424 3月 17 05:46 docker-ce.repo 

 上のdocker-ce.repoが入手したファイルです。

2.4 Docker CEのインストール

 以下のコマンドを実行してDocker CEをインストールします。このコマンドでは、現時点で最新のDocker CEがインストールされます。

# yum install docker-ce

 途中で数回入力待ちになりますが、全て「y」を入力してください。「n」を入力することで途中でインストールをキャンセル可能です。

 私の環境ではここまで10分も掛からない程度で終わりました。

■ 本記事の目次に戻る ■

3. Docker CEの起動/停止/再起動

 作業には管理者権限が必要です。root、もしくはsudoコマンドをご利用ください。以下はrootを使用して行う手順になります。

3.1 Docker CEの起動

 インストールが完了しましたら、以下のコマンドにてDockerを起動します。

# systemctl start docker

 起動後に、以下のコマンドにて正常に起動されているか確認します。

# systemctl status docker

 正常に起動された場合は以下のように出力されます。

● docker.service - Docker Application Container Engine
 Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
 Active: active (running) since 火 2016-07-12 11:29:27 JST; 3 days ago
   <<以下略>>

「active (running)」の部分を確認してください。

 activeになっていない場合は、その原因が表示されていると思いますので、対応が必要になります。

3.2 Docker CEの停止

 Dockerを停止する場合は以下のコマンドを実行します。

# systemctl stop docker

 停止したことを確認します。

# systemctl status docker

 停止した場合は以下のように出力されます。

● docker.service - Docker Application Container Engine
 Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
 Active: inactive (dead)
   <<以下略>>

「inactive (dead)」の部分を確認してください。

3.3 Docker CEの再起動

 Dockerを再起動する場合は以下のコマンドを実行します。

# systemctl restart docker

 Docker本体の設定を変更した場合は、Dockerの再起動が必要になる場合がありますので、Dockerの再起動でも、Dockerの停止/起動でも、お好みで行ってください。

■ 本記事の目次に戻る ■

4. Docker CEの自動起動

 Dockerの初期設定では、OS起動時にDockerは自動起動されません。
 よって、自動起動させたい場合は、以下のコマンドで自動起動をするように設定してください。

# systemctl enable docker

 念のため、以下のコマンドで自動起動する設定になっているか確認しましょう。

# systemctl status docker

 自動起動するように設定された場合は以下のように出力されます。
 2行目の「/usr/lib/systemd/system/docker.service」の次が「enabled;」になっていれば大丈夫です。

● docker.service - Docker Application Container Engine
 Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
 Active: active (running)
   <<以下略>>

 ちなみに、自動起動をやめる場合には、以下のコマンドを実行してください。

# systemctl disable docker

 

■ 本記事の目次に戻る ■

5. 動作確認

 Dockerを起動させた状態で、以下のコマンドを実行してください。

# docker images

 これは、Dockerホストのローカルに格納されている利用可能なDockerイメージの一覧を表示するコマンドです。

 Dockerをインストールした直後の状態ですと、ヘッダーのみでなにも表示されません。

 動作確認のためにDockerHubからCentOSのDockerイメージを入手してみましょう。

 以下のコマンドを実行してください。

# docker pull centos

 以下のような内容が出力されたと思います。

 これは、最新版のCentOSのイメージのダウンロードが正常終了したことを示してます。

Using default tag: latest
latest: Pulling from library/centos
0653bff3c5cf: Pull complete
Digest: sha256:81e4f2f663eaa1bf46ff9be348396dd7053734b257ef4147d7133d6f25bbf7cf
Status: Downloaded newer image for centos:latest

再度「docker images」コマンドを実行します。

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 05188b417f30 2 weeks ago 196.8 MB

 今度は、なにか1つ表示されたと思います。これが、公式のCentOSのDockerイメージになります。SIZEのところに「196.8 MB」と表示されています。OSのイメージにしては小さいですね。

 ここまでできれば、とりあえずDockerのインストールは正常に終わったと考えてよいと思います。

■ 本記事の目次に戻る ■

6. Docker管理ユーザのセットアップ

 Dockerの起動/停止などを行うコマンドの「systemctl」はOSのコマンドですので、root権限が必須です。

 Dockerが起動した後のDockerコマンド(「docker images」など)も、デフォルトではroot権限が必要です。

 権限のないユーザでDockerコマンドを実行すると以下のようなエラーが出ます。

Got permission denied while trying to connect to the Docker daemon socket
 at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.
35/images/json: dial unix /var/run/docker.sock: connect: permission denied

 でも場合によっては、root以外のユーザでDockerのシステム管理を行いたいこともあると思います。

 Dockerは指定した特定のユーザグループに属するユーザに、Dockerコマンドの実行権限を付与することが可能です。

 以下のコマンドで、OSのグループ一覧を出力してください。

# cat /etc/group

 その中に「docker」グループがあると思います。

 この「docker」グループに所属するユーザは、Dockerの管理ユーザとして、「docker」コマンドを使うことが可能となります。

 例えば、「admin」というユーザがあったとします。

 以下のコマンドを実行し、「admin」ユーザを「docker」グループに所属させてください。

# gpasswd -a admin docker

 以下のコマンドで、dockerグループに所属しているか確認します。

# id admin

 所属していることが確認できましたら、adminユーザでログインし、「docker images」コマンドを実行してください。

 今度はイメージのリストが表示されたと思います。

 もし、表示されない場合は、一旦ターミナルを終了させて、再度ログオンした後、試してください。

 以上で終わりです。

 

 お疲れさまでした。最後までお読みいただきありがとうございました!

■ 本記事の目次に戻る ■


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください