29
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2でDocker環境構築(Docker Desktop有料化対策)

Last updated at Posted at 2023-08-15

従業員数が250人以上または、収益が1000万ドル以上の企業ではDocker Desktopを無料で使えません。
ですが、無料でDockerを使うことのできる抜け道?があるようです。

以下記事をベースに環境構築をしていきます。
Windows 10 + WSL 2 でDocker環境を構築する(Docker Desktop有料化対策)

WSL2をインストール

前提条件を確認する

WSL2のインストール
上記リンクの手順に従って、WSL2をインストールする。
今回LinuxディストリビューションはデフォルトのUbuntuをインストールしている。
インストールが完了したら、PCを再起動

  • PCを再起動したらUbuntuを起動。
    ユーザの作成を求められるので適当に作成。(ここで作るユーザーはパワーユーザー的なもの。sudoコマンドが使える。)
    ubuntu_1.png

  • Ubuntuで以下コマンドを入力。パッケージの更新とアップグレードをしておく。

    sudo apt update && sudo apt upgrade
    
  • 再度管理者権限でコマンドプロンプトを起動して、以下コマンドを入力し、WSLのバージョンが2になっているかを確認。

    wsl -l -v
    

    UbuntuのVERSIONが2になっており、左に*がついていたらOK。

    C:\WINDOWS\system32>wsl -l -v
      NAME      STATE           VERSION
    * Ubuntu    Running         2
    

    Ubuntuのバージョンが1になっていた場合、2にアップグレードする。

    wsl --set-version Ubuntu 2
    

    例えばDocker Desktopをインストールしているなど、既定のディストリビューション(*がついているもの)がUbuntu以外の場合、変更する。

    wsl --setdefault Ubuntu
    

rootユーザのパスワード (2024/6/16 追記)
いちいちsudoをつけるのが煩わしいので軽く調べたが、よくわからなかったので適当なものに変更する。
Ubuntuで操作。
sudoをつけることでrootユーザのパスワードではなく、上で作ったパワーユーザのパスワードでrootユーザになれる。

sudo su -

passwdコマンドでrootユーザのパスワードを変更。

passwd

Dockerインストール

ここからはUbuntuで作業していきます。
Install Docker Engine on Ubuntu(docker docs)の手順通りにインストールしていきます。
全部英語なので、以下にコマンド部分を抜粋して書いていきます。
また、以下の操作は上で作ったパワーユーザ(ubuntu)で操作する前提のため、すべてのコマンドの頭にsudoをつけていますが、rootユーザで操作するならsudoはなくてもいけます。

競合しそうなパッケージをアンインストール。
(多分インストールされていないと思いますが念のため。)

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

インストール
リポジトリをセットアップ

  1. aptがHTTPS経由でリポジトリを使用できるように更新、インストールします。
    sudo apt-get install ca-certificates curl gnupg
    
  2. Dockerの公式GPGキーを追加します。
    # 権限を指定しつつGPGキーをダウンロードするフォルダを作成。
    sudo install -m 0755 -d /etc/apt/keyrings
    # GPGキーをダウンロード。
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    # GPGキーの権限を変更。
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
  3. リポジトリをセットアップします。
    echo \
    "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] 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をインストール

  1. aptを更新。
    sudo apt-get update
    
  2. Docker Engine、containerd、Docker Compose をインストールします。
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  3. hello-worldイメージを実行して、Dockerエンジンのインストールが成功したことを確認します。
    sudo docker run hello-world
    

パワーユーザでdockerコマンドをsudoなしで実行できるようにする。

  • dockerグループに今回操作に使用しているユーザー(上で作ったubuntu)を追加する。
    sudo usermod -aG docker ubuntu
    

一旦ログアウトして、Ubuntuを再起動するとsudoなしでdockerコマンドが使用できるようになっている。

作業フォルダを同期する

特に何か設定しなくても双方からフォルダを参照することは出来るが、デスクトップやホームディレクトリから遠いので一工夫すると作業がしやすい。

①UbuntuにWindowsの作業フォルダのシンボリックリンクを作る
UbuntuからWindowsのデスクトップには/mnt/c/Users/[Windowsのユーザー名]/Desktopでアクセスできます。
しかし、毎回この長ったらしいのを入力してフォルダ移動するのが面倒なので、UbuntuのubuntuユーザーのホームディレクトリとWindowsの作業フォルダを繋げましょう。

  1. Windowsのデスクトップに作業フォルダdockerを作成。
    symbolic_link_1.png
  2. 以下コマンドを入力してシンボリックリンクを作成。
    ln -s /mnt/c/Users/[Windowsのユーザー名]/Desktop/docker docker
    
  3. ls -alコマンドでシンボリックリンクが作成できているか確認。
    symbolic_link_2.png
    これでUbuntuのdockerディレクトリとWindowsデスクトップのdockerフォルダが同期します。

②Ubuntuの作業ディレクトリのショートカットをWindowsに作る
WidousからUbuntuのホームディレクトリには\\wsl$\Ubuntu\home\[Ubuntuのユーザー名]でアクセスできます。
ホームディレクトリに作った作業フォルダのショートカットをWindowsのデスクトップに置いておくと便利です。

  1. Ubuntuのubuntuユーザーのホームディレクトリに作業ディレクトリdockerを作成。
    mkdir docker
    
  2. Windowsのエクスプローラーで\\wsl$\Ubuntu\home\[Ubuntuのユーザー名]にアクセスし、作業ディレクトリdockerのショートカットを作成、デスクトップ等に配置する。

余談
Ubuntuから/mnt/c/Users/[Windowsのユーザー名]/...でWindowsにアクセスすると遅いと聞いたが、少なくともdocker compose buildが完了する速度はあんまり変わらなかった。
コマンドが実行されている間はWindowsの操作が重かったが、こちらも①と②であんまり差が無かった気がする。(こっちは体感だけど)

  • ①の方法
    symbolic_link_3.png
  • ②の方法
    symbolic_link_4.png

検索して出てくるのは主にフロントエンドのフレームワークの記事だったので、dockerはあんまり変わらないのかも。

29
28
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
29
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?