以下不十分なとこ書き換え中
行いたいこと
WIndows11上に以下の様な開発環境を構築したい
docker desktopを用いない理由
ライセンス料払えないので。。
最終的に行えるようになったこと
VSCodeの開発に関しては、後ほど解説
前提条件
- WSL2の初期構築は実行済であること
WindowsでWSL2を使って「完全なLinux」環境を作ろう! - カゴヤのサーバー研究室 - VSCodeをWindowsにインストール済であること
実施方法
WSLにUbuntu 24.04 LTSをインストールし、起動
wsl --install Ubuntu-24.04
wsl
ubuntuにdockerをインストール
sudo apt update
sudo apt install docker.io
systemctl enable docker
systemctl start docker
参考リンク
Quick Docker Installation on Ubuntu 24.04 - LinuxConfig windowsにWSL2+Docker環境を構築する手順 #Windows - Qiita
ubuntuでdockerを利用する
MySQLが利用したかったので、MySQLを立ち上げる。
今後も踏まえてdocker-composeも一緒に入れる。
まずは、以下の様なフォルダ構成で各種ファイルを配置する。
【フォルダ構成】
/opt/dockerfiles/app1
├── docker-compose.yml
└── mysql
├── Dockerfile
├── db(初回起動後、データが溜まる箇所)
├── initdb.d(初回起動時のみ利用)
│ └── init.sql
└── my.cnf
【Dockerfile】 # 利用するイメージ FROM mysql:8.4.2 # MySQL9にならない様に指定 # ポート番号 EXPOSE 3306 # MySQL設定ファイルを上書き COPY ./my.cnf /etc/mysql/conf.d/my.cnf # docker run時にMySQLを起動させるコマンド CMD ["mysqld"]
【docker-compose.yml】
version: "3"
services:
mysql:
build: ./mysql/
volumes:
- ./mysql/initdb.d:/docker-entrypoint-initdb.d #初期処理(初期起動後消しても可)
- ./mysql/db:/var/lib/mysql #データ永続化設定
image: mysql:8.4.2
container_name: "mysql"
environment:
- MYSQL_ROOT_PASSWORD=password
ports:
- "3306:3306"
【init.sql】
DROP DATABASE IF EXISTS testdb;
CREATE DATABASE testdb;
USE testdb;
DROP TABLE IF EXISTS testtable;
CREATE TABLE testtable
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TEXT NOT NULL
)DEFAULT CHARACTER
SET=utf8mb4;
INSERT INTO testtable
(name)
VALUES
("ほげ1"),
("ふが2"),
("げほ3");
【my.cnf】 [mysqld] character-set-server=utf8mb4 [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb4
docker-composeをインストールし、docker-compose経由でMySQLを起動する。
apt install docker-compose cd /opt/dockerfiles/app1 docker-compose build docker-compose up -d
参考リンク
Dockerで永続化したmySQLの環境を作る! #MySQL - Qiita
VSCodeからubuntuのdockerを利用する
VSCodeからWSL2のdockerを操作できる様にする
- VSCodeにRemote Development拡張機能をインストール
- この中のWSLという拡張機能を利用
- 他にも同時に色々インストールされる(ex. Remote SSH, Dev Containers)
- Linux側で作業したいディレクトリ(ex. /home/user)でcode .を実行
すると、不思議なことにWindows側のVSCodeが起動する。
また、その際左下が以下の様な状態で表示される。

WindowsのVSCodeからWSLのdockerを操作できないのか?
出来る。 但し、設定がかなり苦行そう。 加えて、性能的にもちょっと問題ありそう。 そのため、割り切った方が良さげ。
参考リンク
MS Learn:Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する WSL2上のDockerをWindows上のVSCodeから操作する
補記事項
sudo apt install docker.ioがうまくいかない
aptitudeというパッケージマネージャを使えばうまくいくかも なお、aptと混合利用でも問題ないとのこと
sudo apt install aptitude sudo aptitude install docker.io
MySQLコンテナがすぐ落ちる
事象
MySQLコンテナがすぐエラーになる
原因
MySQL9を起動した後に、MySQL8.4を起動したため
対応方法
コンテナ用に永続化したファイルを一度削除する。
その後、再度MySQLを起動する。
WSLを扱う際によく使うコマンド
| コマンド | 効能 | 補記事項 |
|---|---|---|
| wsl --list --online | 現在インストールできる一覧 | |
| wsl --list -verbose | 現在インストールしている一覧 | wsl -l -v |
| wsl --install "Name" | "Name"で指定したのをインストール | |
| wsl --set-default "Name" | "Name"で指定したのをデフォルトに切替 | -s も同義 |
| wsl | デフォルトを起動 | |
| wsl --distribution "Name" | "Name"で指定したのを起動 | 省略すればデフォルトを対象に起動 |
| wsl --terminate "Name" | "Name"で指定したのを停止 | 省略すればデフォルトを対象に停止 |
| wsl --shutdown | WSL全てを停止 | WSL全てを起動は無い |
| wsl --list --running | 現在稼働している一覧 | wsl -l -r |


