Docker
容器技术已经成为不可阻挡的技术主流。然而开发者们的好帮手windows
中直接安装docker
,部署起来的项目却慢的要死。
究其原因或许还是windows
文件系统与Docker 容器
之间复杂的挂载关系。而解决方案则是将全套环境移入wsl2
中。
环境部分
wsl2 环境:Ubuntu
- 在
windows功能
中打开:
- 适用于Linux的Windows子系统
- 虚拟机平台
- Windows虚拟机监控程序平台
- 点击
确定
,点击立即重新启动
。
- 打开微软的
Microsoft Store
,搜索Ubuntu
,选择一款安装。
- 安装完成后打开
Ubuntu
,稍等几分钟后提示:
- 输入要创建的用户名和密码即可完成
Ubuntu
的安装。不过此时还有另一种操作方式:
- 不输入用户名,直接关闭
Ubuntu
窗口,再次打开就会以无密码的root
用户进入Ubuntu
系统。
- 从此以后所有使用此
Ubuntu
终端时都不需要密码与sudo
。代价是相应的用户权限管理用户分组之类的自然也没了。
iptables
- 在
wsl2
中安装的docker
还存在iptables
问题,需要替换成iptables-legacy
- 在
Ubuntu
中运行以下命令
- 将
iptables
用iptables-legacy
替换:
1
| update-alternatives --set iptables /usr/sbin/iptables-legacy
|
1
| sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
|
- 用管理员模式启动
PowerShell
,重启wsl2
docker
- 虽然系统是新装的,为了以防万一还是先卸载一下旧版本的
docker
1
| apt-get remove docker docker-engine docker.io containerd runc
|
- 设置存储库
- 更新软件包索引并安装软件包以允许使用基于 HTTPS 的存储库:
1 2 3 4 5
| apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
|
1
| mkdir -p /etc/apt/keyrings
|
1
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
1 2 3
| echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
- 若运行时遇到
GPG
错误,可能是默认掩码配置的不正确,需要执行一下命令更新公钥文件
1
| chmod a+r /etc/apt/keyrings/docker.gpg
|
1
| apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
按要求写入用户名与密码即可。注意是用户名,写邮箱无效。若还没有Docker
账户,点击注册。
- 验证(可选)
- 通过运行
hello-world
映像验证Docker
安装是否成功: