「OS標準のDockerが古すぎる・・・」
「Ubuntu 22.04 LTSに最新版Dockerをインストールしたい」
このような場合には、この記事の内容が参考となります。
この記事では、Ubuntu 22.04 LTSに最新版Dockerをインストールする方法を解説しています。
本記事の内容
- Ubuntu 22.04におけるOS標準のDocker
- Ubuntu 22.04における最新版Dockerのパッケージ取得
- Ubuntu 22.04への最新版Dockerのインストール
- Dockerの動作確認
それでは、上記に沿って解説していきます。
Ubuntu 22.04におけるOS標準のDocker
Ubuntuには、OS標準のソフトウェアが存在しています。
ApacheやNginxなどには、OS標準のソフトウェアが存在します。
そして、DockerにもOS標準のソフトウェアは存在しています。
$ sudo apt info docker Package: docker Version: 1.5-2 Priority: optional Section: universe/x11 Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Paul Tagliamonte <paultag@debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 9,216 B Depends: wmdocker Download-Size: 1,316 B APT-Sources: http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages Description: 移行用パッケージ This is a transitional package for system tray docking application. It can safely be removed.
上記の「Version」をよく見てください。
Docker 1.5.2と記載されています。
このバージョンのDockerは、なんと2015年12月3日にリリースされているのです。
利用中のOSはUbuntu 22.04であり、決して古いわけではありません。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"
さすがに、Docker 1.5.2は古過ぎですよね。
古過ぎるDockerが登録されている理由は、わかりません。
ただ、Dockerが2017年に有償版をリリースしたことが関係していると思われます。
それ以降は、無償版と有償版とで明確に区別するようになっています。
無償版のDockerは、Docker-CEと呼ばれています。
パッケージ名は、docker-ceとなります。
では、これがOS標準として存在するのかを確認してみましょう。
$ sudo apt info docker-ce Package: docker-ce State: 実際のパッケージではありません (仮想) N: 候補が存在しないので、パッケージ docker-ce の候補バージョンを選べません N: 純粋な仮想パッケージのため、パッケージ 'docker-ce' のバージョンを選べません N: パッケージが見つかりません
パッケージ自体が、存在していませんね。
とりあえず、OS標準のDockerはインストールしてはいけません。
パッケージ名で言うと、「docker」のインストールはやめましょう。
以上、Ubuntu 22.04におけるOS標準のDockerについて説明しました。
次は、Ubuntu 22.04における最新版Dockerのパッケージ取得について説明します。
Ubuntu 22.04における最新版Dockerのパッケージ取得
現時点(2022年5月)でのDockerの最新版は、20.10.16となります。
Docker 20.10.16は、2022年5月12日にリリースされています。
この最新版Docker は、PPAを利用してインストール可能です。
Dockerに関しては、Dockerの公式がリポジトリを公開しています。
それを利用して、最新版Dockerのパッケージ取得します。
そのために必要なモノをインストールしておきます。
リポジトリへの追加処理に必要なツールと言えばよいかもしれません。
$ 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
そして、リポジトリへの追加を行います。
$ echo "deb [arch=$(dpkg --print-architecture) 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
上記が実行できたら、ファイルを確認します。
$ cat /etc/apt/sources.list.d/docker.list deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu jammy stable
22.04 LTSのコードネームである「jammy」を確認できます。
あと、「stable」で安定版ということも確認しておきます。
ここまで確認できたら、パッケージリストを更新します。
$ sudo apt-get update
では、取得できたパッケージを確認してみましょう。
ここで注意が必要です。
再度、「docker」を調べても何も変わりません。
追加したのは、Dockerの無償版であるDocker-CEでした。
よって、「docker-ce」の情報を確認します。
$ sudo apt info docker-ce Package: docker-ce Version: 5:20.10.16~3-0~ubuntu-jammy Priority: optional Section: admin Maintainer: Docker <support@docker.com> Installed-Size: 100 MB Depends: containerd.io (>= 1.4.1), docker-ce-cli, iptables, libseccomp2 (>= 2.3.0), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.97), libsystemd0 Recommends: apparmor, ca-certificates, docker-ce-rootless-extras, git, libltdl7, pigz, procps, xz-utils Suggests: aufs-tools, cgroupfs-mount | cgroup-lite Conflicts: docker (<< 1.5~), docker-engine, docker-engine-cs, docker.io, lxc-docker, lxc-docker-virtual-package Replaces: docker-engine Homepage: https://www.docker.com Download-Size: 21.0 MB APT-Sources: https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages Description: Docker: the open-source application container engine Docker is a product for you to build, ship and run any application as a lightweight container . Docker containers are both hardware-agnostic and platform-agnostic. This means they can run anywhere, from your laptop to the largest cloud compute instance and everything in between - and they don't require you to use a particular language, framework or packaging system. That makes them great building blocks for deploying and scaling web apps, databases, and backend services without depending on a particular stack or provider.
デフォルトでは、Docker-CEのパッケージを確認できませんでした。
しかし、リポジトリに追加することでDocker-CEのパッケージを確認できるようになりました。
以上、Ubuntu 22.04における最新版Dockerのパッケージ取得について説明しました。
次は、Ubuntu 22.04への最新版Dockerのインストールを説明します。
Ubuntu 22.04への最新版Dockerのインストール
Dockerのインストールは、次のコマンドを用います。
必要なモノをまとめてインストールします。
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
インストールは、結構すぐに終わります。
インストールが完了したら、バージョンを確認しましょう。
$ sudo docker version Client: Docker Engine - Community Version: 20.10.16 API version: 1.41 Go version: go1.17.10 Git commit: aa7e414 Built: Thu May 12 09:18:18 2022 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.16 API version: 1.41 (minimum version 1.12) Go version: go1.17.10 Git commit: f756502 Built: Thu May 12 09:16:22 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.4 GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16 runc: Version: 1.1.1 GitCommit: v1.1.1-0-g52de29d docker-init: Version: 0.19.0 GitCommit: de40ad0
最新バージョンが確認できます。
なお、root権限で実行しないとパーミッションで以下の文句を言われます。
Got permission denied while trying to connect to the Docker daemon socket at unix
文句を言われないためには、利用中のユーザーをdockerグループに追加することもありです。
dokcerグループへの追加は、以下のコマンドで行います。
sudo usermod -aG docker <your-user>
上記を反映するには、再ログインが必要です。
以上、Ubuntu 22.04への最新版Dockerのインストールについて説明しました。
最後に、Dockerの動作確認を説明します。
Dockerの動作確認
動作確認の王道である「hello world」を実行します。
Dockerには、専用のアプリケーションが用意されています。
それを利用して、Dockerの動作確認を行います。
root権限で以下を実行。
sudo docker run hello-world
実行した結果は、以下となります。
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17 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の動作確認は問題ありません。
以上、Dockerの動作確認を説明しました。