windows下docker环境安装
开启硬件虚拟化技术
win10中开启 Hyper-V
Win10 下是否开启硬件虚拟化技术,在控制面板,启用 window 功能,找到 Hyper-V 选项,点勾选确认。如图:
Windows 11 家庭中文版新增 Hyper-V选项
注意以下的解决方案来自win10,我的win11家庭中文版只走了第一步,有可能是后续有更新。
Windows 11 家庭中文版没有 Hyper-V这个选项。需要伪装成专业版系统,通过 Docker 的系统检测。
1.新建Hyper-V.cmd文件,并以管理员身份运行
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
2.新建containers.bat文件,并以管理员身份运行
?pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*containers*.mum >containers.txt
for /f %%i in ('findstr /i . containers.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del containers.txt
Dism /online /enable-feature /featurename:Containers -All /LimitAccess /ALL
pause
3.修改注册表
注意中间会重启两次。
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F
Hyper-V出现?
来源:
Docker Windows桌面版安装 Windows家庭版伪装成专业版系统_windows containers are not supported by your windo-CSDN博客
官网下载安装
https://www.docker.com/products/docker#/windows
报错解决
1.error during connect.....
在PowerShell中输入:?docker images报错
error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/images/json: open //./pipe/docker_engine: The system cannot find the file specified.
输入:? cd "C:\Program Files\Docker\Docker"? ,进入安装路径 (注意双引号不能省略)
DockerCli.exe -SwitchDaemon
执行完? ./DockerCli.exe -SwitchDaemon 之后,会弹出
不用管,关掉,docker desktop也会同时关掉。
重新打开docker desktop,右键setting,还是转圈圈,需要等几分钟之后(不知道是不是我电脑的问题),会弹出设置存储库界面: First, clone a repository, 我都是next ,下一步下一步。完了之后setting界面就不转圈圈了:
来源:
https://www.cnblogs.com/ianlab/p/17130272.html
2.Unexpected WSL error...
首先确保程序设置里,勾选了“Windows虚拟机监控程序平台”,以及“适用于Linux?的windows子系统“
打开管理员CMD,或者Windows Powershell,输入:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
重启WSL
netsh winsock reset
重启电脑
3、就可以成功启动docker了。(不用重装docker)
?
来源:Docker无法启动,报错:Docker Desktop - Unexpected WSL error-CSDN博客
3.Update the WSL kernel by running “wsl --update”?....
报错一 Update the WSL kernel by running “wsl --update” or follow instructions at https://docs.microsoft.com/windows/wsl/wsl2-kernel.
解决:管理员运行CMD,执行
?
wsl --update
?
来源:Windows安装 Docker Desktop报错解决大全-CSDN博客
4.家庭版则会造成系统版本冲突
报错提示1:
Docker | installation failed: one prerequisite is not fullfilled报错提示2:
Windows containers are not supported by your windows version check documentaDocker 支持 WIN10 的专业版,如果使用家庭版则会造成系统版本冲突了!
解决:安装上面Windows 11 家庭中文版新增 Hyper-V的执行步骤操作
5.Docker Desktop一直显示"starting the Docker Engine"
1.确定启动虚拟化
2.切换docker版本,有时候最新版本不一定适用当前电脑环境,需要不断尝试
我是在:https://docs.docker.com/desktop/release-notes/
?选择了v24.0.6这个版本才没有报错,可以正常使用了。中间不断尝试,需要卸载dockerDesktop,建议使用geek,geek会清理注册表,卸载更加干净。
来源:
解决在Windows11上新安装的Docker Desktop一直显示"starting the Docker Engine"登录不上去的问题 - 知乎
更改docker desktop中镜像存储路径
?c盘资源不够,需要更换存储路径到d盘。
1.退出当前运行的dock desktop
右击运行中的docker软件图标 选择[Quit Docker Desktop] 退出软件
cmd中运行
wsl --list -v
version版本为2是因为步骤5设置了版本号为2
查看状态,状态为Stopped这代表已经停止
立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机
wsl --shutdown
Docker Desktop 通过WSL2启动,会自动创建2个子系统,分别对应2个 vhdx 硬盘映像文件[docker-desktop-data与docker-desktop]
分别导出这俩个文件
**需要提前创建好目录 (例:E:\Docker\wsl\distro和E:\Docker\wsl\data) **
mkdir?d:\Docker\wsl\distro\
mkdir?d:\Docker\wsl\data\
wsl --export docker-desktop d:\Docker\wsl\distro\docker-desktop.tar
wsl --export docker-desktop-data d:\Docker\wsl\data\docker-desktop-data.tar
销毁原来的docker镜像会删除源路径下的文件
wsl --unregister docker-desktop-data
wsl --unregister docker-desktop
5.从tar 文件,将导出的 Docker 镜像再导入回wsl,并设置挂载目录–v 为设置版本号 不设置默认为1
导入docker-desktop
wsl --import docker-desktop-data d:\Docker\wsl\data\ ?d:\Docker\wsl\data\docker-desktop-data.tar --version 2
?wsl --import docker-desktop d:\Docker\wsl\distro\ ?d:\Docker\wsl\distro\docker-desktop.tar --version 2
?
重启Docker Desktop即可。
导入完成确认镜像没问题后导出的.tar文件可以删除
测试
如果docker pull redis,D:\Docker这个文件扩大,说明移动成功。
但是测试发现,这个目录在,执行docker rmi以后,硬盘没有回收,待验证解决。
来源:
windows10,更改docker desktop中镜像存储路径_windows docker镜像位置-CSDN博客
wsl硬盘释放
#退出Docker Desktop
wsl>fstrim -a
# 彻底关闭 WSL2 虚拟机
wsl --shutdown
#使用Diskpart工具中的compact功能压缩磁盘镜像文件
diskpart
# 指定 WSL2 虚拟机磁盘镜像文件位置
# 引号内为ext4.vhdx虚拟磁盘位置
select vdisk file="D:\Docker\wsl\data\ext4.vhdx"
# 只读 附加磁盘镜像文件
attach vdisk readonly
# 压缩 vhdx 磁盘镜像文件
compact vdisk
# 分离 vhdx 磁盘镜像文件
detach vdisk
# 退出
exit?
常见组件安装
注意:以下都是测试,没有进行目录挂载。
mysql安装
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
?如果要进行目录映射
docker run -p 3306:3306 --name mysql -v D:\WorkSpace\Workspace_docker\mysql57\conf:/etc/mysql -v D:\WorkSpace\Workspace_docker\mysql57\logs:/var/log/mysql -v D:\WorkSpace\Workspace_docker\mysql57\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
来源:windows系统使用Docker搭建MySQL服务_windows docker mysql-CSDN博客?
redis安装
docker run --name my-redis -d -p 6379:6379 redis
?客户端
docker exec -it my-redis redis-cli
来源:windows 安装docker redis_mob649e8168f1bb的技术博客_51CTO博客?
tomcat安装
docker run -d -p 8080:8080 --name t1 tomcat:latest
tomcat8
docker run -d -p 8080:8080 --name t8 billygoo/tomcat8-jdk8:latest
?
?来源:【Docker】如何用Docker安装Tomcat_docker 安装tomcat-CSDN博客
验证同一主机不通容器之间的的通信
docker network create mynetwork
docker run -d -p 8080:8080 --network=mynetwork --name t8 billygoo/tomcat8-jdk8:latest
docker run -d -p 8081:8080 --network=mynetwork --name t8_2 billygoo/tomcat8-jdk8:latest
docker exec -it t8 /bin/bash,进入t8容器内 ping t8_2,能够ping通,说明容器间可以通信
要创建一个Docker网络,你可以使用`docker network create`命令。下面是一些常见的用法:
1. 创建一个桥接网络:
```
docker network create mynetwork
```
2. 创建一个“host”网络,使容器与主机共享网络栈:
```
docker network create --driver=host mynetwork
```
3. 创建一个“overlay”网络,用于多主机间的容器通信:
```
docker network create --driver=overlay mynetwork
```
4. 创建一个“macvlan”网络,允许容器拥有自己的MAC地址:
```
docker network create --driver=macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 mynetwork
```
这里的`mynetwork`是网络的名称,你可以根据需要自定义。`--driver`参数用于指定网络驱动类型,常见的驱动类型有bridge、host、overlay和macvlan。其他参数根据驱动类型的不同而有所不同。
创建网络后,你可以在运行容器时使用`--network`参数将容器加入到该网络中。例如:
```
docker run --network=mynetwork myimage
```
注意,网络名称在容器之间必须是唯一的,因此请确保你为每个网络选择一个唯一的名称。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!