Windows10 or 11 でWSL2を利用してUbuntuを起動し、dockerサービスを起動するまでの
手順を解説します。
Windowsの機能の有効化
-
[コントロールパネル]-[プログラム]-[プログラムと機能]-[Windowsの機能の有効化または無効化]を起動します。
WSLの初期設定
- WSL2をデフォルトへ設定
wsl --set-default-version 2
- WSLの最新化
wsl --update
Ubuntu 22.04 LTSの導入
-
アップデート
sudo apt update
sudo apt upgrade
ssh サーバの起動
- パスワードログイン設定
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
- ssh キー情報の生成
sudo ssh-keygen -A
-->
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
- sshサービス起動
sudo /usr/libexec/wsl-systemd
sudo /usr/libexec/nslogin
sudo systemctl start ssh
ここまでの操作でsshサーバが起動します。
dockerのインストール
- リポジトリセットアップ
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
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インストール
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 利用ユーザへのdocker権限付与
sudo usermod -g docker user001
- Dockerサービス起動
sudo systemctl start docker
- エラーが発生します。
user001@DESKTOP-A0AE54A:~$ sudo systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.
user001@DESKTOP-A0AE54A:~$ systemctl status docker.service
× docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: failed (Result: exit-code) since Sun 2022-08-21 12:17:51 JST; 9s a>
TriggeredBy: × docker.socket
Docs: https://docs.docker.com
Process: 2253 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/contain>
Main PID: 2253 (code=exited, status=1/FAILURE)
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: docker.service: Scheduled restart j>
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: Stopped Docker Application Containe>
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: docker.service: Start request repea>
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: docker.service: Failed with result >
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: Failed to start Docker Application >
...skipping...
× docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: failed (Result: exit-code) since Sun 2022-08-21 12:17:51 JST; 9s a>
TriggeredBy: × docker.socket
Docs: https://docs.docker.com
Process: 2253 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/contain>
Main PID: 2253 (code=exited, status=1/FAILURE)
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: docker.service: Scheduled restart j>
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: Stopped Docker Application Containe>
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: docker.service: Start request repea>
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: docker.service: Failed with result >
Aug 21 12:17:51 DESKTOP-A0AE54A systemd[1]: Failed to start Docker Application >
- エラー回避
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/sbin/iptables-nft 20 auto mode
* 1 /usr/sbin/iptables-legacy 10 manual mode
2 /usr/sbin/iptables-nft 20 manual mode
Press to keep the current choice[*], or type selection number:1
- Docker Service起動
sudo systemctl start docker
- Docker service起動確認
sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: active (running) since Sun 2022-08-21 12:22:53 JST; 2min 54s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 2313 (dockerd)
Tasks: 13
Memory: 42.5M
CGroup: /system.slice/docker.service
mq2313 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont>
- Docker 起動確認
※ 一旦ターミナル(teraterm)を閉じてから再接続して実施する必要があります。
docker run hello-world
AWS CLIのインストール(AWSを使う場合の参考)
sudo apt-get install -y curl
sudo apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo aws/install
aws configure
You can now run: /usr/local/bin/aws --version
user001@DESKTOP-A0AE54A:~$ aws configure
AWS Access Key ID [None]: ************************
AWS Secret Access Key [None]: ************************
Default region name [None]: ap-northeast-1
Default output format [None]: json
Docker AWS LOGの利用
以下の手順を実行することで、DockerログをAWS Cloudwatchへ転送できます。
- AWS認証情報をSystemdへ設定
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo touch /etc/systemd/system/docker.service.d/aws-credentials.conf
sudo vi /etc/systemd/system/docker.service.d/aws-credentials.conf
aws-credentials.conf
[Service]
Environment="AWS_ACCESS_KEY_ID=<aws_access_key_id>"
Environment="AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>"
- Systemd 設定更新
sudo systemctl daemon-reload
- Docker Service再起動
sudo systemctl restart docker
- Docker service起動確認
sudo systemctl status docker
- ログ出力確認
docker run --log-driver=awslogs --log-opt awslogs-region=ap-northeast-1 --log-opt awslogs-group=/docker/hello-world --log-opt awslogs-create-group=true hello-world
Ubuntuの起動/停止/各種コマンド
- 状態確認
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-22.04 Running 2
- 停止
wsl --terminate Ubuntu-22.04
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-22.04 Stopped 2
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-22.04 Running 2
Ubuntuの停止=>起動を実行すると、systemdサービスが停止状態に戻るので
下記コマンドで[systemd]及び[ssh][Docker]サービスを起動します。
sudo /usr/libexec/wsl-systemd
Ubuntuのアンインストール
最初からやり直す場合にだけ実施して下さい。
wsl --unregister Ubuntu-22.04
登録を解除しています...
👇参考URL
- WSL コマンドのインストール
- Windows Subsystem for Linuxにssh接続する
- https://docs.docker.com/engine/install/ubuntu/
- Linux ディストリビューションの登録解除またはアンインストール
- https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
- https://www.osarusystem.com/misc/windows11_wsl_ubuntu2204.html
- https://level69.net/archives/31296
- https://wdullaer.com/blog/2016/02/28/pass-credentials-to-the-awslogs-docker-logging-driver-on-ubuntu/