Docker は、コンテナと呼ばれる OS レベルの仮想化環境を提供するオープンソースソフトウェアです。VMware 製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持っています。
本記事では CentOS に Docker をインストールして利用するまでの設定を、ちょっと冗長にまとめました。
- サーバーの準備
- CentOS のインストール
- Docker のセットアップ
- 必要な関連パッケージをインストール
- Docker CE のリポジトリの設定
- Docker CE のインストール
- サービスの起動
- グループ docker にユーザを追加
- hello-world イメージを使って動作確認
- 参考サイト
サーバーの準備
CentOS のインストール
CentOS は、ダウンロードした CentOS-7-x86_64-DVD-1810.iso を Fedora Media Writer で USB メモリに焼いて、評価用 PC へインストールしました。今回は「最小限のインストール」でインストールしました。
CentOS をインストールした後、他の PC から ssh でログインしてパッケージを最新の状態にアップデートしておきます。
[bitwalk@fedora-pc ~]$ ssh 192.168.0.22 The authenticity of host '192.168.0.22 (192.168.0.22)' can't be established. ECDSA key fingerprint is SHA256:aAKXPjEm7qOkO877gEsnHGOY9dcoNal1Sp9kNHTFiZE. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.0.22' (ECDSA) to the list of known hosts. bitwalk@192.168.0.22's password: Last login: Sat Jul 27 10:37:12 2019 [bitwalk@centos7 ~]$ sudo yum update あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] bitwalk のパスワード: 読み込んだプラグイン:fastestmirror Determining fastest mirrors * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/4): extras/7/x86_64/primary_db | 205 kB 00:00:00 (3/4): updates/7/x86_64/primary_db | 6.5 MB 00:00:01 (4/4): base/7/x86_64/primary_db | 6.0 MB 00:00:03 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ NetworkManager.x86_64 1:1.12.0-6.el7 を 更新 ---> パッケージ NetworkManager.x86_64 1:1.12.0-10.el7_6 を アップデート ... (省略) ... ---> パッケージ xfsprogs.x86_64 0:4.5.0-18.el7 を 更新 ---> パッケージ xfsprogs.x86_64 0:4.5.0-19.el7_6 を アップデート --> 依存性解決を終了しました。 依存性を解決しました ================================================================================================================= Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================================================= インストール中: kernel x86_64 3.10.0-957.21.3.el7 updates 48 M 更新します: NetworkManager x86_64 1:1.12.0-10.el7_6 updates 1.7 M ... (省略) ... xfsprogs x86_64 4.5.0-19.el7_6 updates 897 k トランザクションの要約 ================================================================================================================= インストール 1 パッケージ 更新 73 パッケージ 総ダウンロード容量: 136 M Is this ok [y/d/N]: y Downloading packages: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. 警告: /var/cache/yum/x86_64/7/updates/packages/NetworkManager-libnm-1.12.0-10.el7_6.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY NetworkManager-libnm-1.12.0-10.el7_6.x86_64.rpm の公開鍵がインストールされていません (1/74): NetworkManager-libnm-1.12.0-10.el7_6.x86_64.rpm | 1.4 MB 00:00:00 ... (省略) ... (74/74): xfsprogs-4.5.0-19.el7_6.x86_64.rpm | 897 kB 00:00:00 ----------------------------------------------------------------------------------------------------------------- 合計 9.1 MB/s | 136 MB 00:00:15 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。 Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key)" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 上記の処理を行います。よろしいでしょうか? [y/N]y Running transaction check Running transaction test Transaction test succeeded Running transaction 更新します : libgcc-4.8.5-36.el7_6.2.x86_64 1/147 ,,, (省略) ... 検証中 : 2:vim-minimal-7.4.160-5.el7.x86_64 147/147 インストール: kernel.x86_64 0:3.10.0-957.21.3.el7 更新: NetworkManager.x86_64 1:1.12.0-10.el7_6 NetworkManager-libnm.x86_64 1:1.12.0-10.el7_6 ... (省略) ... xfsprogs.x86_64 0:4.5.0-19.el7_6 完了しました! [bitwalk@centos7 ~]$ sudo reboot [sudo] bitwalk のパスワード: Connection to 192.168.0.22 closed by remote host. Connection to 192.168.0.22 closed. [bitwalk@fedora-pc ~]$ ssh 192.168.0.22 bitwalk@192.168.0.22's password: Last login: Sat Jul 27 10:07:15 2019 from 192.168.0.10 [bitwalk@centos7 ~]$ df -h /dev/mapper/centos-root 50G 1.3G 49G 3% / devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs 1.8G 8.9M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/sda2 1014M 171M 844M 17% /boot /dev/sda1 200M 12M 189M 6% /boot/efi /dev/mapper/centos-home 411G 33M 411G 1% /home tmpfs 368M 0 368M 0% /run/user/1000 tmpfs 368M 0 368M 0% /run/user/0 [bitwalk@centos7 ~]$
Docker のセットアップ
必要な関連パッケージをインストール
Docker CE をインストールする方法はいくつかありますが、ここでは一番簡単な方法を取ることにします。すなわち、Docker のリポジトリをセットアップしてインストールします。
そのために、まず、リポジトリやストレージドライバを扱うために必要なパッケージをインストールします。
[bitwalk@centos7 ~]$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[sudo] bitwalk のパスワード:
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
パッケージ device-mapper-persistent-data-0.7.3-3.el7.x86_64 はインストール済みか最新バージョンです
パッケージ 7:lvm2-2.02.180-10.el7_6.8.x86_64 はインストール済みか最新バージョンです
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-utils.noarch 0:1.1.31-50.el7 を インストール
...
(省略)
...
--> 依存性解決を終了しました。
依存性を解決しました
=================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=================================================================================================================
インストール中:
yum-utils noarch 1.1.31-50.el7 base 121 k
依存性関連でのインストールをします:
libxml2-python x86_64 2.9.1-6.el7_2.3 base 247 k
python-chardet noarch 2.2.1-1.el7_1 base 227 k
python-kitchen noarch 1.1.1-5.el7 base 267 k
トランザクションの要約
=================================================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)
総ダウンロード容量: 861 k
インストール容量: 4.3 M
Downloading packages:
(1/4): libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm | 247 kB 00:00:00
(2/4): python-chardet-2.2.1-1.el7_1.noarch.rpm | 227 kB 00:00:00
(3/4): yum-utils-1.1.31-50.el7.noarch.rpm | 121 kB 00:00:00
(4/4): python-kitchen-1.1.1-5.el7.noarch.rpm | 267 kB 00:00:00
-----------------------------------------------------------------------------------------------------------------
合計 1.6 MB/s | 861 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : python-chardet-2.2.1-1.el7_1.noarch 1/4
...
(省略)
...
検証中 : python-chardet-2.2.1-1.el7_1.noarch 4/4
インストール:
yum-utils.noarch 0:1.1.31-50.el7
依存性関連をインストールしました:
libxml2-python.x86_64 0:2.9.1-6.el7_2.3 python-chardet.noarch 0:2.2.1-1.el7_1
python-kitchen.noarch 0:1.1.1-5.el7
完了しました!
[bitwalk@centos7 ~]$
Docker CE のリポジトリの設定
次に、Docker CE の stable (安定版)リポジトリをセットアップします。
※ 2017年 Docker は CE(コミュニティエディション、無償版)と EE(エンタープライズエディション、有償版)の二種類のリリース提供を開始しました。
[bitwalk@centos7 ~]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[sudo] bitwalk のパスワード:
読み込んだプラグイン: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
[bitwalk@centos7 ~]$
リポジトリ追加後、yum パッケージ・インデックスを更新します。
[bitwalk@centos7 ~]$ sudo yum makecache fast
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
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/primary_db | 32 kB 00:00:00
(2/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
メタデータのキャッシュを作成しました
[bitwalk@centos7 ~]$
Docker CE のインストール
Docker CEをインストールします。
[bitwalk@centos7 ~]$ sudo yum install docker-ce [sudo] bitwalk のパスワード: 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ docker-ce.x86_64 3:19.03.1-3.el7 を インストール --> 依存性の処理をしています: container-selinux >= 2:2.74 のパッケージ: 3:docker-ce-19.03.1-3.el7.x86_64 ... (省略) ... ---> パッケージ setools-libs.x86_64 0:3.3.8-4.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================================================= Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================================================= インストール中: docker-ce x86_64 3:19.03.1-3.el7 docker-ce-stable 24 M 依存性関連でのインストールをします: audit-libs-python x86_64 2.8.4-4.el7 base 76 k checkpolicy x86_64 2.5-8.el7 base 295 k container-selinux noarch 2:2.99-1.el7_6 extras 39 k containerd.io x86_64 1.2.6-3.3.el7 docker-ce-stable 26 M docker-ce-cli x86_64 1:19.03.1-3.el7 docker-ce-stable 39 M libcgroup x86_64 0.41-20.el7 base 66 k libsemanage-python x86_64 2.5-14.el7 base 113 k policycoreutils-python x86_64 2.5-29.el7_6.1 updates 456 k python-IPy noarch 0.75-6.el7 base 32 k setools-libs x86_64 3.3.8-4.el7 base 620 k トランザクションの要約 ================================================================================================================= インストール 1 パッケージ (+10 個の依存関係のパッケージ) 総ダウンロード容量: 91 M インストール容量: 374 M Is this ok [y/d/N]: y Downloading packages: (1/11): checkpolicy-2.5-8.el7.x86_64.rpm | 295 kB 00:00:00 (2/11): audit-libs-python-2.8.4-4.el7.x86_64.rpm | 76 kB 00:00:00 (3/11): container-selinux-2.99-1.el7_6.noarch.rpm | 39 kB 00:00:00 warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-19.03.1-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY docker-ce-19.03.1-3.el7.x86_64.rpm の公開鍵がインストールされていません (4/11): docker-ce-19.03.1-3.el7.x86_64.rpm | 24 MB 00:00:03 ... (省略) ... (11/11): containerd.io-1.2.6-3.3.el7.x86_64.rpm | 26 MB 00:00:11 ----------------------------------------------------------------------------------------------------------------- 合計 8.1 MB/s | 91 MB 00:00:11 https://download.docker.com/linux/centos/gpg から鍵を取得中です。 Importing GPG key 0x621E9F35: Userid : "Docker Release (CE rpm)" Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 From : https://download.docker.com/linux/centos/gpg 上記の処理を行います。よろしいでしょうか? [y/N]y Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : libcgroup-0.41-20.el7.x86_64 1/11 ... (省略) ... 検証中 : 2:container-selinux-2.99-1.el7_6.noarch 11/11 インストール: docker-ce.x86_64 3:19.03.1-3.el7 依存性関連をインストールしました: audit-libs-python.x86_64 0:2.8.4-4.el7 checkpolicy.x86_64 0:2.5-8.el7 container-selinux.noarch 2:2.99-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 完了しました! [bitwalk@centos7 ~]$
サービスの起動
Docker のサービスを起動します。
[bitwalk@centos7 ~]$ sudo systemctl start docker [sudo] bitwalk のパスワード: [bitwalk@centos7 ~]$ sudo 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 土 2019-07-27 20:35:24 JST; 10s ago Docs: https://docs.docker.com Main PID: 27893 (dockerd) Tasks: 11 Memory: 39.9M CGroup: /system.slice/docker.service └─27893 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/con... 7月 27 20:35:19 centos7 dockerd[27893]: time="2019-07-27T20:35:19.54517182...c 7月 27 20:35:19 centos7 dockerd[27893]: time="2019-07-27T20:35:19.54542850...c 7月 27 20:35:19 centos7 dockerd[27893]: time="2019-07-27T20:35:19.54685374...c 7月 27 20:35:19 centos7 dockerd[27893]: time="2019-07-27T20:35:19.86344758..." 7月 27 20:35:22 centos7 dockerd[27893]: time="2019-07-27T20:35:22.20617975..." 7月 27 20:35:23 centos7 dockerd[27893]: time="2019-07-27T20:35:23.76180745..." 7月 27 20:35:23 centos7 dockerd[27893]: time="2019-07-27T20:35:23.89615003...1 7月 27 20:35:23 centos7 dockerd[27893]: time="2019-07-27T20:35:23.90030657..." 7月 27 20:35:24 centos7 dockerd[27893]: time="2019-07-27T20:35:24.21006351..." 7月 27 20:35:24 centos7 systemd[1]: Started Docker Application Container ...e. Hint: Some lines were ellipsized, use -l to show in full. [bitwalk@centos7 ~]$ sudo systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [bitwalk@centos7 ~]$
起動した Docker サービスの情報を確認します。
[bitwalk@centos7 ~]$ sudo docker info
[sudo] bitwalk のパスワード:
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.591GiB
Name: centos7
ID: O26I:LZFL:R2II:VSIZ:43JA:DUUZ:H575:TYZ3:4XVI:YARJ:J5RJ:RX4E
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
[bitwalk@centos7 ~]$
グループ docker にユーザを追加
今のところ sudo で docker コマンドを実行していますが、今後、毎回 sudo で実行するのは面倒です。そこで、dockerという名のグループを作って(実際には docker-ce のインストール時にグループ docker が作成されていたようです)ユーザをそこに所属させて sudo なしに docker コマンドを実行できるようにします。
[bitwalk@centos7 ~]$ sudo groupadd docker [sudo] bitwalk のパスワード: groupadd: グループ 'docker' は既に存在します [bitwalk@centos7 ~]$ sudo gpasswd -a $USER docker ユーザ bitwalk をグループ docker に追加 [bitwalk@centos7 ~]$ sudo systemctl restart docker [bitwalk@centos7 ~]$ exit ログアウト Connection to 192.168.0.22 closed. [bitwalk@fedora-pc ~]$ ssh 192.168.0.22 bitwalk@192.168.0.22's password: Last login: Sat Jul 27 20:27:56 2019 from 192.168.0.10 [bitwalk@centos7 ~]$ docker info Client: Debug Mode: false Server: Containers: 0 ... (省略) ... Live Restore Enabled: false [bitwalk@centos7 ~]$
グループ docker に自分のユーザアカウント(この例では bitwalk)を追加した後、docker のサービスを再起動します。ログアウト→再ログインして docker コマンドを sudo 無しで実行できることを確認しています。
hello-world イメージを使って動作確認
公開されている hello-world という Docker イメージを取得して、コンテナを起動させてみます。
[bitwalk@centos7 docker]$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f 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/ [bitwalk@centos7 docker]$
コンテナの状態を確認すると、以下のようになっています。
[bitwalk@centos7 docker]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
895fe50eb652 hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago jolly_bose
[bitwalk@centos7 docker]$
コンテナを削除するには以下のようにします。
[bitwalk@centos7 docker]$ docker rm jolly_bose jolly_bose [bitwalk@centos7 docker]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [bitwalk@centos7 docker]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest fce289e99eb9 6 months ago 1.84kB [bitwalk@centos7 docker]$
コンテナは削除されますが hello-world のイメージは削除されていません。イメージを削除するには以下のようにします。
[bitwalk@centos7 docker]$ docker rmi hello-world Untagged: hello-world:latest Untagged: hello-world@sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3 [bitwalk@centos7 docker]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE [bitwalk@centos7 docker]$
ちなみに、Docker のコンテナやイメージの格納先は /var/lib/docker/ 以下にあります。本格的に Docker を利用するのであれば、CentOS のインストール時に、/ (root) とは別に /var あるいは /var/lib/docker/ のパーティション (LVM) を用意した方が良さそうです。
ちなみに、評価用の PC はその後、下記のようにインストールし直しました。
[bitwalk@centos7 ~]$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 50G 1.4G 49G 3% / devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs 1.8G 8.9M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/sda1 1014M 193M 822M 19% /boot /dev/mapper/centos-home 200G 33M 200G 1% /home /dev/mapper/centos-var 211G 207M 211G 1% /var tmpfs 368M 0 368M 0% /run/user/1000 [bitwalk@centos7 ~]$
参考サイト
- CentOS 用 Docker CE の入手 — Docker-docs-ja 17.06.Beta ドキュメント
- Install Docker on CentOS 7 - Qiita [2019-02-08]
- Docker入門(第二回)~Dockerセットアップ、コンテナ起動~ | さくらのナレッジ [2018-03-12]
- Dockerのインストール&操作方法(CentOS7.3) - Qiita [2017-12-10]
- Dockerが商用版Dockerとして「Docker Enterprise Edition」発表、認証済みイメージやプラグインなど提供。無償版は「Community Edition」に - Publickey [2017-03-06]
にほんブログ村
0 件のコメント:
コメントを投稿