まえがき
Ubuntu 22.04にdockerをインストールする方法をメモしておきます。Dockerをインストールする方法は公式ドキュメントでは3つ紹介されています。
- Dockerのリポジトリを登録してそこからインストールする方法
- DEBパッケージをダウンロードして手動でインストールする方法
- コンビエンススクリプトを使用して自動でインストールする方法
ここでは1のDockerのリポジトリを登録してそこからインストールする方法をつかいます。基本的にDocker公式サイトに従っています。
環境
- Ubuntu 22.04
- Docker 20.10.17
古いバージョンの削除
もし今までにDockerをインストールしたことがあって削除したい場合は削除しておきます。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
dockerリポジトリの設定
準備
必要なパッケージをインストールします。
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Dockerの公式GPGキーを取得する
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
リポジトリの登録
リポジトリを登録した後、リポジトリの設定ファイルが作成されたことを確認しています。
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dockerのインストール
Dockerのインストール
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
バージョンの確認
$ sudo docker -v
Docker version 20.10.17, build 100c701
バージョンを指定してDockerをインストールする
インストールするバージョンを指定したい場合はapt-cache madison
コマンドでインストール出来るバージョンを調べてからインストールします。
$ sudo apt update
$ apt-cache madison docker-ce
docker-ce | 5:20.10.17~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
$ sudo apt-get install docker-ce=5:20.10.13~3-0~ubuntu-jammy docker-ce-cli=5:20.10.13~3-0~ubuntu-jammy containerd.io docker-compose-plugin
バージョンの確認
$ docker -v
Docker version 20.10.13, build a224086
動作確認
$ sudo docker run hello-world
# 抜粋表示させています
Hello from Docker!
This message shows that your installation appears to be working correctly.
一般ユーザでDockerを実行できるようにする
Dockerを実行するたびにsudoをしなくて済むように一般ユーザをdockerグループに所属させます。
最初dockerグループには誰も所属していなかったのがusermod
コマンドでユーザをdockerグループに追加しています。
$ getent group | grep docker
docker:x:999:
$ sudo usermod -aG docker $USER
$ getent group | grep docker
docker:x:999:yoshi
一旦ログインし直してid
コマンドでdockerグループに所属していることを確認しています。
$ id
uid=1001(yoshi) gid=1001(yoshi) groups=1001(yoshi),27(sudo),999(docker)
すろとsudo
コマンド無しでdockerを起動できるようになりました。
$ docker run hello-world
# 抜粋表示させています
Hello from Docker!
This message shows that your installation appears to be working correctly.
docker compose
docker composeはdocker-compose-plugin
パッケージをインストールするとdockerのサブコマンドとして使えるようになっています。
$ docker compose version
Docker Compose version v2.6.0
次のようなフォルダ構成でdocker composeの動作確認をしてみます。
.
├ src
│ └ index.yml
├ Dockerfile
└ docker-compose.yml
$ cat Dockerfile
FROM nginx:1.21.6-alpine
$ cat docker-compose.yml
version: '3'
services:
nginx:
build: ./
image: nginx
ports:
- 8888:80
volumes:
- ./src:/usr/share/nginx/html
$ cat ./src/index.html
<h1>Hello World!</h1>
docker compose up
でコンテナを起動してdocker compose ps
で起動したコンテナを確認してSTATUSがrunningになっているのでOKです。
$ docker compose up -d
$ docker compose ps
NAME COMMAND SERVICE STATUS PORTS
yoshi-nginx-1 "/docker-entrypoint.…" nginx running 0.0.0.0:8888->80/tcp, :::8888->80/tcp
ブラウザでlocalhost:8888にアクセスしてHello World!と表示されればOKです。
ここでは環境の問題でcurlで確認しています。
$ curl localhost:8888
<h1>Hello World!</h1>