【備忘録】Ubuntu ServerにDocker本体とDocker Composeを一括インストールして起動確認するまで

PC

こんにちは、てつです!

今日は軽く前回OSのインストールまで終わったサーバーにDockerを入れていこうかなと思います!

前回の記事はこれです。

【HP ProDesk】コスパ最強!ヤフオクで買ったジャンクPCをボタン110円の電池1個で復活させてUbuntuサーバーを構築してみた
こんにちは、てつです!今回はヤフオクで落札したジャンクPCを復活させて、OSをインストールするところまでやってみようと思います!デスクトップPCを買うのは初めてのくせに、ジャンクPCを買う辺りにお金のなさが滲み出ていますが、壊れてもいいPC…

少し前にメインで扱ってたASUSの方で、Dockerの導入とかはやったんですけど、備忘録的な感じで書き留めていこうかなと思った次第です。

以下の記事がその記事となります。

ストレージ32GBの絶望を突破。格安ChromebookをDockerサーバーとして再定義する
こんにちは、てつです!今回は、メルカリや中古ショップでよく見かける「キーボードがボロボロ」「ストレージが32GBしかない」という格安ジャンクChromebookをDockerサーバーにする記録をお届けします。この記事のポイント:・反応の悪い…

とりあえず、Dockerのインストールからやっていきます。

以下のコマンドを実行します。

#Bash
sudo apt update
sudo apt install -y ca-certificates curl gnupg

それぞれのコマンドの意味はこんな感じです。

・ca-certificates:接続先のWebサイトが詐欺サイトではなく「本物のDocker公式サイトであること」を証明するための電子証明書です。

・curl:ブラウザを使わずに、コマンド画面から直接インターネット上のファイルをダウンロードするツールです。

・gnupg:このあと登場する「暗号鍵(GPG鍵)」を検証・管理するためのツールです

何をやってたかというと、Dockerをダウンロードする前に、インターネットと安全に通信するための「道具」を3つ用意したって感じですね。

問題なく実行できたので次に移ります。

Docker公式が配っている「本物の証明となるハンコ(暗号鍵)」をダウンロードして、Ubuntuの中に保管していきます。

以下のコマンドを実行します。

#Bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

なんでこの手順を踏むかというと、インターネットからプログラムをダウンロードするとき、途中で「ウイルス入りの偽物」にすり替えられるリスクがあるんですよね。

なので事前に、この「公式の鍵」をUbuntuに登録しておくことで、このあとダウンロードするDockerのプログラムが「間違いなく公式が作った本物であること」をOSが自動で検証(サインチェック)できるようにしてます。

以下のコマンドをすべてコピーしてBashに張り付けて実行します。

#Bash
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

このコマンドは、非常に長くて複雑に見えますが、やっていることはシンプルです。

  1. echo "文字列" 指定された文字を画面に出力するコマンド
  2. $(dpkg --print-architecture)amd64 などに自動変換 使ってるPCのCPU(Intelの64bitなら amd64)を自動で調べて文字を埋め込みます。
  3. $(. /etc/os-release && ...)noblejammy などのコードネームに自動変換 インストールされているUbuntuのバージョン(例えばUbuntu 24.04なら noble)を自動で調べて文字を埋め込みます。
  4. | sudo tee /etc/apt/sources.list.d/docker.list 上の1〜3で完成した「使ってるPCに合わせたDockerリポジトリのURL」を、docker.list というファイルに管理者権限で書き込む(保存する)処理をしています。

結果的にはこんな感じの設定ファイルが保存されています。

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

確認したいときはこのコマンドを実行します。

cat /etc/apt/sources.list.d/docker.list

補足

上述した設定ファイルは、「プログラムのアップデートがうまくいかない」「新しい外部ツールを追加したい」「不要になったツールをきれいに削除したい」という場面に直面したときに必要になります。

それについて少し補足を書き残しておくので、興味のない方はスキップしてください。

Dockerを完全に削除(アンインストール)したくなったとき

将来、サーバーからDockerを完全に消し去りたくなった場合、プログラム本体を消すだけでなく、この /etc/apt/sources.list.d/docker.list を削除しないと、Ubuntuはいつまでも「Dockerの公式ストアにアップデートがないか確認しに行こう」としてエラーを出してしまいます。

場所を知っていれば、ファイルごとゴミ箱に捨てる(rm コマンドで消す)だけで一発で整理できます。

有名ツール(Node.js、VSCode、Kubernetesなど)を入れるとき

Docker以外の高度なツールをUbuntuに直接入れたくなったとき、全く同じように「/etc/apt/sources.list.d/ の中に新しい設定ファイルを作る」という作業を行うことになります。

「あ、あの時Dockerでやったやつと同じ仕組みだな」と理解できていると、新しいツールの導入も一瞬で理解できるようになるかなとおもいます。

上述した作業で、準備がすべて整ったので、リポジトリの情報を読み込み直し(apt update)、Dockerに必要な中身を丸ごとインストールしていきます。

下記コマンドを実行します。

#Bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

エラーも吐かず、実行できたので最終確認をしていきます。

儀式コマンドを打ちます。

sudo docker run hello-world

画像内のログを少しだけ解説すると:

  • Unable to find image...locally: 「自分のPC内(ローカル)にhello-worldの型がないなぁ」と探しています。
  • Pulling from library/hello-world: 「よし、インターネット上の倉庫(Docker Hub)からダウンロード(Pull)してこよう」と動いています。

動作してるので導入成功です。

ここまで見てくださり、ありがとうございました。

今回の導入の流れは、Linuxで公式以外の外部ツールを安全に導入するときの「鉄板パターン」になります。

  1. 道具を揃えて(①)
  2. 偽物を掴まされないように偽造防止の鍵を登録し(②)
  3. 公式ショップの場所を登録して(③)
  4. 最後に一気に購入(インストール)する(④)

「ダウンロード元(サプライチェーン)の安全性をOSレベルで厳重に確認しながらインストールしている」という流れですね。

個人レベルでここまでする必要があるかといえば分かりませんが、念には念を入れよというので今回はやってみました。

ご参考にしていただければ幸いです。あと未来の自分もこれを見て思い出してくれればと思いますね。

ではでは、今回はここまで。次回もよろしくお願いします。

コメント

タイトルとURLをコピーしました