WSL-UbuntuにDocker Engineを直接インストールした話

ubuntu コンピュータ
ubuntu

作業ログを記事として残しておきます。

環境

Ubuntuのバージョン22.04

 

パッケージのインストール

sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

GPG鍵を追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Dockerのリポジトリを追加

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

Docker Engineのインストール

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

動作確認

sudo docker run hello-world
# Unable to find image 'hello-world:latest' locally
# latest: Pulling from library/hello-world
# e6590344b1a5: Pull complete
# Digest: sha256:7e1a4e2d11e2ac7a8c3f768d4166c2defeb09d2a750b010412b6ea13de1efb19
# Status: Downloaded newer image for hello-world:latest
# 
# Hello from Docker! ⇐ 実行結果

Hello from Docker!のメッセージが表示されたので成功したようです。

Dockerサービスを開始とユーザー登録

sudo service docker start
sudo usermod -aG docker ユーザー名

wslを再起動しsudo無しでバージョンが取得できることを確認

docker --version
# Docker version 28.0.1, build 068a01e ⇐ 実行結果

移行sudoなしでdockerの操作が出来るはず。

Docker Hubからイメージのダウンロード

Ubuntu 22.04をダウンロード

docker pull ubuntu:22.04
# 22.04: Pulling from library/ubuntu
# 9cb31e2e37ea: Pull complete
# Digest: sha256:ed1544e454989078f5dec1bfdabd8c5cc9c48e0705d07b678ab6ae3fb61952d2
# Status: Downloaded newer image for ubuntu:22.04
# docker.io/library/ubuntu:22.04

イメージの確認

docker images
# REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
# ubuntu        22.04     a24be041d957   6 weeks ago   77.9MB
# hello-world   latest    74cc54e27dc4   7 weeks ago   10.1kB

新しいコンテナを作成し起動

docker run -it ubuntu:22.04 /bin/bash

# root@4ac233348cfe:/#

ルートでログインしている。
exitでログアウト

一般ユーザーを追加すると普通に使えるようです。ただユーザーを追加などの情報はコンテナレイヤー内でのみ保存されている
とのこと。コンテナを停止削除すると、情報は失われるらしいです。

コンテナの削除:docker rm コンテナID

イメージとしてコミットする方法もあるらしい。

コンテナの変更をイメージにコミット:docker commit コンテナID

このあたりがコンテナ型なんでしょうか今一つ理解が出来ていません。使いながら学びたいと思います。

コンテナIDを指定してコンテナを起動し接続

# 既存のコンテナを起動
docker start コンテナID

# 起動したコンテナに接続
docker attach コンテナID

これで先ほど作成したubuntuに再度ログイン出来ました。

コンテナの確認

起動中のコンテナ

docker ps
# CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
# 4c220e07e5b0   ubuntu:22.04   "/bin/bash"   14 seconds ago   Up 13 seconds             competent_ardinghelli

停止中のコンテナ含む

docker ps -a
# CONTAINER ID   IMAGE          COMMAND       CREATED              # STATUS                      PORTS     NAMES
4ac233348cfe   ubuntu:22.04   "/bin/bash"   About a minute ago   Exited (0) 40 seconds ago             admiring_shannon
# 70d00496ab08   hello-world    "/hello"      11 minutes ago       Exited (0) 11 minutes ago             keen_franklin

コンテナの停止

docker stop 4c220e07e5b0 # コンテナID
# 4c220e07e5b0

docker psで停止していることを確認

コンテナの削除

docker rme5b0 # コンテナID

コンテナ名の変更

コンテナIDの代わりにコンテナ名が使えます。
コンテナ名の確認はdocker ps -aのNAMES項目で確認できます。

コンテナ名を変更する場合は以下のコマンドを実行

docker rename 変更元のコンテナ名 変更先コンテナ名

感想

とりあえずコンテナが起動することは確認できました。
Docker的な使い方はこれから少しずつ学んで行きたいと思います。

コメント