やりたいこと
- WSL Ubuntu に DockerCE を導入
※ Docker CE とは :
- Docker の Community Edition (無料版)のこと
- ここでは、Dockerの無料版ツールを総称して Docker CE という
- Docker Engine
- Docker Compose
- Docker Build
- etc…
環境情報
環境 |
バージョン |
OS |
Windows 11 Pro 23H2 |
OS ビルド |
22631.3527 |
Git for Windows |
2.45.0.windows.1 |
WSL |
2.1.5.0 |
Ubuntu |
22.04.4 LTS |
Windows Terminal |
1.19.11213.0 |
Visual Studio Code |
1.88.1 |
Git (Ubuntu) |
2.43.3 |
docker |
26.1.0 |
docker-compose |
v2.26.1 |
2024-05-05 現在
前提条件
Windows11 WSL Ubuntu VSCode Git GitHub 環境構築 を実施済
Docker CE インストール
Ubuntu に Docker をインストールする方法は4つある
- Dockerが提供するスクリプトを使用
- Dockerのaptリポジトリからインストール
- Dockerの公式サイトから直接パッケージをダウンロードしてインストール
- Docker Desktop for Linux をインストール
WSL環境ではインストール不可
情報源:Install Docker Engine on Ubuntu | Docker Docs
Docker インストールスクリプトを使用
この方法は、以下の場合には推奨
本番環境では、非推奨
- 中間者攻撃(MITM)などのセキュリティリスクが存在する
スクリプトはインターネットから直接ダウンロードして実行される
スクリプトの内容を事前に検証すべき
- カスタマイズ不可
本番環境用に、詳細な設定や最適化ができない
curl
コマンドを使用して Docker のインストールスクリプトをダウンロード
1
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
- スクリプトを
sudo
権限で実行して Docker をシステムにインストール
- インストールスクリプトを削除
実行ログ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8de
WSL DETECTED: We recommend using Docker Desktop for Windows.
Please get Docker Desktop from https://www.docker.com/products/docker-desktop/
You may press Ctrl+C now to abort this script.
+ sleep 20
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c install -m 0755 -d /etc/apt/keyrings
+ sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
+ sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
Version: 26.1.0
API version: 1.45
Go version: go1.21.9
Git commit: 9714adc
Built: Mon Apr 22 17:06:54 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 26.1.0
API version: 1.45 (minimum version 1.24)
Go version: go1.21.9
Git commit: c8af8eb
Built: Mon Apr 22 17:06:54 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.31
GitCommit: e377cd56a71523140ca6ae87e30244719194a521
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
================================================================================
To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:
dockerd-rootless-setuptool.sh install
Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.
To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/
WARNING: Access to the remote API on a privileged Docker daemon is equivalent
to root access on the host. Refer to the 'Docker daemon attack surface'
documentation for details: https://docs.docker.com/go/attack-surface/
================================================================================
|
Dockerのaptリポジトリからインストール
- 最新のパッケージリストを更新
ca-certificates
(SSL/TLSを使った安全な通信をするための証明書)、curl
(データ転送ツール)をインストール
1
|
sudo apt-get install ca-certificates curl
|
- パーミッション(0755)で
/etc/apt/keyrings
ディレクトリを作成
1
|
sudo install -m 0755 -d /etc/apt/keyrings
|
- Dockerの公式GPGキーをダウンロードし、
gpg
コマンドでデコードして/etc/apt/keyrings/docker.gpg
に保存
1
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
- 作成したGPGキーファイルに対して、全ユーザーが読み取り可能にするためのパーミッションを設定
1
|
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
- DockerのパッケージリポジトリをAPTのソースリストに追加
1
2
3
4
|
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のリポジトリも含まれる
- Docker Engine(
docker-ce
)、Dockerのコマンドラインインターフェース(docker-ce-cli
)、コンテナランタイム(containerd.io
)、ビルドツールプラグイン(docker-buildx-plugin
)、Docker Composeプラグイン(docker-compose-plugin
)、DockerのRootlessモード用エクストラ(docker-ce-rootless-extras
)をインストール
1
|
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
|
dockerユーザグループを追加設定
Dockerユーザグループを作成する主な理由は、sudoコマンドを使わずにDockerコマンドを実行できるようにするため
情報源:Linux post-installation steps for Docker Engine | Docker Docs
1. 新しいユーザグループdocker
を追加
2. docker
グループに現在のユーザを追加
1
|
sudo usermod -aG docker $USER
|
3. 現在のユーザーグループがdocker
に変更され、そのグループ権限を適用した状態で新しいシェルが起動
または、シェルを再起動
Docker動作確認
hello-world を使ってDockerの動作確認を簡単に行う
情報源:docker | Docker Docs
docker のバージョン確認
実行結果(例):
1
|
Docker version 26.1.0, build 9714adc
|
docker-compose のバージョン確認
実行結果(例):
1
|
Docker Compose version v2.26.1
|
docker buildx のバージョン確認
実行結果(例):
1
|
github.com/docker/buildx v0.14.0 171fcbe
|
Dockerイメージのリストを表示
エイリアス↓ 通常はこちらを使う
実行結果:
1
|
REPOSITORY TAG IMAGE ID CREATED SIZE
|
Dockerイメージは一つもない
Dockerコンテナの一覧を表示
-a
はすべてのコンテナを表示するオプション(デフォルトは実行中のみを表示)
エイリアス↓ 通常はこちらを使う
実行結果:
1
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
Dockerコンテナは一つもない
hello-world コンテナを実行
実行結果(原文):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:a26bff933ddc26d5cdf7faa98b4ae1e3ec20c4985e6f87ac0973052224d24302
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/
|
再度、Dockerイメージのリストを表示
実行結果(例):
1
2
|
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d2c94e258dcb 12 months ago 13.3kB
|
再度、Dockerコンテナの一覧を表示
実行結果(例):
1
2
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a1955e4785b hello-world "/hello" About a minute ago Exited (0) About a minute ago goofy_hopper
|
Dockerコンテナを削除
<CONTAINER> には、docker ps -a
で取得した CONTAINER ID または NAMES を指定する
1
|
docker container rm <CONTAINER>
|
エイリアス↓ 通常はこちらを使う
hello-world のコンテナIDを指定して実行:
実行結果:
hello-world のDockerコンテナが削除されたのを確認
実行結果:
1
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
hello-world のDockerイメージを削除
1
|
docker rmi d2c94e258dcb
|
実行結果(例):
1
2
3
4
|
Untagged: hello-world:latest
Untagged: hello-world@sha256:a26bff933ddc26d5cdf7faa98b4ae1e3ec20c4985e6f87ac0973052224d24302
Deleted: sha256:d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5a
Deleted: sha256:ac28800ec8bb38d5c35b49d45a6ac4777544941199075dff8c4eb63e093aa81e
|
hello-world のDockerイメージが削除されたのを確認
実行結果:
1
|
REPOSITORY TAG IMAGE ID CREATED SIZE
|
Docker CE アンインストール
参考:Install Docker Engine on Ubuntu | Docker Docs # Uninstall Docker Engine
Docker関連のパッケージをアンインストール
1
|
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
|
すべてのイメージ、コンテナ、ボリュームを削除
1
2
|
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
|
関連記事
- Windows11 WSL Ubuntu VSCode Git GitHub 環境構築
- Windows11 に Docker Desktop for Windows をインストール