2016年頃のDockerは、dockerやdocker-engineという名前のパッケージをインストールして利用していました。
現在(2020年)はdocker-ceという名前のパッケージ名に変わりましたが、基本的なインストール手順は同じです。
本記事はCentOSにDockerをインストールする手順をご紹介しております。
インストール手順はdockerやdocker-engineの頃とそれほど大きな変更はありませんが、バージョン管理体系などが新しくなってますので、そのあたりも合わせてご紹介いたします。
バージョン管理体系の変更点について
以前のDockerのバージョンはx.xx.x(例1.13.1)のように連番で管理されていましたが、現在(2020年10月時点)はnn.xx.xxというフォーマットに変わりました。
nnの部分は西暦の下2桁が入ります。例えば19.03.10という感じです。
また、stable版(安定版)とnightly版、test版の3つのDockerを選択できるようになっています。何も指定しない場合はデフォルトでstable版がインストールされます。
stable版は文字通りの安定版でして、最新機能を求めるよりも安定性をお求めの方におすすめです。初めての方はstable版が良いでしょう。
nightly版は、多少のバグは我慢するから最新版を試したいという方のためのものです。基本的に毎日更新されます。
test版は、もうすぐ安定版として公開されるプレリリース版のことです。小規模のバグは存在するかもしれません。
本記事ではデフォルト設定時に選択されるstable版のインストール手順をご紹介します。
CentOS7へのDockerのインストール
ここからがDockerのインストールの解説になります。
Dockerのインストール作業項目
インストールは以下の流れで行います。
- インストール対象マシンの条件確認
- Dockerのインストール
- Docker CEの起動/停止/再起動
- Docker CEの自動起動
- 動作確認
- Docker管理ユーザのセットアップ
インストール方法としては以下の3種類用意されています。
- yumコマンドでのインストール
- rpmファイルからのインストール
- シェルスクリプト(Docker提供)を使用したインストール
本記事ではこの3つの中では一番標準的なyumコマンドでのインストールについて説明します。
1. インストール対象マシンの条件確認
一番重要なのは、インストール対象マシンがインターネットに接続されていることです。
OSの必要条件としては以下の記載があります。
To install Docker CE, you need a maintained version of CentOS 7. Archived versions aren’t supported or tested.
Docker公式ドキュメントより引用
保守されているバージョン、つまりCentOSの最新版を推奨しています。過去のバージョンでも動くかもしれませんが、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 |
CentOS 7.8(2003) | 3.10.0-1127 | 19.03.13 |
2. Dockerインストール
インストールには管理者権限が必要です。root、もしくはsudoコマンドをご利用ください。以下はrootを使用して行う手順になります。
2.1 旧バージョンのアンインストール
以下を実行して古いDockerおよびその関連パッケージを削除します。
# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.2 必要パッケージのインストール
yum-utilsパッケージをインストールします。
# yum install -y yum-utils
2.3 必要リポジトリファイルのインストール
以下を実行してリポジトリファイルを入手します。
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2.4 Dockerのインストール
以下のコマンドを実行してDockerをインストールします。このコマンドでは、現時点で最新のDockerがインストールされます。
# yum install docker-ce docker-ce-cli containerd.io
途中で数回入力待ちになりますが、全て「y」を入力してください。「n」を入力することで途中でインストールをキャンセル可能です。
私の環境ではここまで10分も掛からない程度で終わりました。
3. Dockerの起動/停止/再起動
作業には管理者権限が必要です。root、もしくはsudoコマンドをご利用ください。以下はrootを使用して行う手順になります。
3.1 Dockerの起動
インストールが完了しましたら、以下のコマンドにて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の停止
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の再起動
Dockerを再起動する場合は以下のコマンドを実行します。
# systemctl restart docker
Docker本体の設定を変更した場合は、Dockerの再起動が必要になる場合がありますので、Dockerの再起動でも、Dockerの停止/起動でも、お好みで行ってください。
4. Dockerの自動起動
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公式サイトのインストール手順に記載されている以下のコマンドを実行します。
# docker run hello-world
Dockerのインストールが正常に終わっている場合は以下のように表示されます。
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1.The Docker client contacted the Docker daemon.
(以下略)
ここまでできれば、とりあえず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.40/containers/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」コマンドを実行してください。
今度はイメージのリストが表示されたと思います。
もし、表示されない場合は、一旦ターミナルを終了させて、再度ログオンした後、試してください。
以上で終わりです。お疲れさまでした。
おわりに
Dockerはパッケージ化されていますのでインストールがとても簡単にできます。
簡単に行うためには、インストール対象のサーバーがインターネットに接続されているのが条件です。
場合によっては、閉じたネットワーク上のサーバーにDockerをインストールしなければならないこともあると思います。
その場合は、Dockerのパッケージファイルをダウンロードして行えば可能です。
通常はDockerHubというDocker公式リポジトリからDockerイメージを入手するのですが、閉じた環境だとできません。
ローカル内に内部用のDockerリポジトリサーバーを構築するか、外部からDockerイメージのexportファイルを使ってインポートするという運用を行う必要があります。
最後までお読みいただきありがとうございました!
コメント
teratailで質問しているところですが、こちらのサイトを見つけました
>インストールできたOS
ですが、
私も CentOS 7.5と7.4には17.12.0.ceがインストールできました。
が、7.2ではインストールはできますが、docker run実行時に
Error response from daemon: OCI runtime create failed:
unable to retrieve OCI runtime error
のエラーになってしまいました。
そちらでは、7.2でもインストールの後、docker runまで正常に動作していますか?
管理人です。
コメントいただきましてありがとうございます。
改めて確認してみました。
私の環境は以下のとおりです。
OS:CentOS 7.2(1511)
カーネル:3.10.0-327.22.2
Docker:17.12.1-ce
※Hyper-v上の仮想マシン上
この環境で以下のコマンドを実行しましたがエラーなく起動できました。
# docker run -it centos bash
[root@f1422e68fce0 /]#
Dockerがインストールされていない別の仮想マシンがありましたので、「17.12.0.ce」を試しにインストールしてみました。
OS:CentOS 7.2(1511)
カーネル:3.10.0-327.22.2
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce-17.12.0.ce
# systemctl start docker
# docker run -it centos bash
[root@ac22d57d604f /]#
結果は同じで、エラーなく起動できました。
ご参考になれば幸いです。