适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。
什么是WSL2
WSL 2
是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。
这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。
单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。
安装WSL2
- 打开控制面板启用
适用于Linux的Windows子系统
和虚拟机平台
- 使用
PowerShell
或CMD
设置WSL默认版本
wsl --set-default-version 2
- 安装Linux发行版
# 查看可安装的发行版
wsl --list --online
# 安装指定的Linux发行版
# wsl --install -d <Distribution Name>
wsl --install -d Ubuntu
# 进入Linux发行版
wsl
安装Docker Desktop
下载地址:https://docs.docker.com/desktop/install/windows-install/
安装好 Docker Desktop
后,可直接在安装的Linux发行版中使用Docker命令了
Windows
安装Docker Desktop
已自动安装好docker-compose
# 查看所有docker容器
sudo docker ps -a
构建Docker容器
在 E:\www
下新建 docker-compose.yaml
文件
version: '1.0'
services:
php74:
image: registry.cn-hangzhou.aliyuncs.com/cqcqs/php74-fpm
container_name: php74
restart: always
ports:
- 9000:9000
volumes:
- ./:/var/www/html
networks:
net:
ipv4_address: 172.18.0.11
nginx:
image: nginx
container_name: nginx
restart: always
ports:
- 80:80
volumes:
- ./:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
working_dir: /var/www/html
links:
- php74
networks:
net:
ipv4_address: 172.18.0.12
networks:
net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/24
在 E:\www
下新建 nginx.conf
Nginx配置文件
server {
listen 80;
root /var/www/html/public;
error_log /var/log/nginx/error.log;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass php74:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
构建项目容器
docker-compose up -d
构建成功,浏览器访问 http://127.0.0.1/
项目以空的 Laravel
为例,但细心的朋友可能会发现,响应速度特别的慢,大概在6s左右,这极大影响了我们的开发效率,接下来我们就要去做优化了。
优化方案:《解决WSL2 Docker运行慢的问题》