CentOS 7 でのインストール方法について
インストール
CentOS 7だとyumでインストールできますが、デフォルトのレポジトリではバージョンが古くなります。
新しいバージョンを使いたい場合は、dockerのレポジトリを使ってインストールします
デフォルト版
CentOS 7 のデフォルトレポジトリからyumでインストールする場合、以下を実行します。
# yum install docker
最新の安定版
最新の安定版を使いたい場合は、以下のdocker docsのページを参考にインストールします。 安定板(stable)以外にnightly repositoryを使う方法も書いてあります。
注意 yumでデフォルトのインストールを行っている場合、削除する必要があります。
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
yum-utils、device-mapper-persistent-data、lvm2 の3つが必要なのでインストールします。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
dockerのレポジトリを追加します。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo実行すると以下のようになります。
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 読み込んだプラグイン: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
レポジトリが追加できたら、docker-ce (Docker Engine - Community)をインストールします。
sudo yum install docker-ce docker-ce-cli containerd.io実行すると以下のようになります。
# yum install docker-ce docker-ce-cli containerd.io … ===================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ====================================================================================================== インストール中: containerd.io x86_64 1.2.6-3.3.el7 docker-ce-stable 26 M docker-ce x86_64 3:19.03.2-3.el7 docker-ce-stable 24 M docker-ce-cli x86_64 1:19.03.2-3.el7 docker-ce-stable 39 M 依存性関連でのインストールをします: container-selinux noarch 2:2.107-3.el7 extras 39 k libseccomp x86_64 2.3.1-3.el7 base 56 k トランザクションの要約 ====================================================================================================== インストール 3 パッケージ (+2 個の依存関係のパッケージ) ・・・ ・・・ 完了しました!
サービス管理
サービスの起動・停止
CentOS 7の場合、デフォルトではSystemdで管理されていますので、Systemdの設定を行います。
まずdockerサービスを起動させます。
# systemctl start docker.service
サービスを停止する場合は以下になります。
# systemctl stop docker.service
サービスを再起動する場合は以下になります。
# systemctl restart docker.service
システム起動時に自動起動させたい場合は、以下を実行します。
# systemctl enable docker.service
システム起動時に自動起動しないようにする場合は以下になります。
# systemctl disable docker.service
サービスの状態確認
dockerサービスの状態を確認する場合は、systemctlのstatusコマンドで可能です。 以下はActive: active (running) となっていますので、稼動中になります。
# systemctl status docker.service ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since 火 2016-04-05 08:48:31 JST; 51min ago Docs: http://docs.docker.com Main PID: 4281 (docker) CGroup: /system.slice/docker.service mq4281 /usr/bin/docker daemon --selinux-enabled 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: ........ 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain docker[4281]: time="2016-04-05T08:48:... 4月 05 08:48:31 localhost.localdomain systemd[1]: Started Docker Applicatio... Hint: Some lines were ellipsized, use -l to show in full.
動作確認
とりあえず動作を確認したい場合、以下を実行します。
sudo docker run hello-world
正常だと以下のようになります。
# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00 Status: Downloaded newer image for hello-world:latest 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. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
その他
環境の初期化方法
Dockerのデフォルトでは、全てのデータを/var/lib/docker/に保存します。 そのため、/var/lib/docker/以下のファイル、ディレクトリを全て削除すると、dockerをインストールした直後の初期状態に戻すことができます。 ただし、稼動中のコンテナやサービスがあると問題があるので、一旦全て停止させてから削除します。 作業手順は以下のようになります。
- dockerの稼動コンテナを全て停止
- dockerサービスを停止
- /var/lib/docker/にあるファイル、ディレクトリを全て削除
参考 /var/lib/docker/は以下のようになっていました。
# ls -l /var/lib/docker 合計 20 drwx------ 6 root root 4096 4月 5 01:42 containers drwx------ 5 root root 50 3月 26 02:00 devicemapper drwx------ 24 root root 4096 4月 4 21:44 graph -rw-r--r-- 1 root root 5120 4月 5 08:48 linkgraph.db -rw------- 1 root root 462 4月 4 21:44 repositories-devicemapper drwx------ 2 root root 6 4月 4 21:44 tmp drwx------ 2 root root 6 3月 26 01:48 trust drwx------ 2 root root 6 3月 26 01:48 volumes
稼動コンテナを全て停止する場合、docker psコマンドで稼動コンテナを確認して、全コンテナを停止します。
# docker psその後、dockerサービスを停止して、/var/lib/docker/以下のファイル、ディレクトリを全て削除します。
# systemctl stop docker.service # rm -rf /var/lib/docker/*