一、Win10系统预处理
Docker要求Windows系统是专业版,但目前我们大多都是家庭版,兼容性会有一些问题,需要对当前系统做一些处理,否则文件系统挂载、本机访问容器项目会有各种坑。
1. 确认虚拟机监控程序及相关功能开启
打开 控制面板-程序和功能-启用或关闭Windows功能页面
a. 检查Windows虚拟机监控程序平台,如未勾选请手动勾选。
b. 检查窗口中是否有Hyper-V功能,如存在且已勾选,直接看 步骤d。
如不存在,用命令脚本启用隐藏的Hyper-V功能,新建hyper.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
保存退出,右键文件,以管理员身份运行hyper.cmd文件,需要重启则进行重启。
c. 重启后再次打开启用或关闭Windows功能页面,确认出现Hyper-V选项且勾选(如未勾选上请手动勾选)。
d. 将当前Windows家庭版伪装成专业版,左下角搜索命令行,以管理员身份运行cmd命令窗口,输入如下命令:
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F
可能需要重启。
2. 最终启用或关闭Windows功能页面会勾选如下内容:
Hyper-V
Windows虚拟机监控程序平台
适用于Linux的Windows子系统
虚拟机平台
补充:打开任务管理器,选择“性能”页面,右下角的“虚拟化”后边显示“已开启”
二、Docker安装
1. 下载安装包
我当前使用的是docker3.2.2
官方下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-windows
百度云资源:链接:https://pan.baidu.com/s/1M5mDVmcVP4V9W1WwvqxZQw ,提取码:yfy6
2. 安装
直接双击安装包进行安装即可,建议就放在默认选择的安装位置,在最后一步勾选 add shorcut to desktop
验证是否安装成功,打开命令行,执行:
docker version 或者 docker -v
若正常打印docker版本信息等内容,则表示安装成功。
3. Docker 常用命令
// (1)列出已有镜像列表
docker images
// (2)列出已有容器列表及容器运行状态
docker ps -a
// 参数说明
-a:列出运行中和未运行的所有容器
// (3)选择一个容器生成容器
docker run -itd --privileged=true -p 80:80 -p 443:443 -p 9000:9000 -v D:/www:/var/www -v D:/share:/home/soft --name your_image_name image_name:tag init
// 参数说明
-i:交互式操作
-t:终端操作
-d:后台运行,不进入容器
-p:端口映射,如-p 80:80,指将本机的80端口映射到容器的80端口,冒号前边为本机端口,后边为容器端口
-v:目录挂载,注意win10在的目录路径需要用盘符+冒号的形式,子目录用斜杠连接不要用反斜杠,同样冒号前边表示本机目录,冒号后边表示容器中的目录名称
--name:为容器指定一个名称(自定义)
your_image_name 你自定义的名称
image_name:tag 是指使用了image_name镜像的tag版本,冒号前边指镜像名称,冒号后边指版本号
--privileged:是否让docker应用容器获取宿主机的root权限,**windows需要设置true,否则进入容器后会有各种权限问题**
init:在Linux系统下应写/usr/sbin/init,windows下需要用 init
// (4)进入容器
winpty docker exec -it container_id bash
// 参数说明:
winpty:windows系统固定参数,不过也有的不加也能访问,我电脑使用的时候不加会报错
exec:在运行的容器中执行命令,且exit 退出容器后容器仍然保持后台运行;类似的 attach 命令,进入容器后 exit 退出,容器会终止运行
-it:见(3)
container_id:容器ID,可以用 docker ps -a 查看,第一列为容器ID
bash:对容器执行bash命令,在Linux系统下为 /bin/bash
// (5)开启/关闭/删除一个容器
docker start container_id
docker stop container_id
docker rm container_id // 加 -f 表示强制执行,可以删除正在运行中的容器
// (6)删除镜像
docker rmi image_id // 加 -f 会强制删除镜像,且删除以该镜像为基础创建的容器
// (7)导入镜像
docker load < /D/ldl/image_name.tar
// 参数说明:
< :从文件输入,也可以用 -i
路径:文件必须为.tar压缩文件,此处使用/D/+子路径的格式,也可以用 D:/path1/path2/file.tar 格式