CentOS7に仮想環境を提供するソフト「Docker」をインストールする手順について説明します。
目次
動作確認環境
本ページの内容は、以下の環境で動作確認をしています。
- CentOS Linux release 7.6.1810 (Core)
Dockerとは?

- Dockerは、コンテナと呼ばれるOSの仮想化環境を提供するソフトウェアです。
- Dockerは、VMware製品などの完全仮想化を行うソフトと比べて、ディスク使用量は少ない、仮想環境の作成・起動が速い、性能劣化がほとんどない、といった利点を持ちます。
Dockerをインストールする
古いバージョンをアンインストールする
- Dockerをインストールする前に、まずは古いバージョンをアンインストールします。
古いバージョンをアンインストールする
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
実行結果(アンインストール対象がない場合)
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
- もし古いバージョンがインストールされていなければ、上記のような出力結果になるでしょう。
Docker用のリポジトリ追加する
- yumがデフォルトで管理するリポジトリの中にはDockerは含まれていません。
- そこでまずはDocker用のリポジトリを追加する必要があります。
- 以下のコマンドで、リポジトリの設定に必要なツールをインストールします。
リポジトリ設定に必要なツールをインストール
sudo yum install -y yum-utils evice-mapper-persistent-data lvm2
実行結果(抜粋)
Installed:
lvm2.x86_64 7:2.02.180-10.el7_6.8
Dependency Installed:
device-mapper-event.x86_64 7:1.02.149-10.el7_6.8
device-mapper-event-libs.x86_64 7:1.02.149-10.el7_6.8
device-mapper-persistent-data.x86_64 0:0.7.3-3.el7
libaio.x86_64 0:0.3.109-13.el7
lvm2-libs.x86_64 7:2.02.180-10.el7_6.8
Complete!
すでにインストールされているパッケージ内容によっては、出力結果が異なる可能性があります。
- 出力結果の最後に「Complete!」と表示されたらインストール完了です。
- 続いてDocker用のリポジトリを追加します。
Docker用のリポジトリを追加する
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
実行結果
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
- リポジトリを追加したらyumパッケージのインデックスを更新しておきます。
yumパッケージインデックスを更新
sudo yum makecache fast
実行結果
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* extras: ty1.mirror.newmediaexpress.com
* updates: ty1.mirror.newmediaexpress.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
(2/2): docker-ce-stable/x86_64/primary_db | 32 kB 00:00:00
Metadata Cache Created
Dockerをインストールする
- Dockerのリポジトリの追加が完了したら、Dockerをインストールします。
- インストールには、以下のコマンドを実行します。
Dockerインストール
sudo yum install -y docker-ce
実行結果(抜粋)
Installed:
docker-ce.x86_64 3:19.03.1-3.el7
Dependency Installed:
audit-libs-python.x86_64 0:2.8.4-4.el7 checkpolicy.x86_64 0:2.5-8.el7
container-selinux.noarch 2:2.107-1.el7_6 containerd.io.x86_64 0:1.2.6-3.3.el7
docker-ce-cli.x86_64 1:19.03.1-3.el7 libcgroup.x86_64 0:0.41-20.el7
libsemanage-python.x86_64 0:2.5-14.el7 policycoreutils-python.x86_64 0:2.5-29.el7_6.1
python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-4.el7
Complete!
すでにインストールされているパッケージ内容によっては、出力結果が異なる可能性があります。
- 出力結果の最後に「Complete!」と表示されたらインストール完了です。
Dockerを起動する
- Dockerをインストールが完了したら、Dockerを起動します。
- Dockerを起動するためには、以下のコマンドを実行します。
Docker起動
sudo systemctl start docker
実行結果
なし
Dockerの起動を確認する
-
Dockerが正常に起動しているかは、以下のコマンドで確認をします。
- 「hello-world」という名前のイメージからコンテナを起動しています。
Docker動作確認
sudo docker container run hello-world
実行結果
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
- 出力結果の中に「Hello from Docker!」と表示されていればDokcerが正常に起動しています。
sudoなしで実行するためには
- Dockerを操作する場合、デフォルトでスーパーユーザー(root)権限レベルが求められます。
- その原因は、現在の実行ユーザが「docker」という名前のグループに所属していないことが原因になります。
- そのままでも問題はありませんが、ここでは現在の実行ユーザをdockerグループに所属させる手順について説明します。
- まずは以下のコマンドで現行グループ一覧の中にdockerというグループがあるかを確認します。
グループ一覧を確認
cat /etc/group | grep docker
実行結果例(すでに含まれている場合)
docker:x:992:
- すでにあれば問題ありませんが、ない場合は以下のコマンドでdockerグループを作成します。
dockerグループを作成
sudo groupadd docker
- 続いて、現行ログインしているユーザをdockerグループに所属させます。
現行ユーザをdockerグループに所属させる
sudo gpasswd -a [ユーザ名] docker
実行結果
Adding user [ユーザ名] to group docker
- Dockerを再起動します。
dockerを再起動する
sudo systemctl restart docker
実行結果
なし
- システムからログアウト→再ログインすると変更が反映されます。
ログアウト(再ログインすると反映される)
exit
- 再ログイン後、正しく追加されたかを確認します。
現行ユーザのグループを確認
groups
実行結果(抜粋)
docker
- 実行結果に「docker」が含まれていれば問題ありません。
Dockerを自動起動設定する
- システムを再起動するたびにDockerを起動するのは手間です。
- ここではDockerがシステム起動と同時に自動起動する設定をします。
- 自動起動設定には以下のコマンドを実行します。
Docker自動起動設定
sudo systemctl enable docker
実行結果
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
Dockerの自動起動設定を確認する
- Dockerの自動起動設定が正常に設定できているかは、以下のコマンドで確認をします。
Docker自動起動設定確認
sudo systemctl is-enabled docker
実行結果
enabled
- 出力結果が「enabled」であれば正常に自動起動設定ができています。
参考URL
- Get Docker Engine – Community for CentOS(https://docs.docker.com/install/linux/docker-ce/centos/)