LoginSignup
0
2

More than 1 year has passed since last update.

Windows上でLinux(Ubuntu)を起動しdockerサービスを起動する(所要時間30分)

Last updated at Posted at 2022-08-13

Windows10 or 11 でWSL2を利用してUbuntuを起動し、dockerサービスを起動するまでの
手順を解説します。

Windowsの機能の有効化

  • [コントロールパネル]-[プログラム]-[プログラムと機能]-[Windowsの機能の有効化または無効化]を起動します。

  • [Linux用Windowsサブシステム]と[仮想マシンプラットフォームにチェック]を入れ、[OK]ボタンを押します。
    image
    image

  • Windowsを再起動します。
    image

WSLの初期設定

  • WSL2をデフォルトへ設定
wsl --set-default-version 2
  • WSLの最新化
wsl --update

Ubuntu 22.04 LTSの導入

  • Microsoft Storeを起動し[Ubuntu 22.04.1 LTS]を検索してインストールします。
    image

  • アプリの一覧に[Ubuntu 22.04.1 LTS]が表示されるので、起動します。
    image

  • インストールが開始されます。
    image
    image
    image
    image
    image
    image
    image

  • アップデート

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サーバが起動します。

  • 接続確認
    image
    image

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
  • AWS CloudWatch Log に出力されます。
    image

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
  • Ubuntuの起動

  • アプリケーションメニューのUbuntu-22.04のメニューを選択すれることでUbuntuが起動します。
    image

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

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2