windows 10系统上搭建本机Linux系统Docker
一、将当前win10系统升级到最新系统
设置-更新和安全-windows更新
二、将windows系统升级为专业版
设置-系统-关于-更改产品密匙(网上找一个专业版的win10密匙)
三、修改应用程序配置
开始-设置-应用与功能-放大-点击程序与功能-点击右侧启用或关闭windows功能
点击右侧启用或关闭windows功能
将Hyper和适用于Linux的windows子系统和虚拟机平台勾选
四、按照文档进行wsl安装并更新至wsl2
参考文档:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 手动安装步骤
先进行wsl的安装
wsl.exe --install
然后进行手动安装
步骤 1 - 启用适用于 Linux 的 Windows 子系统
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的 Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步
步骤 2 - 检查运行 WSL 2 的要求
若要更新到 WSL 2,需要运行 Windows 10。
对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。
若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 更新到“设置”菜单中的最新 Windows 版本。
步骤 3 - 启用虚拟机功能
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
步骤 4 - 下载 Linux 内核更新包
1.下载最新包:
适用于 x64 计算机的 WSL2 Linux 内核更新包 2.运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)
安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)
步骤 5 - 将 WSL 2 设置为默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
步骤 6 - 安装所选的 Linux 分发
1.打开 Microsoft Store,并选择你偏好的 Linux 分发版。并选择“获取”
首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 分发版创建用户帐户和密码。
启用 WSL 并从 Microsoft Store 中安装 Linux 分发版后,在打开新安装的 Linux 分发版时将会要求你完成的第一步是创建帐户,包括用户名和密码。
- 此用户名和密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
- 创建用户名和密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
- 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
- 在适用于 Linux 的 Windows 子系统上运行的每个 Linux 分发版都有其自身的 Linux 用户帐户和密码。每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。 Windows 控制台中的 Ubuntu 解包
更新和升级包
大多数分发版随附了一个空的的包目录或最简单的包目录。 我们强烈建议定期更新包目录并使用分发版的首选包管理器升级已安装的包。 对于 Debian/Ubuntu,请使用 apt:
sudo apt update && sudo apt upgrade
Windows 不会自动更新或升级 Linux 分发版。 大多数 Linux 用户往往倾向于自行控制此任务。
重置 Linux 密码
若要更改密码,请打开 Linux 分发版(例如 Ubuntu)并输入以下命令:passwd
系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。
忘记密码
如果忘记了 Linux 分发版的密码:
- 请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root
如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian
替换为目标分发版的名称。 - 在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd ,其中
是 DISTRO 中帐户的用户名,而你忘记了它的密码。 - 系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭
WSL:exit
安装 windows终端 (windows Terminal)(可选)
安装
可以从 Microsoft Store 安装 Windows 终端。
如果你无法访问 Microsoft Store,GitHub 发布页上发布有内部版本。 如果从 GitHub 安装,终端将不会自动更新为新版本。
将分发版版本设置为 WSL 1 或 WSL 2
可打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 18362 或更高版本中可用),检查分配给每个已安装的 Linux 分发版的 WSL 版本:wsl -l -v
wsl --list --verbose
备注
- 从 WSL 1 更新到 WSL 2 可能需要几分钟才能完成,具体取决于目标分发版的大小。 如果从 Windows 10
周年更新或创意者更新运行 WSL 1 的旧(历史)安装,可能会遇到更新错误。 按照这些说明卸载并删除任何旧分发。 - 如果 wsl --set-default-version 结果为无效命令,请输入 wsl --help。 如果
–set-default-version 未列出,则表示你的 OS 不支持它,你需要更新到版本 1903(内部版本 18362)或更高版本。 - 运行命令后如果看到此消息:WSL 2 requires an update to its kernel component. For
information please visit https://aka.ms/wsl2kernel。 仍需要安装 MSI Linux
内核更新包。
此外,如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:
wsl --set-default-version 2
这会将安装的任何新分发版的版本设置为 WSL 2。
创建Ubuntu容器,并进行基础配置及下载
下载Ubuntu镜像
dokcer pull ubuntu 20.04
备注可以去hub.docker.com官网上查看适用当前的版本并下载(最好与之前ubuntu的版本一致)
创建ubuntu容器
docker run -it --name ubuntu1 -d ubuntu:20.04
进人容器并进行基础配置和下载
进入容器
docker exec -it ubuntu1 bash
先进行apt更新
apt-get update
然后下载vim
apt-get install vim
修改语源,从国外源修改到国内阿里云源,参考文档:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11y1Z8hh
打开sources.list文件,进行修改
vim /etc/apt/sources.list
根据自己的ubuntu版本进行替换修改
以Ubuntu 14.04.5 LTS为例,最后的效果如下:
deb https://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
## Not recommended
# deb https://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
ubuntu 16.04 配置如下
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
ubuntu 18.04(bionic) 配置如下
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
ubuntu 20.04(focal) 配置如下
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
修改以后更新一下apt-get:
apt-get update
下载一些常用工具
apt-get install net-tools
apt-get install telnet
apt-get install iputils-ping
创建固定IP虚拟交换机(放置出现网络错误)
以管理员身份启动PowerShell ,执行下列命令
#创建虚拟交换机
New-VMSwitch -SwitchName "NAT-VM" -SwitchType Internal
#查看 NAT-VM 的 ifindex
Get-NetAdapter
#创建网关ip,InterfaceIndex参数自行调整为上一步获取到的ifindex
New-NetIPAddress -IPAddress 192.168.56.1 -PrefixLength 24 -InterfaceIndex 24
#创建nat网络
New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.56.0/24
然后修改C:\Windows\System32\drivers\etc\hosts文件
将以下配置改成自己已配好的内网地址,我这例如改好后是:192.168.56.1
最后可以用Dokcer Desktop进行容器管理
初次在docker中创建文件夹创建不了
将当前前目录下的所有文件与子目录的拥有者皆设为 zc,群体的使用者zc:
sudo chown -R zc:zc ./
php容器中php的配置
[global]
daemonize = no
error_log = /var/log/php-fpm.log
[www]
listen = 0.0.0.0:9000
access.log = /var/log/$pool.access.log
slowlog = /var/log/$pool.log.slow
php_flag[short_open_tag] = On
php_flag[display_errors] = On
php_flag[display_startup_errors] = On
php_value[error_reporting] = E_ALL &~E_NOTICE &~E_DEPRECATED
php_value[post_max_size] = 128M
php_value[upload_max_filesize] = 1024M
php_flag[xdebug.remote_enable] = On
php_flag[xdebug.remote_autostart] = On
php_value[xdebug.remote_port] = 9001
php_value[xdebug.remote_host] = host.docker.internal
php_value[xdebug.idekey] = idekey
php_value[xdebug.remote_log] = /tmp/xdebug.log