Docker 简介
Docker 是一个容器引擎:它把应用及其依赖打包成镜像,再在宿主机内核之上以隔离的方式运行。开发者用它让本地和生产环境保持一致;小团队则用它在一台机器上同时托管多个服务,而不必担心各服务的依赖互相冲突。
服务器交付时,您的 Linux VPS(Debian 12、Debian 13、Ubuntu 22.04 或 24.04,以及带有下文所述限制的 Ubuntu 20.04)上已经通过 Docker 官方 apt 软件源安装好 Docker Engine。docker-ce、docker-ce-cli、containerd.io、docker-buildx-plugin 和 docker-compose-plugin 这几个软件包均已就位,docker 与 containerd 服务也已设为开机自启。
安装前,软件源的签名密钥会按指纹校验。安装脚本最后会运行一个 hello-world 容器,用来确认守护进程能够正常响应。之后服务器完全由您掌控:默认不会把任何用户加入 docker 组,也不会替您部署任何应用。
用 Docker 可以做什么
Docker 官方 apt 软件源
软件包来自 download.docker.com,签名密钥的指纹会经过校验。后续更新与系统的其他软件一样,通过 apt 完成。
内置 Compose 与 Buildx
Compose 插件通过
docker compose(中间没有连字符)使用,Buildx 用于构建镜像。首次登录后就可以部署多服务的 stack。预设日志轮转
如果
/etc/docker/daemon.json不存在,安装脚本会写入该文件,使用json-file驱动,每个文件 10 MB,保留 3 个文件。容器日志不会悄悄把磁盘写满。自动清除冲突软件包
安装前会移除
docker.io、podman-docker、containerd、runc等非官方软件包,避免不同来源的版本混用而导致守护进程无法启动。root 等效权限由您掌控
docker组等同于 root 访问权限,因此不会有任何账户被默认加入该组。该授予给谁,由您自己决定。清晰的安装日志
每一步都记录在
/var/log/docker-install.log中,文件/var/lib/docker-install.done则表示安装脚本已完整执行完毕。
Docker 快速上手
从下单到上线,只需几分钟。
- 1
订购 VPS 并勾选 Docker
选择位于巴黎或法兰克福的 Linux VPS,系统选 Debian 12、Debian 13、Ubuntu 22.04 或 24.04,然后在订购表单的“应用”标签页中勾选 Docker。
- 2
连接服务器并检查安装结果
服务器交付后,用收到的登录信息通过 SSH 连接。安装在首次启动时执行:如果标记文件还不存在,请稍等片刻,并查看安装日志。
Bashssh USER@SERVER_IP cat /var/lib/docker-install.done tail -n 20 /var/log/docker-install.log - 3
运行第一个容器
先确认版本,再启动一个测试用的 Web 服务器。端口只发布在 127.0.0.1 上,所以测试期间不会暴露到互联网。
Bashdocker --version && docker compose version docker run -d --name web -p 127.0.0.1:8080:80 nginx curl -I http://127.0.0.1:8080 - 4
上线前做好安全加固
在服务前面放一个反向代理(Caddy、Traefik 或 Nginx),由它为 YOUR_DOMAIN 提供 HTTPS,并且只向互联网开放 80 和 443 端口。其余端口请绑定在 127.0.0.1 上,因为 Docker 发布的端口会绕过 ufw。最后别忘了备份数据卷和 compose 文件。
Bashdocker volume ls docker compose up -d
Docker 的使用场景
托管多个相互隔离的服务
PostgreSQL 数据库、Web 应用和监控工具各自运行在独立的容器里,统一写在一个
compose.yaml文件中。您可以单独更新或重启其中任何一个。部署自托管应用
许多开源项目(n8n、Nextcloud、Gitea、Uptime Kuma 等)都提供 Docker 镜像和 Compose 示例。这台 VPS 无需任何额外准备,就能直接部署它们。
构建与测试镜像
借助 Buildx,您可以在一台独立的远程机器上构建镜像,不占用本地工作机的资源。这对轻量的 CI 流水线或集成测试很有用。
用预发布环境复现生产
再准备一台 Docker 版本和 Compose 文件都相同的 VPS,就能得到一个接近生产的验收环境,管理成本也比较低。
Docker 常见问题
安装脚本会从 Docker 官方 apt 软件源安装 docker-ce、docker-ce-cli、containerd.io、docker-buildx-plugin 和 docker-compose-plugin,并把 docker 与 containerd 服务设为开机自启。Compose v2 的命令是 docker compose,而不是 docker-compose。
深入了解 Docker
防火墙与已发布的端口
这是最常见的坑。用 -p 8080:80 发布端口时,Docker 会写入自己的 iptables 规则,流量会先于 ufw 或 firewalld 的规则被处理,所以 ufw deny 8080 起不到任何作用。
有两种可靠的做法:一是把端口绑定到本地接口(-p 127.0.0.1:8080:80),再通过反向代理对外提供服务;二是在 DOCKER-USER 链中过滤,Docker 会在应用自身规则之前先查这条链。第一种更简单,大多数情况下已经够用。
docker 组与 sudo
加入 docker 组等于拥有这台机器的 root 权限,因为容器可以挂载宿主机的文件系统。安装脚本不会把任何人加入该组。如果您想用非特权账户操作,请自行添加,然后重新登录。
Bashsudo usermod -aG docker USER
容器日志
交付时写入的 /etc/docker/daemon.json 把每个容器的日志限制为 3 个 10 MB 的文件。该文件只在原本不存在时才会创建。如需修改这些数值,编辑文件后重启守护进程即可。新设置只对重启之后创建的容器生效。
Bashsudo systemctl restart docker
更新
Docker 软件源声明在 /etc/apt/sources.list.d/docker.sources 中,因此新版本会随常规的 apt 更新一起到来。请把更新安排在可以接受守护进程重启的时间,因为在未启用 live-restore 的情况下,重启可能会中断您的容器。
Bashsudo apt update && sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io
Ubuntu 20.04
Docker 已不再正式支持 Ubuntu 20.04。如果 Docker 软件源仍然提供该版本,安装脚本还是会尝试安装,并在日志中写入一条警告。生产服务器请优先选择 Ubuntu 22.04、Ubuntu 24.04、Debian 12 或 Debian 13,这些版本都在支持范围内。
备份
镜像可以重新下载,数据却不能。请备份命名数据卷、挂载的目录,以及 compose.yaml 文件和它们所用的环境变量。对于数据库,建议使用逻辑导出(pg_dump、mysqldump),而不要直接热拷贝数据卷。
