Windows与Linux下Docker部署全流程:从装到跑,一篇讲透
从零开始,在Windows和Linux上安装Docker、配置镜像加速、部署Nginx与MySQL,并附上新手最容易踩的权限、端口、数据卷坑位清单。
为什么你该在本地先把Docker跑起来
很多站长第一次接触Docker,是在服务器上照着教程敲命令,结果容器起不来、端口不通、数据丢了,一顿操作猛如虎。其实更稳的做法是:先在本地Windows或Linux机器上把流程走通,再上生产环境。这篇文章就把两套系统的部署流程拆开讲清楚,顺便把新手最容易踩的坑标出来。
先明确一点:Docker不是虚拟机,它共享宿主机内核,所以启动快、开销小。但也正因为共享内核,Windows下必须依赖WSL2或Hyper-V,Linux下则直接跑在原生内核上,两者体验有差异。
Windows端:WSL2是绕不开的一步
Windows 10/11专业版可以直接装Docker Desktop,家庭版也能装,但前提是开启WSL2。步骤不复杂:以管理员身份打开PowerShell,执行wsl --install,重启后设置Linux用户名密码,再去官网下载Docker Desktop安装包,安装时勾选“Use WSL 2 instead of Hyper-V”。
装完后打开终端,输入docker version,能看到Client和Server两段信息才算成功。如果只显示Client,说明Docker引擎没起来,多半是WSL2没配好,或者BIOS里虚拟化没开。
Windows下第一个坑是路径映射。你在PowerShell里写-v D:/data:/app/data,Docker Desktop能识别,但换成Git Bash就可能变成乱码路径。建议统一用WSL2里的Linux路径,比如/mnt/d/data,少折腾。
Linux端:三行命令搞定,但别急着跑
主流发行版装Docker也就三条命令的事。以Ubuntu为例:先更新源,再装依赖,最后添加官方GPG密钥和仓库。但真正要留意的是安装完之后的配置。
- 镜像加速:默认拉取镜像慢,编辑/etc/docker/daemon.json,加上国内镜像源地址,然后systemctl restart docker。
- 用户权限:每次敲docker都要sudo很烦,把当前用户加入docker组:sudo usermod -aG docker $USER,重新登录生效。
- 开机自启:systemctl enable docker,避免服务器重启后容器全没了。
这三步做完,再跑docker run hello-world,能打印出欢迎信息,说明环境没问题。
实战:用Docker跑一个Nginx加MySQL
先拉镜像:docker pull nginx,然后启动容器,把宿主机80端口映射到容器80端口,挂载一个本地目录放配置和网页文件。命令里注意-v的写法,左边是宿主机路径,右边是容器路径,写反了数据就存到容器里,删容器就丢。
MySQL稍微复杂点,要指定root密码、字符集和时区,数据目录必须挂载出来。启动后用docker ps看容器状态,用docker logs看日志,报错信息基本都能在日志里找到。
如果你打算把容器部署到海外业务上,本地调试完可以直接推到香港大带宽(20M)高速云服务器上跑,20M带宽对中小站点够用,延迟也低。数据量再大一点、需要独立资源隔离的,可以考虑香港大带宽服务器 XXVI,100M带宽跑容器集群更从容。
新手最容易忽略的三个细节
第一,容器内时区默认是UTC,日志时间差8小时,启动时加-e TZ=Asia/Shanghai。第二,端口映射别乱写,宿主机端口被占用会直接启动失败,用netstat -tunlp查一下。第三,数据卷权限问题在Linux上很常见,容器内用户UID和宿主机不一致,挂载目录会写不进去,要么改权限,要么指定用户运行。
把这几步走完,Windows和Linux上的Docker部署基本就通了。剩下的就是按业务需求去编排容器,慢慢积累自己的镜像和配置模板。