私は、決してDocker推しではありません。
でも、Dockerをインストールする必要性が出てきました。
そんな事情のため、Dockerに対して愛はありません。
愛がないため、公式マニュアルに沿って淡々とインストールを行います。
そこに俺流なんて存在しません。
そのため、第三者が参考にするにはもってこいの内容になっています。
(※客観性が担保されている日本語の手順書ということです)
本記事の内容
- Dockerとは?
- Dockerのシステム要件
- Dockerのインストール
- Dockerの動作確認
- 正直、Dockerは仕方がないから使う
それでは、上記に沿って解説していきます。
Dockerとは?
Dockerとは、仮想化された環境を構築するための技術のことです。
仮想化と言うと、複数の概念が存在しています。
- ホスト型仮想化
- ハイパーバイザー型仮想化
- コンテナ型仮想化
Dockerは、コンテナ型仮想化で仮想環境を構築します。
また、Dockerはオープンソースとして開発されています。
以上、ざっくりとしたDockerの一般的な説明でした。
次は、Dockerのインストールするためのシステム要件を確認します。
Dockerのシステム要件
現時点(2021年3月31日)におけるDockerの最新バージョンは、20.10.5となります。
この最新バージョンは、2021年3月2日にリリースされています。
Dockerがインストール可能なUbuntuのバージョンは、以下。
- Ubuntu Groovy 20.10
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
- Ubuntu Xenial 16.04 (LTS)
今回は、以下バージョンのUbuntuにDockerをインストールします。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION= "Ubuntu 20.04.2 LTS" |
また、Ubuntuの場合はすべて64bitである必要があります。
対応しているアーキテクチャは、以下。
- x86_64
- amd64
- armhf
- arm64
確認しておきます。
$ arch x86_64 |
大丈夫ですね。
あと、storage driversを確認しておきます。
Dockerがサポートしているstorage driversには、以下の3つがあります。
- overlay2
- aufs
- btrfs
デフォルトでは、storage driverにoverlay2を利用しています。
storage driverを変更することも可能です。
以上、Dockerのシステム要件の説明でした。
次は、Dockerのインストールしていきます。
Dockerのインストール
Dockerリポジトリを利用して、インストールを行います。
aptがHTTPS経由でリポジトリを使用できるように必要なモノをインストールします。
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release |
Dockerの公式GPGキーを追加します。
$ curl -fsSL https: //download .docker.com /linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring .gpg |
「stable(安定版)」をリポジトリに設定します。
$ echo \ "deb [arch=amd64 signed-by= /usr/share/keyrings/docker-archive-keyring .gpg] https: //download .docker.com /linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources .list.d /docker .list > /dev/null |
準備が整いました。
では、インストールしていきましょう。
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io |
以上、Dockerのインストールが完了しました。
最後に、Dockerの動作確認を行います。
Dockerの動作確認
まず、バージョンの確認を行いましょう。
$ sudo docker version Client: Docker Engine - Community Version: 20.10.5 API version: 1.41 Go version: go1.13.15 Git commit: 55c4c88 Built: Tue Mar 2 20:18:20 2021 OS /Arch : linux /amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.5 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: 363e9a8 Built: Tue Mar 2 20:16:15 2021 OS /Arch : linux /amd64 Experimental: false containerd: Version: 1.4.4 GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e runc: Version: 1.0.0-rc93 GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec docker-init: Version: 0.19.0 GitCommit: de40ad0 |
次に、storage driverを確認します。
$ sudo docker info | grep "Storage Driver" Storage Driver: overlay2 |
overlay2がデフォルトで利用されていることを確認。
折角なので、Dockerでアプリケーションをインストール(正確には起動)してみましょう。
プログラミングと同じように、「hello world」を利用します。
$ sudo docker run hello-world |
上記を実行。
次のメッセージを確認できれば、Dockerが正常に動いているようです。
Hello from Docker! This message shows that your installation appears to be working correctly. |
以上、Dockerの動作確認が終了です。
最後に、Dockerの必要性について個人的な意見を記載しておきます。
正直、Dockerは仕方がないから使う
個人的には、ホスト型仮想化だけで十分だと考えています。
本来はホスト型仮想化で十分
ホスト型仮想化を実現するVirtualBoxについては、以下の記事で解説しています。
ただ、VirtualBoxやVMwareと言った技術はそれなりに設定が面倒です。
そこで、それらの面倒な設定をカバーしてくれるVagrantが役に立ちます。
上記の技術を用いて、ホスト型仮想化で環境を構築しています。
Vagrantを使えば、コピペでホスト型仮想環境が構築できます。
だから、コンテナ型仮想環境でチマチマする必要がないのです。
OSからドーンと仮想化できるわけですからね。
では、なぜDockerをインストールする必要があるのでしょうか?
Dockerをインストールする理由
それは、Dockerでシステム環境が配布されているケースがあるからです。
どのようなことかと言うと、例えば以下のケースです。
httpbinのGithubページ
https://github.com/postmanlabs/httpbin
httpbinは、その構築手順が記されていません。
中身自体がPythonなので、ソースを追っていけば何とかなるのでしょう。
でも、Dockerイメージが配布されています。
Dockerなら、コマンド2つでhttpbinのシステムを構築できます。
「じゃあ、Dockerを使いましょう」ということです。
本当にこの程度でしか、Dockerにはメリットを感じていません。
すでに述べたように、VagrantによるOSの仮想化が便利過ぎるのです。
そのため、コンテナ型仮想化にそこまで必要性を感じません。
まとめ
Dockerに関する記事なのに、逆にDockerをディスる感じになっています。
でも、Dockerをインストールすることにより、選択肢は確実に広がります。
少なくとも、httpbinは手間をかけずに準備できそうです。
今後、他にも似たようなケースはあるでしょう。
その場合には、Dockerを使うことになるはずです。
あとは、スペックの低いVPSなどでも活かせるかもしれません。
スペックの低いマシンには、そもそもホスト型仮想化は厳しいですからね。
ただ、そもそもVPSにはあまりモノをインストールはしません。
必要最低限のモノしかインストールしないということです。
そのため、Dockerで管理する必要性もあまりないのですけどね・・・