dockerについて、名前は聞いたことがあるのですが全く触れたことがないです。仕事で使わないとはいえ、今どきそんなんでいいのか?!と思いまして使ってみることにしました。誰も教えてくれんのよ、厳しい世界や。
ちなdocker CEというのは無償版dockerのことで、商用版はEEというらしいです。この記事ではdockerをインストールしてsystemctlでステータス確認するところまでやります。
環境
rhel:8.4(aws上にあります)
dockerの仕組み
とりあえずわけがわからないので仕組みから理解します。
言葉の説明
- コンテナ →ゲストOS的な。
- イメージ →ゲストOSのイメージ、クローン的な。
- Docker Engine →コマンドライン。ここのコマンドを使って操作する。
- Docker Hub →インターネット上にイメージを置けるし、拾えるらしい。redhat repo的な。
- Dockerレジストリ →ローカルにもイメージを置けるし、拾えるらしい。localのrepo的な。
こんな使い方かな?
- コンテナを作ることで環境ができる。
- コンテナは自分で作ってもいいし、リポジトリから完成されたものを持ってきてもいい。
- 一回コンテナを構築してイメージを作ってしまえば、あとは複製も削除も余裕。
- たくさん複製して、たくさん削除しよう!
メリット・デメリット
感じた良いところ(間違ってたらすみませんw)
- コンテナって言うのを速攻で作れる。作ったり消したりしまくれるってことかな。開発コストも抑えられる。もうインフラの仕事なくなってまうw
- 各環境ごとに不要なリソースを確保しておく必要がない。たまにしか使わないイメージはレジストリにあればいいから。VMとかのゲストOSだとそうはいかない気がする、リソース確保が必要じゃないか?
感じた悪いところ
- OSの上にコンテナがあるってところ。OSが死んだら全部死ぬ?どうやって冗長化するのだろう。
- カーネル設計がむずい?というか大事?
- 使い捨て環境とかならいいけど、大事な環境では使いづらいかも。
思った一番いい使い方は、本番のコンテナを開発にコピーして開発で新規アプリのテストをすること。テストがうまくいったらそのまま本番リリースができるってことでしょ?強いかも。
というわけで、考えてもあまりよくわからないので実際に入れてみます。
インストール
まずyumをupdateしてrpmパッケージを更新します。私の環境にはすでにありました。
[root@ec2_test ~]# yum list installed yum-utils
Updating Subscription Management repositories.
Installed Packages
yum-utils.noarch 4.0.18-4.el8 @anaconda
[root@ec2_test ~]
インストールは以下コマンドです。
yum install -y yum-utils
次にdockerのリポジトリを登録します。デフォルトのredhatのリポジトリにはないようです。(CentOSのディレクトリ指定してるけどいいのかな?って思いながら。。)
[root@ec2_test ~]# yum-config-manager \
> --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Updating Subscription Management repositories.
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
[root@ec2_test ~]#
登録できたか確認します。
[root@ec2_test ~]# yum repolist
Updating Subscription Management repositories.
repo id repo name
docker-ce-stable Docker CE Stable - x86_64
rhel-8-appstream-rhui-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs)
rhel-8-baseos-rhui-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS from RHUI (RPMs)
rhui-client-config-server-8 Red Hat Update Infrastructure 3 Client Configuration Server 8
[root@ec2_test ~]#
上記で特定したrepo idから詳細を確認します。
[root@ec2_test ~]# yum repolist -v --repoid docker-ce-stable
Loaded plugins: AmazonID, builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, uploadprofile
Updating Subscription Management repositories.
YUM version: 4.4.2
cachedir: /var/cache/dnf
Last metadata expiration check: 0:31:50 ago on Thu 16 Sep 2021 04:20:00 PM UTC.
Repo-id : docker-ce-stable
Repo-name : Docker CE Stable - x86_64
Repo-revision : 1628034135
Repo-updated : Tue 03 Aug 2021 11:42:15 PM UTC
Repo-pkgs : 43
Repo-available-pkgs: 43
Repo-size : 1.0 G
Repo-baseurl : https://download.docker.com/linux/centos/8/x86_64/stable
Repo-expire : 172,800 second(s) (last: Thu 16 Sep 2021 04:20:00 PM UTC)
Repo-filename : /etc/yum.repos.d/docker-ce.repo
Total packages: 43
[root@ec2_test ~]#
リポジトリの登録ができたのでやっとインストールできます。
[root@ec2_test ~]# yum install docker-ce
Updating Subscription Management repositories.
Last metadata expiration check: 0:33:44 ago on Thu 16 Sep 2021 04:20:00 PM UTC.
Dependencies resolved.
~中略~
Transaction Summary
============================================================================================================
Install 18 Packages
Total download size: 91 M
Installed size: 379 M
Is this ok [y/N]:y
~中略~
warning: /var/cache/dnf/docker-ce-stable-fa9dc42ab4cec2f4/packages/containerd.io-1.4.9-3.1.el8.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Docker CE Stable - x86_64 34 kB/s | 1.6 kB 00:00
Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) <docker@docker.com>"
Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
From : https://download.docker.com/linux/centos/gpg
Is this ok [y/N]: y
~中略~
Complete!
[root@ec2_test ~]
complete!が表示されればOKです。containerd.io*のインストールを確認します。
[root@ec2_test ~]# yum list installed containerd.io
Updating Subscription Management repositories.
Installed Packages
containerd.io.x86_64 1.4.9-3.1.el8 @docker-ce-stable
[root@ec2_test ~]#
大丈夫そう。きっとsystemctlに登録されたはず。
[root@ec2_test ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: https://docs.docker.com
[root@ec2_test ~]
いました。起動します。
[root@ec2_test ~]# systemctl start docker
[root@ec2_test ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@ec2_test ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-09-16 17:00:15 UTC; 16s ago
Docs: https://docs.docker.com
Main PID: 72234 (dockerd)
Tasks: 7
Memory: 127.8M
CGroup: /system.slice/docker.service
mq72234 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.370481701Z" level=error msg="Failed to b>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.398745131Z" level=warning msg="Your kern>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.398775938Z" level=warning msg="Your kern>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.398954561Z" level=info msg="Loading cont>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.639424076Z" level=info msg="Default brid>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.755343449Z" level=info msg="Loading cont>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.824407347Z" level=info msg="Docker daemo>
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.824512757Z" level=info msg="Daemon has c>
Sep 16 17:00:15 ec2_test systemd[1]: Started Docker Application Container Engine.
Sep 16 17:00:15 ec2_test dockerd[72234]: time="2021-09-16T17:00:15.951806492Z" level=info msg="API listen o>
[root@ec2_test ~]#
できました。ちゃっかり自動起動も設定しておきました。次のコマンドで環境チェックしてくれるらしい。
[root@ec2_test ~]# docker run hello-world
~中略~
Hello from Docker!
This message shows that your installation appears to be working correctly.
~中略~
[root@ec2_test ~]
これでインストール完了です。長くなってしまったので設定やら構築は次の記事にしたいと思います。
終わり!
コメント