お金をかけずにサーバーの勉強をしよう

Dockerエンジン インストール

2023年12月16日

メニューへ戻る

Ubuntu Server 22.04.3に Dockerエンジンをインストールします。

Linuxコンテナの世界ではほぼ標準と言って良いのが Docker でしょう。

出た当初は使い所がよく分かりませんでしたが、数年を経た今では技術的なノウハウの発信もあって、様々なフィールドで活用されているようです。

今やサーバーエンジニアとして押さえておくべき技術の一つとなりましたね。


Ubuntu 22.04.3には snap版のパッケージもありますが、最新版を使いたいので本家サイトから apt版を入れます。

Ubuntuへのインストール方法は Dockerのサイトで具体的に書かれていますので、そのままそれに従います。
2023年12月16日時点での最新バージョンは、24.0.7でした。


それではインストールしてみましょう。

前提となる Ubuntu Serverの環境は、
Ubuntu Linux Serverをインストール」と「Ubuntu Serverの初期設定
で作った、Ubuntu Server 22.04.3になります。

Ubuntuへのインストール方法はこちら。
Install Docker Engine on Ubuntu

Uninstall old versions
新規インストールという前提で、この手順は割愛します。


Install using the apt repository
ここで以下の作業をします。

リポジトリデータベースを最新状態にします。

subro@UbuntuServer2204-1:~$ sudo sudo apt-get update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
取得:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease
取得:4 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
229 kB を 2秒 で取得しました (93.5 kB/s)
パッケージリストを読み込んでいます... 完了


HTTPSでダウンロードするための前提となるツールをインストールします。

subro@UbuntuServer2204-1:~$ sudo apt-get install -y ca-certificates curl gnupg lsb-release
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
ca-certificates はすでに最新バージョン (20230311ubuntu0.22.04.1) です。
ca-certificates は手動でインストールしたと設定されました。
curl はすでに最新バージョン (7.81.0-1ubuntu1.15) です。
curl は手動でインストールしたと設定されました。
gnupg はすでに最新バージョン (2.2.27-3ubuntu2.1) です。
gnupg は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。

私の環境では既にインストールされていて、全て最新になっていました。

HTTPSで使う公開鍵(GPG key)のダウンロードをし、
Dockerのリポジトリを参照先に追加し、
リポジトリデータベースをアップデートして Dockerのリポジトリ情報を取得します。

subro@UbuntuServer2204-1:~$ sudo install -m 0755 -d /etc/apt/keyrings

subro@UbuntuServer2204-1:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

subro@UbuntuServer2204-1:~$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

subro@UbuntuServer2204-1:~$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
取得:1 https://download.docker.com/linux/ubuntu jammy InRelease [48.8 kB]
取得:2 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages [23.0 kB]
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
ヒット:4 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease
ヒット:5 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease
ヒット:6 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease
71.8 kB を 2秒 で取得しました (41.3 kB/s)
パッケージリストを読み込んでいます... 完了

Dockerをインストールします。
途中で「インストールして良いか」と聞かれるのも面倒くさいので、apt-getコマンドには -y オプションを入れました。
出てくるメッセージが長いですが、参考に全て載せます。

subro@UbuntuServer2204-1:~$ sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  docker-ce-rootless-extras libltdl7 libslirp0 pigz slirp4netns
提案パッケージ:
  aufs-tools cgroupfs-mount | cgroup-lite
以下のパッケージが新たにインストールされます:
  containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin libltdl7 libslirp0 pigz slirp4netns
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 2 個。
115 MB のアーカイブを取得する必要があります。
この操作後に追加で 411 MB のディスク容量が消費されます。
取得:1 https://download.docker.com/linux/ubuntu jammy/stable amd64 containerd.io amd64 1.6.26-1 [29.5 MB]
取得:2 http://jp.archive.ubuntu.com/ubuntu jammy/universe amd64 pigz amd64 2.6-1 [63.6 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 libltdl7 amd64 2.4.6-15build2 [39.6 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 libslirp0 amd64 4.6.1-1build1 [61.5 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu jammy/universe amd64 slirp4netns amd64 1.0.1-2 [28.2 kB]
取得:6 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-buildx-plugin amd64 0.11.2-1~ubuntu.22.04~jammy [28.2 MB]
取得:7 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-ce-cli amd64 5:24.0.7-1~ubuntu.22.04~jammy [13.3 MB]
取得:8 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-ce amd64 5:24.0.7-1~ubuntu.22.04~jammy [22.6 MB]
取得:9 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-ce-rootless-extras amd64 5:24.0.7-1~ubuntu.22.04~jammy [9,030 kB]
取得:10 https://download.docker.com/linux/ubuntu jammy/stable amd64 docker-compose-plugin amd64 2.21.0-1~ubuntu.22.04~jammy [11.9 MB]
115 MB を 11秒 で取得しました (10.6 MB/s)
以前に未選択のパッケージ pigz を選択しています。
(データベースを読み込んでいます ... 現在 110120 個のファイルとディレクトリがインストールされています。)
.../0-pigz_2.6-1_amd64.deb を展開する準備をしています ...
pigz (2.6-1) を展開しています...
以前に未選択のパッケージ containerd.io を選択しています。
.../1-containerd.io_1.6.26-1_amd64.deb を展開する準備をしています ...
containerd.io (1.6.26-1) を展開しています...
以前に未選択のパッケージ docker-buildx-plugin を選択しています。
.../2-docker-buildx-plugin_0.11.2-1~ubuntu.22.04~jammy_amd64.deb を展開する準備をしています ...
docker-buildx-plugin (0.11.2-1~ubuntu.22.04~jammy) を展開しています...
以前に未選択のパッケージ docker-ce-cli を選択しています。
.../3-docker-ce-cli_5%3a24.0.7-1~ubuntu.22.04~jammy_amd64.deb を展開する準備をしています ...
docker-ce-cli (5:24.0.7-1~ubuntu.22.04~jammy) を展開しています...
以前に未選択のパッケージ docker-ce を選択しています。
.../4-docker-ce_5%3a24.0.7-1~ubuntu.22.04~jammy_amd64.deb を展開する準備をしています ...
docker-ce (5:24.0.7-1~ubuntu.22.04~jammy) を展開しています...
以前に未選択のパッケージ docker-ce-rootless-extras を選択しています。
.../5-docker-ce-rootless-extras_5%3a24.0.7-1~ubuntu.22.04~jammy_amd64.deb を展開する準備をしています ...
docker-ce-rootless-extras (5:24.0.7-1~ubuntu.22.04~jammy) を展開しています...
以前に未選択のパッケージ docker-compose-plugin を選択しています。
.../6-docker-compose-plugin_2.21.0-1~ubuntu.22.04~jammy_amd64.deb を展開する準備をしています ...
docker-compose-plugin (2.21.0-1~ubuntu.22.04~jammy) を展開しています...
以前に未選択のパッケージ libltdl7:amd64 を選択しています。
.../7-libltdl7_2.4.6-15build2_amd64.deb を展開する準備をしています ...
libltdl7:amd64 (2.4.6-15build2) を展開しています...
以前に未選択のパッケージ libslirp0:amd64 を選択しています。
.../8-libslirp0_4.6.1-1build1_amd64.deb を展開する準備をしています ...
libslirp0:amd64 (4.6.1-1build1) を展開しています...
以前に未選択のパッケージ slirp4netns を選択しています。
.../9-slirp4netns_1.0.1-2_amd64.deb を展開する準備をしています ...
slirp4netns (1.0.1-2) を展開しています...
docker-buildx-plugin (0.11.2-1~ubuntu.22.04~jammy) を設定しています ...
containerd.io (1.6.26-1) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
docker-compose-plugin (2.21.0-1~ubuntu.22.04~jammy) を設定しています ...
libltdl7:amd64 (2.4.6-15build2) を設定しています ...
docker-ce-cli (5:24.0.7-1~ubuntu.22.04~jammy) を設定しています ...
libslirp0:amd64 (4.6.1-1build1) を設定しています ...
pigz (2.6-1) を設定しています ...
docker-ce-rootless-extras (5:24.0.7-1~ubuntu.22.04~jammy) を設定しています ...
slirp4netns (1.0.1-2) を設定しています ...
docker-ce (5:24.0.7-1~ubuntu.22.04~jammy) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
man-db (2.10.2-1) のトリガを処理しています ...
libc-bin (2.35-0ubuntu3.5) のトリガを処理しています ...
Scanning processes...
Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

インストールできました。


手順にある通り、テストで hello-worldコンテナを動かしてみます。

subro@UbuntuServer2204-1:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:ac69084025c660510933cca701f615283cdbb3aa0963188770b54c31c8962493
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/

白文字がコンテナが動くまでに、コンテナのイメージデータをダウンロードしているところ。
黄文字が hello-worldコンテナが動いて出してきたメッセージです。

上手く動いているようです。


Dockerエンジンをインストールしても特に何も起きませんで、コンテナを動かしてナンボですね。
このホームページでは、Dockerコンテナで何かやっているもの(Localstackとか)もありますので、そちらもどうぞ見てやって下さい。


最近の Docker本はほとんど Kubernetesと抱き合わせになっていますね。

Docker実践ガイド 第3版 (impress top gear) [ 古賀 政純 ]

価格:4180円
(2023/12/16 19:55時点)
感想(0件)

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん [ 小笠原種高 ]

価格:2992円
(2023/12/16 19:55時点)
感想(4件)

さわって学ぶクラウドインフラ docker基礎からのコンテナ構築 [ 大澤 文孝 ]

価格:2970円
(2023/12/16 19:56時点)
感想(1件)