0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

aptにDockerリポジトリを追加してDockerをインストールする

Posted at

今までおまじない的に使ってきたaptをちょっと勉強したので、アウトプットの練習も兼ねて実際にaptにDockerリポジトリを追加してDockerをインストールしてみる。
環境は以下の通り。

OS: Ubuntu 24.04
shell: fish

aptについては以下を参考にさせて頂いた。

aptにDockerリポジトリを追加する

とりあえずDockerのドキュメントを確認して手順通りにやってみる。

順にコマンドを実行していく。

❯ sudo apt install ca-certificates curl
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
ca-certificates はすでに最新バージョン (20240203) です。
curl はすでに最新バージョン (8.5.0-2ubuntu10.3) です。

関連パッケージは既にインストール済み。

sudo install -m 0755 -d /etc/apt/keyrings

installコマンドなるものがあるらしい。
cpと似ているけど、パーミッションの設定やディレクトリの作成などを同時にやってくれるっぽい。
これは単にディレクトリ作ってパーミッション設定してるぽい。

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

Dockerの公開鍵を取得して、先程作成したディレクトリに出力している。
curlのオプションはいずれもエラー出力やリダイレクトに関するものなのであまり気にしなくて良さそう。

/etc/apt/keyrings🔒
❯ ll
合計 4.0K
-rw-r--r-- 1 root root 3.8K  9月 13 11:02 docker.asc

ちゃんとできてる。

sudo chmod a+r /etc/apt/keyrings/docker.asc

パーミッションを設定。

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

とりあえず前部分だけ流して結果を見てみる。

❯ 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"
/etc/os-release (line 1): Unsupported use of '='. In fish, please use 'set PRETTY_NAME "Ubuntu 24.04.1 LTS"'.
PRETTY_NAME="Ubuntu 24.04.1 LTS"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
from sourcing file /etc/os-release
in command substitution
.: Error while reading file '/etc/os-release'
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu    stable

なんかエラー出た。
バージョンコードネームの部分が取得できてないっぽい。
fishシェル使っているからその影響かな?

とりあえず、/etc/os-releaseの中身を見てみる。

❯ cat /etc/os-release
(略)
VERSION_CODENAME=noble
(略)

この値が取れれば良さそう。

色々調べて見たところ、lsb_releaseというコマンドでこのあたりの情報が取得できるっぽい。
というわけでこのパッケージを導入する。

❯ sudo apt install lsb-release
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
lsb-release はすでに最新バージョン (12.0-2) です。

入ってた。

❯ lsb_release -cs
No LSB modules are available.
noble

これで取れそうなので、一部書き換えて実行する。

❯ echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable"
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu   noble stable

~
❯

大丈夫そうなので、改めてコマンドを流す。

❯ echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

~
❯

参考にしたサイトには

Ubuntu公式のリポジトリ情報は/etc/apt/sources.listに記述され、サードパーティのリポジトリ情報は/etc/apt/sources.list.d/以下に「~.list」または「~.sources」というファイル名で記述する。

と記載があるので、Dockerのリポジトリをこの段階で追加していると見て良さそう。
ファイルの内容も確認しておく。

❯ cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu   noble stable

~
❯

Dockerをインストールする

リポジトリが追加できたので、Dockerをインストールしてみる。

❯ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
提案パッケージ:
  aufs-tools cgroupfs-mount | cgroup-lite
以下のパッケージが新たにインストールされます:
  containerd.io docker-buildx-plugin docker-ce docker-ce-cli
  docker-compose-plugin

  (中略)

docker-compose-plugin (2.29.2-1~ubuntu.24.04~noble) を設定しています ...
docker-ce-cli (5:27.2.1-1~ubuntu.24.04~noble) を設定しています ...
docker-ce (5:27.2.1-1~ubuntu.24.04~noble) を設定しています ...
man-db (2.12.0-4build2) のトリガを処理しています ...

~ took 20s
❯

インストールできた!
正常にインストールされているか確認

❯ docker -v
Docker version 27.2.1, build 9e34c9b

~
❯

問題なさそう。

listファイルの中身

こちらを参考に中身を見てみる。

中身の形式は以下のようになってるっぽい。

deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu   noble stable

uriはリポジトリのURIを指定していて、
suiteにはUbuntuのコードネームを含む「noble stable」が指定されているという理解でいいのかな。

参考にしたサイトによると、全てのaptコマンドのバージョンが1.4以上で、signed-byに公開鍵のパスを指定すれば、鍵をdearmorしなくても大丈夫みたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?