Windows与Linux双平台Docker部署配置全流程

2026-10-11 18:17 1013 次浏览

很多人第一次装Docker是在自己的Windows笔记本上,装完发现Docker Desktop启动卡在鲸鱼图标转圈,或者容器跑起来了但端口映射到宿主机失败。换到Linux服务器上又是一套完全不同的流程,装完docker命令还要sudo,拉镜像慢得让人想放弃。这两个平台踩的坑基本不重叠,所以分开讲清楚更有用。

我平时在本地Windows上做开发验证,最终部署一定放到Linux服务器上跑,这套流程走顺之后,从写Dockerfile到上线基本不用改配置。下面按平台拆开说。

Windows上装Docker Desktop,先解决WSL2这关

Docker Desktop官方推荐用WSL2后端,不用再开Hyper-V虚拟机。安装前先在PowerShell里执行wsl --install,装完重启,再确认WSL版本是2。这点不确认清楚,后面Docker Desktop会提示后端不可用。

WSL2有个默认内存上限,大概是宿主机的50%或8GB取小值。跑两三个容器没问题,但如果同时开MySQL和Redis再挂个Node服务,内存容易吃紧。可以在用户目录下建.wslconfig文件,写入memory=4GB限制上限,防止WSL把整台机器的内存吃光。

装完Docker Desktop,镜像加速要配。国内直连Docker Hub拉一个nginx镜像可能要几分钟,配好加速地址后通常十几秒能完成。加速地址在Settings的Docker Engine里改,加一行registry-mirrors即可。

  • WSL2后端不用额外装虚拟机,但要注意磁盘占用会随镜像增长,定期用docker system prune清理
  • 如果公司网络走代理,Docker Desktop的网络设置里要单独填HTTP代理,不然容器内访问外网会失败

Windows上还有一个容易忽略的点:端口映射。Docker Desktop默认把容器端口映射到localhost,如果要从局域网其他机器访问,得确认防火墙放行了对应端口。我一般开发阶段只在本地访问,上线前才在Linux上做正式映射。

Linux上装Docker,别急着用apt install

Ubuntu或Debian上用apt install docker.io装的是发行版维护的版本,通常比官方版本旧一到两个大版本,某些新特性比如compose v2可能用不了。我一般按官方文档走,先加GPG密钥和软件源,再装docker-ce和docker-compose-plugin。

装完第一件事是把当前用户加进docker组,usermod -aG docker $USER,然后重新登录。不加组的话每条docker命令都要sudo,脚本里写起来很别扭。加组等于给了这个用户root权限,这点取舍要清楚:单人或可信环境没问题,多人共用的机器上要谨慎。

镜像加速在Linux上改/etc/docker/daemon.json,加registry-mirrors字段,然后systemctl restart docker。这个文件还可以顺手配log-driver限制日志大小,默认json-file驱动不限制,跑久了日志能把磁盘塞满。

容器网络这块,Linux上比Windows灵活得多。默认bridge网络下容器之间可以用容器名互相访问,但需要自定义网络。我一般建一个自定义bridge网络,把数据库和应用容器都接进去,这样应用连数据库直接用容器名当主机名,不用记IP。

配置里最容易出问题的三个地方

第一是数据卷。容器删了数据就没了,MySQL这类有状态服务一定要把数据目录挂到宿主机。用-v /data/mysql:/var/lib/mysql这种绑定挂载,或者用命名卷。绑定挂载要注意宿主机目录权限,MySQL容器里是mysql用户,宿主机目录属主不对会启动失败。

第二是2375端口。有人图方便把Docker守护进程的2375端口暴露出来,不加密直接连。这个端口等于把宿主机控制权交出去,任何能访问到的人都能起容器挂载宿主机根目录。要用远程管理就走2376加TLS,或者干脆用SSH隧道。

第三是时区。容器默认UTC,日志时间比北京时间少8小时,排查问题时对不上。可以在Dockerfile里设TZ=Asia/Shanghai,或者运行时挂载/etc/localtime。我一般在Dockerfile里统一设,省得每个容器单独配。

如果部署的服务需要长期稳定跑,本地开发机之外还是得有一台独立服务器。像香港大带宽物理服务器 VIII这种E5-2660*2配64G内存、200M带宽的配置,跑十几个容器绰绰有余,香港机房到国内延迟也低,适合把开发环境直接搬上去。预算有限的话可以先在本地把流程跑通,再决定要不要上服务器。

整套流程走下来,Windows负责开发调试,Linux负责正式部署,两边的Dockerfile可以完全复用。装的时候按平台选对后端和源,配置阶段盯住数据卷、端口和时区这三处,基本不会出大问题。如果你现在只打算在一台机器上跑,优先选Linux,省掉WSL2那层转译的开销。