win 下 docker 遇到的问题
win 下 docker 遇到的问题
前言
由于之前实习使用docker,都是在Mac及Linux服务器下docker镜像容器,但目前我自己只有win11的系统,而且只想在win下完成操作,并排雷避坑,以部署Prometheus为例子
解决的问题:
- 如何在
win下使用Linux格式指令 - 用WSL- 如何使用通用指令来创建并启动
docker容器
例子:部署 Prometheus
常规操作
在当前目录下创建一个prometheus.yml的配置文件。在该文件中,我们将定义Prometheus的抓取目标。例如,可以在项目目录中创建一个名为prometheus.yml的文件,并添加以下内容:
1 | global: |
接下来,我们将使用Docker启动Prometheus。可以通过以下命令创建并允许一个Prometheus容器
1 | docker run -d \ |
使用-d选项表示以后台模式运行容器,-p选项用于将本地端口映射到容器端口,-v选项用于将本地的配置文件挂载到容器中
但是常规安装
Prometheus需要挂载配置文件地址,同时Windows和Mac、Linux路径方式还不太一样
简易版
虽然
Prometheus官方镜像不支持直接通过命令行参数传入完整配置,但是可以使用echo + docker run + --entrypoint动态生成配置:1.创建一个临时容器;
2.用
echo把配置写到容器内/etc/prometheus/prometheus.yml;3.然后启动
Prometheus。
1 | docker run -d \ |
参数说明:
--entrypoint sh:先让容器以 shell 启动;
-c 'echo "... && /bin/prometheus ...':一口气完成写入配置并启动 Prometheus;
'\''是 Bash 里的转义方法,用于生成单引号 ‘;
host.docker.internal:18080表示Prometheus容器去访问宿主机18080端口的服务整体是 shell 脚本拼接实现,不需要本地文件也能运行。
在 win 下的实际操作
开启虚拟化
我默认大家都是装好
WSL的,因为我是很早之前就装过了,这个只演示我遇到的问题
Docker Desktop在Windows上依赖于WSL 2 (Windows Subsystem for Linux 2)或者Hyper-V想要在
win下使用docker,必须先开启电脑的虚拟化,否则会报Virtualization support not detected Docker Desktop requires virtualization support to run.的错误虽然我习惯于用
PowerShell终端,但是为了适配,这里切换为wsl,启动Ubuntu,否则需要切换为PowerShell的语法,并且会启动失败,我已经尝试过了
用Ubuntu代替PowerShell终端
- 把对应
Linux/mac指令输入Ubuntu中,弃用PowerShell(很多语法不一样,比如\在PowerShell中是 `)
- 查看
docker容器,发现成功启动
Prometheus可以成功打开,说明执行成功了





