この記事ではUbuntuにDockerをインストールする方法を解説します。対象のUbuntuのバージョンは24.04です。
はじめに
2024年4月25日にUbuntu 24.04(Noble Numbat)がリリースされました。無償のままでも5年間サポートされる長期サポート版です。いわゆるLTS(Long Time Support)です。そのためリリースが待ち望まれていました。
この記事では、そのUbuntu 24.04にDockerをインストールする方法を解説します。
Ubuntuとは?
Ubuntuは、Debian GNU/Linuxをベースとした無料のオープンソースオペレーティングシステムです。「誰にでも使えるOS」をコンセプトに開発されており、初心者でも使いやすいように直感的なインターフェースと充実したサポート体制が整っています。
そのUbuntuの最新バージョン24.04が2024年4月25日にリリースされました。
Dockerとは?
Dockerは、コンテナと呼ばれる軽量なプラットフォームです。コンテナは仮想環境を作成、配布、実行することができます。アプリケーションに必要なコード、ランタイム環境、ライブラリなどをすべて含みます。そのため、あたかも独立したOSのように動作します。
開発環境
インストール方法
公式サイトでは以下の4つのインストール方法を紹介しています。
- Docker Desktop for Linuxをインストールする方法
- Dockerのaptリポジトリを登録して、そこからインストールする方法
- debパッケージを手動でダウンロードして、それをインストールする方法
- インストールスクリプトを使用して自動でインストールする方法
- テスト・開発環境でのみ推奨されています
この記事では本番のサーバー環境を想定して、2の方法を解説します。
基本的に公式サイトの内容に沿って作業を行います。
古いバージョンの削除
競合を避けるためにアンインストールします。
非公式Dockerパッケージのインストールをしていた場合のみ必要な作業です。
$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
aptリポジトリを使ってインストールする
aptリポジトリを設定する
設定に必要なパッケージをインストールしてきます。
$ sudo apt install ca-certificates curl
DockerリポジトリのGPGキーを取得してきます。
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /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
Dockerをインストールする
最新バージョンをインストールするには次のようにapt install
コマンドを実行します。
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストールが完了したらバージョンの確認をしてみましょう。
$ docker --version
Docker version 26.1.0, build 9714adc
動作確認
それでは、動作確認をしてみましょう。
$ sudo docker run hello-world
次のように表示されていれば正常に動作しています。
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グループに追加します。
$ sudo usermod -aG docker $USER
次に、変更した設定を反映します。もしくはマシンを再起動してもOKです。
$ newgrp docker
sudo無しでDockerが実行できるようになっています。
$ docker run hello-world
docker compose
インストール
docker composeはdocker-compose-plugin
パッケージをインストールすることで実行できるようになります。docker-compose-plugin
はDockerをインストールするの章ですでにインストールしています。
docker compose version
コマンドで確認してみましょう。
$ docker compose version
Docker Compose version v2.26.1
動作確認
それでは、動作確認のためにnginxでwebサーバーを立ち上げてみましょう。Dockerfile、compose.yaml、src/index.htmlの3つのファイルを用意します。
.
├── Dockerfile
├── compose.yaml
└── src
└── index.html
各ファイルは以下のような内容にします。
Dockerfile
公式のnginxイメージnginx:1.26.0-alpine-slim
を利用します。ローカルのindex.html
をイメージにコピします。
FROM nginx:1.26.0-alpine-slim
COPY ./src/index.html /usr/share/nginx/html
Dockerfilecompose.yaml
カレントディレクトリにあるDockerfile
に従ってイメージをビルドします。ビルドしたイメージはweb-server:1.0.0
という名前にします。立ち上げたコンテナの名前はweb-server
にします。そして、ホストの8080番ポートをコンテナの80番ポートに転送します。
services:
nginx:
build: ./
image: web-server:1.0.0
container_name: web-server
ports:
- 8080:80
YAMLsrc/index.html
デフォルトで表示するページです。簡単にするために、Hello, World!と表示するだけにします。
<h1>Hello, World!</h1>
HTML実行
それでは、Dockerfile
やcompose.yaml
のあるディレクトリで次のコマンドを実行します。
$ docker compose up -d --build
アクセスすると「Hello, World!」が表示されると思います。
関連記事
さまざまなOSにDockerをインストールする手順を解説しています。
おわりに
この記事ではDockerをインストールする方法を解説しました。Dockerのaptリポジトリからインストールする方法を採用しました。そして、docker compose
を使って簡単なコンテナを立ち上げる方法を解説しました。
Dockerを使いこなしてつよつよエンジニア目指しましょう!つよつよエンジニアになるための、お役に立てればと思います。これからも情報発信していくのでよろしくお願いします。コメントやご要望、ご意見もお待ちしています。
コメント