Docker Desktop = Docker Engine(核心) + Docker CLI(命令行) + 可视化界面 + 一些额外工具(包括Compose、Kubernetes等)
所以安装 Docker Desktop 后,你不需要再单独安装 Docker。你可以使用Docker的命令行,也可以使用GUI管理。
一、安装
https://www.docker.com/ 打开官网下载安装包:

这里就是选这两个:

后面基本上就是能跳过的跳过,最后启动:


1.1 启动可能遇到的问题
1,WSL needs updating
WSL就是Windows里面跑个Linux,因为Docker是基于linux跑的,所以对WSL版本有要求。

如果可以的话,就直接更新windows,好像就可以了。如果不想更新的话,就更新WSL。
步骤:
打开Powershell

输入:
wsl --update --web-download
等他加载完重启个电脑就行了。
2,Virtualization support not detected

这种就是虚拟化没打开。解决步骤:
Win + R。输入optionalfeatures

然后把Hyper-V勾上,重启电脑即可。

1.2 基本配置
正常启动之后,我们要进行一些配置,方便后续的使用。
1.2.1 配置镜像源
下载镜像很容易失败,可以通过修改镜像源来加快下载速度
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": true,
"registry-mirrors": [
"https://docker.m.daocloud.io",
]
}
如果镜像源不想换,或者换了发现还是下载不下来,可以试试配置代理:
1.2.2 配置代理

1.2.3 汉化
(也可以不搞)
看一下右下角你的版本号:

打开:https://github.com/asxez/DockerDesktop-CN/releases
下载相应的版本、系统的包即可,windows一般下载:app-Windows-x86.asar就可以了。
打开文件夹:
C:\Program Files\Docker\Docker\frontend\resources
把下载的 app-Windows-x86.asar 丢进去,替换掉原来的 app.asar,重启desktop就行了:

1.3 验证
打开CMD,输入
docker version

这样就是OK了。
二、启动示例
MYSQL
下载镜像

MYSQL相对没什么可配置的:

直接挂载,然后设置默认的root密码即可。然后启动即可。

MINIO
还是一样下载镜像
前面说了docker desktop也包含了docker,你可以用可视化desktop弄,也可以直接cmd启一个命令行 docker pull。


启动容器也是可视化和命令行都行,但是因为minio比较多东西要配置,所以我选择用命令行:

启动命令:
docker run -d --name minio -p 10000:9000 -p 10001:9001 -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=zhengan123" -v D:\docker\minio\data:/data minio/minio:RELEASE.2025-04-22T22-12-26Z server /data --console-address ":9001"
这里是做了10000和10001的映射,账号密码是admin和zhengan123。挂载是做的 D盘里面。

可以看到右边的容器同步也多了一个minio。

新建个桶,可以看到挂载目录也有了:

三、最佳实践
但其实如果大家只是用来一两个镜像run一下测试,其实上面就很方便了。但如果要集中管理数十个镜像,我们不可能去每个命令、映射关系什么的记过去。所以正常来说我们会使用
docker compose
它也已经集成在docker desktop 里面了。用起来也非常简单,创建一个文件:
docker-compose.yml
在什么目录下都行。但是最好集中一点

我们以3个镜像为例,分别是 redis \ mysql \ minio :
version: '3.8'
services:
redis:
image: redis:7.2.11
container_name: redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
D:\docker\redis\data:/data
D:\docker\redis\conf\redis.conf:/usr/local/etc/redis/redis.conf
一定要加这行,否则 redis.conf 不会被应用
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
mysql:
image: mysql:8.0.43
container_name: mysql
restart: unless-stopped
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD=zhengan123
MYSQL_DATABASE=myapp
volumes:
- D:\docker\mysql\data:/var/lib/mysql
minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: minio
restart: unless-stopped
ports:
"9000:9000"
"9001:9001"
environment:
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=zhengan123
command: server /data --console-address ":9001"
volumes:
- D:\docker\minio\data:/data
分别都指定了他们的镜像版本、挂载目录、基本配置等。
其中redis.conf为:
########################################
Redis 基础配置
########################################
监听地址(仅允许容器内访问,可根据需要改为 0.0.0.0)
bind 0.0.0.0
端口号
port 6379
密码
requirepass zhengan123
是否守护进程运行(Docker 环境必须为 no)
daemonize no
数据目录(与 docker-compose 中的 /data 对应)
dir /data
########################################
持久化配置
########################################
快照保存规则(RDB)
save <seconds> <changes>
save 900 1
save 300 10
save 60 10000
RDB 文件名
dbfilename dump.rdb
AOF 日志(推荐在生产中开启)
appendonly yes
appendfilename "appendonly.aof"
每次写命令都 fsync(always) 性能差,建议 everysec
appendfsync everysec
########################################
网络与安全
########################################
禁止危险命令(可选,防止误删)
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
允许的最大客户端连接数
maxclients 10000
超时(秒)
timeout 300
########################################
内存管理
########################################
最大内存(根据实际机器内存设置)
例如限制为 512MB
maxmemory 512mb
淘汰策略(常用:volatile-lru、allkeys-lru、noeviction)
maxmemory-policy allkeys-lru
########################################
日志
########################################
日志级别:debug | verbose | notice | warning
loglevel notice
日志文件(Docker 中通常写到 stdout)
logfile ""
########################################
其他可选优化
########################################
禁止 Redis 主动写入 swap,提升性能(仅 Linux 有效)
no-appendfsync-on-rewrite yes
打开cmd,切到你的yml的目录下。运行非常简单,就一行
docker compose up -d

cmd就可以关了。
可以看到容器都正常启动了:

基本上流程就是,可以先pull单个镜像用着,等确认要长久使用和维护映射目录了,就写进yml里面统一管理。