Categories: Ubuntuwsl技術

Dockerとは?WSLでDockerを使う方法と注意点|初心者向け環境構築ガイド

近年、ソフトウェア開発の現場ではDockerやコンテナ技術が広く利用されるようになりました。特にWindowsユーザーにとっては、WSL(Windows Subsystem for Linux)と組み合わせることで開発環境の構築や運用が格段に便利になっています。
この記事では、Dockerとは何かという基礎知識から、WSL環境でDockerを導入・活用する方法、そして注意点までを初心者にも分かりやすく解説します。
これからDockerを始めたい方、WSLとの連携方法を知りたい方におすすめの内容です。


Dockerとは

Docker(ドッカー)は、コンテナ型仮想化技術を利用してアプリケーションを効率的に開発・デプロイ・管理するためのプラットフォームです。

従来の仮想化技術(仮想マシン)では、それぞれの仮想環境ごとにゲストOSをインストールし、まるで独立したサーバーのように利用していました。このため、仮想マシンの作成や起動には数分かかることもあり、リソース消費も大きいという課題がありました。

一方、DockerはホストOSのカーネルを共有して利用するため,ゲストOSが不要です。これにより,仮想マシンよりもはるかに軽量かつ高速にアプリケーション実行環境(コンテナ)を起動・停止できます。

主な特徴とメリット

  • 軽量・高速
    コンテナはOSカーネルを共有するため、起動や停止が非常に速い。
  • 環境の再現性
    アプリケーションとその依存関係(ライブラリや設定など)をまとめてパッケージ化できるため、開発・テスト・本番など異なる環境でも同じ動作を保証しやすい。
  • 再利用・配布が容易
    Dockerイメージとして環境をコード化できるため、チームでの共有やバージョン管理が簡単。
  • OS間の違いを吸収
    異なるOS上でも同じDockerイメージが動作するため,環境差異によるトラブルを減らせる。

Dockerの主な用語

  • コンテナ
    アプリケーションの実行環境。Docker上で動作する単位。
  • Dockerイメージ
    コンテナを作成するためのテンプレート。必要なファイルや設定が含まれる。
  • Dockerfile
    Dockerイメージをビルドするための設計図。ビルド手順をコードで記述する。

WSL(Windows Subsystem for Linux)でDockerを使うメリット

  • Windows上でLinuxコマンドやツールがそのまま利用できる
  • Dockerのパフォーマンスが向上する
  • 開発環境の3構築や共有が容易になる

WSLでDockerを使う手順

PowerShellを管理者権限で開く

wsl --install

これでWSLがインストールされます。

Microsoft StoreからUbuntuをインストール

  • Microsoft Storeで「Ubuntu」を検索し、インストール。
  • 初回起動時にユーザー名とパスワードを設定。

Ubuntu(WSL)内でパッケージを最新化

sudo apt-get update
sudo apt-get upgrade -y

必要なパッケージをインストール

sudo apt-get install ca-certificates curl gnupg

Docker公式GPGキーを追加

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Docker公式リポジトリを追加

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をインストール

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

ユーザーをdockerグループに追加

sudo usermod -aG docker $USER

追加後は一度ログアウトして再ログイン。

動作確認

sudo docker run hello-world

コマンドを実行し、Dockerが正しく動作するか確認します。


WSLでDockerを使う際の注意点

ファイルシステムの違いによるパフォーマンス低下

  • /mnt/c などWindows側のファイルシステムにDockerのファイルを置くと、読み書きが非常に遅くなる
  • Linux(WSL)側の/home/以下にファイルを置くことでパフォーマンスが大幅に改善

ユーザー権限の設定

  • Dockerコマンドを使うにはユーザーをdockerグループに追加する必要がある
  • 追加後はログアウト&再ログインが必要

Docker Desktopとの関係

  • Docker Desktopをインストールしている場合、WSLとの連携設定が必要
  • WSL2のデフォルトディストリビューションが正しく設定されているか確認
    アスタリスクが付いているのがデフォルト設定
wsl --list --verbose

ファイルの所有権問題

  • WSL側からWindows側のファイルを編集すると、所有権やパーミッションの問題が発生することがある
  • プロジェクトファイルはできるだけWSL側に置き,必要に応じてchownで所有権を変更

systemdの自動起動

  • WSL2ではsystemdがデフォルトで有効になっていない場合がある
  • /etc/wsl.confに以下を追記し,WSLを再起動
    これでDockerデーモンが自動起動するようになる
[boot] systemd=true 

WindowsでDockerを利用する際のライセンスに関する注意

Windows環境でDockerを利用する場合、特に「Docker Desktop」を利用する際にはライセンスに注意が必要です。
Docker Desktopは、個人利用や教育目的、小規模なオープンソースプロジェクトなど非商用利用では無料で利用できますが、企業や組織による商用利用の場合、従業員数や会社規模によって有料ライセンスの購入が必要となります。
また、WSL環境で直接Docker Engineを導入する場合も、商用利用の際にはライセンス条項の確認をおすすめします。


まとめ

Dockerとは何か、その特徴やメリットを理解した上でWSLと連携して使うことで、Windowsでも快適かつ効率的な開発環境を100%再現できます。
ただし、Windowsで商用利用する場合はライセンスに注意が必要です。この記事を参考に、ぜひDockerとWSLを活用してみてください。

にいやん

出身 : 関西 居住区 : 関西 職業 : 組み込み機器エンジニア (エンジニア歴13年) 年齢 : 38歳(2022年11月現在) 最近 業務の効率化で噂もありPython言語に興味を持ち勉強しています。 そこで学んだことを記事にして皆さんとシェアさせていただければと思いブログをはじめました!! 興味ある記事があれば皆さん見ていってください!! にほんブログ村