Docker 让你在隔离的容器中运行数据库、Web 应用和各种工具,因此安装新东西永远不会弄乱服务器上的其他部分。本指南在 Ubuntu 上安装 Docker Engine 和 Docker Compose,并运行第一个真实服务。
1. 从 Docker 的软件源安装
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
用 sudo docker run hello-world 检查安装是否成功。
2. 不使用 sudo 运行 Docker
sudo usermod -aG docker $USER
newgrp docker
docker 组的成员在这台机器上实际拥有 root 级别的权力,所以只添加你信任的用户。
3. 你的第一个 Compose 文件
创建一个文件夹和一个 compose.yaml,用来运行 Uptime Kuma 监控工具:
mkdir -p ~/kuma && cd ~/kuma
cat > compose.yaml <<'EOF'
services:
kuma:
image: louislam/uptime-kuma:1
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
EOF
docker compose up -d
绑定到 127.0.0.1 可以让该端口不暴露在公网上。当你想从外部访问时,请在前面放置 Nginx 或 Caddy 之类的反向代理。
日常命令
docker ps列出正在运行的容器。docker compose logs -f持续跟踪日志。docker compose pull && docker compose up -d更新到较新的镜像。docker system prune删除未使用的镜像和已停止的容器。
关于防火墙的安全警告
Docker 会写入自己的 iptables 规则。即使 UFW 显示已被阻止,以 "8080:80" 发布的端口仍可能从互联网访问。只发布必须公开的端口,把私有服务绑定到 127.0.0.1,并用端口扫描器从外部测试。
接下来运行什么
常见的自托管应用有 Nextcloud、Vaultwarden、Gitea、Plausible、n8n 和 Jellyfin。完整示例请参阅我们的自托管 Nextcloud指南。