諸々確認作業のため、サーバ上に Docker Engine をインストールしたので、そのときのメモ。
インストールする環境
Ubuntu Macintosh/Windows 環境では Docker Desktop をインストールしているが、検証用サーバに入れるので Docker Engine をインストールすることにした。インストールする OS は Ubuntu 24.04 LTS Noble Numbat で(Server の ISO でインストールした)、とりあえず vom-nox がインストール済みの状態で、ssh ができるようになっている(公開鍵をログインユーザの ~/.ssh/authorized_keys に書き込んである)。ざっくり、以下のようなコマンドを実行した。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt vim-nox
$ sudo update-alternatives --config editor
$ sudo apt install openssh-server
$ vi ~/.ssh/authorized_keys
Docker Engine のインストールについては、Docker のドキュメントの Home>Manuals>Docker Engine>Install>Install Docker Engine を見ながら行った。
前提条件の確認
まず、インストールする前にセキュリティやファイアウォールについて確認しておけとのこと。サイトには 2 点の記述があった。
ufw や firewalld を使ってファイアウォールを管理している場合、コンテナポートを公開するとそのポートはファイアウォールをバイパスしてしまうとのこと。詳しくは Docker and ufw に書いてあるようだ。
もう一つは、iptables の話。互換性があるのは iptables-nft か iptables-legacy ということだが、最近の iptables を知らない。さらに「Firewall rules created with nft are not supported on a system with Docker installed.」(nft で作成されたファイアウォールルールは Docker がインストールされたシステムではサポートされない)とある。ファイアウォールルールセットは iptables か ip6tables でつくって、DOCKER-USER チェーンに追加しろとのこと。
上記 2 点は、とりあえず OK ということで進める。
Docker Engine のインストール
インストール方法は以下のような方法がある。
- Docer Desktop に入ってるやつを使う(Docker Desktop をインストールする)
- Docker のリポジトリを追加してインストールする
- 手動インストール(バージョン管理も手動)
- (開発環境で使うなら)インストールスクリプトでインストール
デスクトップ環境でもないので 1 ではなく、手動は面倒だから 3 でもない。運用環境を考えるときに 4 のスクリプトを読むことにして、とりあえず 2 のリポジトリを追加してインストールで進める。
依存するものをインストール
ca-certificates と curl が必要なようなのでインストールする。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install ca-certificates curl
Docker の鍵を追加
Docker のサイトから GPG の鍵をダウンロードして、キーリングに登録しておく。
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
$ sudo chmod a+r /etc/apt/keyrings/docker.asc
リポジトリの追加
Docker の apt リポジトリを使えるようにする。
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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 update
update すると以下のようにこれまで無かった Docker のリポジトリも入手するようになる。以下は自分が実行したときの出力の一部。
Get:4 https://download.docker.com/linux/ubuntu noble InRelease [48.8 kB]
Get:5 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages [15.7 kB]
Docker のインストール
インストールするパッケージは docker-ce、docker-ce-cli、containerd.io、docker-buildx-plugin、docker-compose-plugin になる。最新版は以下の手順でインストール。
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
特定のバージョンをインストールしたい場合は、まずインストールできる docker-ce パッケージのバージョンを調べる(apt-cache madison [package name]
で package name のインストール可能なバージョンの一覧を表示する)。2 番目の欄がバージョン。
$ apt-cache madison docker-ce
docker-ce | 5:27.3.1-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.3.0-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.2.1-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.2.0-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.1.2-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.1.1-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.1.0-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.0.3-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.0.2-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:27.0.1-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.1.4-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.1.3-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.1.2-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.1.1-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.1.0-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.0.2-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.0.1-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce | 5:26.0.0-1~ubuntu.24.04~noble | https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
docker-ce-cli もバージョンの指定が必要。簡易に書けるよう環境変数にバージョンをセットして、インストールする。
$ VERSION_STRING=5:26.1.4-1~ubuntu.24.04~noble
$ sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
インストール後の設定
インストール後にいくつか設定をおこなう(ようドキュメントに書いてあった)。
一般ユーザで Docker を使えるようにする
Docker をインストールすると /etc/group
にグループが追加されている。
docker:x:988:
このグループに Docker を使うユーザを追加しておく。以下はユーザ hoge と fuga を追加した例。
docker:x:988:hoge,fuga
一度、ログアウトしてログインし直して、コマンドを実行してみる。以下のように「Hello from Docker!」と表示されたら OK。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:305243c734571da2d100c8c8b3c3167a098cab6049c9a5b066b6021a60fcb966
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/
sudo で docker を起動したりしていたら、「WARNING: Error loading config file:…」設定ファイルが読み込めないとかになることがある。その場合は以下のようにオーナー・グループの変更をおこなう。
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
Docker の自動起動設定
ドキュメントでは自動起動設定について書いてあるが、Ubuntu に apt で入れた場合は自動起動するようになっていた。
systemd サービスのモジュール名は docker と containerd なので、必要があればこれらを自動起動するように設定する。
$ sudo systemctl enable docker
$ sudo systemctl enable containerd
ロギングドライバの設定
この部分は勉強不足。調べてみてから追記する。
これから
実運用環境との整合性を取るとか、やることは多そう。
アイキャッチ画像は、dotCloud, Inc. – File:Docker (container engine) logo.png, Apache License 2.0, https://commons.wikimedia.org/w/index.php?curid=52332268 を PNG に変換したもの。
コメント