服务器Docker教程:从安装到运行第一个容器
在 Linux 服务器上装 Docker,核心就三步:确认系统版本、用系统包管理器装 Docker Engine、运行一个测试容器看是否正常。
本文以 Ubuntu/Debian 的 apt 和 CentOS/RHEL 的 yum/dnf 为例,命令可以直接复制执行。
前提是你有服务器的 root 权限或 sudo 权限,并且服务器能正常访问外网。
装之前先确认环境
先看系统版本和架构,避免命令对不上:
cat /etc/os-release
uname -m
输出里能看到系统名称和 x86_64 或 aarch64。
如果之前装过旧版 Docker,先卸载残留包,否则可能出现命令冲突:
sudo apt remove docker docker-engine docker.io containerd runc
CentOS 系统把 apt 换成 yum remove 即可。
这一步只删软件包,不会删除 /var/lib/docker 里的镜像和容器数据,但如果之前有重要容器,建议先备份。
安装 Docker Engine
Ubuntu/Debian 环境下,先更新索引并安装依赖:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
然后添加 Docker 官方 GPG 密钥和软件源。
注意下面的源地址按系统代号自动生成,不需要手动改:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] 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
CentOS/RHEL 环境用 dnf 或 yum 安装 docker-ce,源地址换成 https://download.docker.com/linux/centos/docker-ce.repo,其余思路一致。
安装完成后启动并设置开机自启:
sudo systemctl enable --now docker
sudo systemctl status docker
看到 active (running) 就说明服务已经起来了。
配置镜像加速和用户权限
国内服务器直接拉镜像可能很慢,可以配置镜像加速地址。
编辑 /etc/docker/daemon.json(文件不存在就新建):
{
"registry-mirrors": ["https://你的加速地址"]
}
加速地址需要你自己从可用的镜像服务商获取,不同服务商地址不同,不要照抄来源不明的地址。
改完重载配置:
sudo systemctl daemon-reload
sudo systemctl restart docker
另一个高频问题是每次执行 docker 命令都要加 sudo。
把当前用户加入 docker 组可以解决:
sudo usermod -aG docker $USER
执行后需要退出 SSH 重新登录才生效。注意:加入 docker 组等同于给了该用户接近 root 的权限,只对你信任的账号操作。
跑通第一个容器
用 Nginx 做验证最直观,它能直接通过浏览器访问:
docker run -d --name mynginx -p 8080:80 nginx
参数含义:-d 后台运行,--name 给容器起名,-p 8080:80 把宿主机 8080 端口映射到容器 80 端口。
执行后查看状态:
docker ps
列表里能看到 mynginx 且状态为 Up 就成功了。
接着在浏览器访问 http://服务器IP:8080,出现 Nginx 欢迎页说明端口映射正常。
如果打不开,先检查服务器安全组或防火墙是否放行了 8080 端口。
需要让容器开机自启,创建时加 --restart always:
docker run -d --restart always --name mynginx -p 8080:80 nginx
常见报错怎么排查
提示 permission denied:说明当前用户没在 docker 组,按上面的 usermod 操作后重新登录。
提示 port is already allocated:8080 端口被占用,用 ss -tlnp | grep 8080 查出占用进程,换端口或停掉冲突服务。
拉镜像卡住或超时:多半是网络问题,检查 daemon.json 里的加速地址是否可用,改完记得重启 Docker。
容器启动后马上退出:用 docker logs 容器名 看日志,多数是配置错误或启动命令不对,日志里通常有直接线索。
确认安装是否真的可用
除了看 docker ps,还可以用下面几条命令交叉验证:
docker version
docker info
docker images
docker version 能同时显示客户端和服务端版本,docker info 能看到镜像加速是否生效。
这几项都正常,说明 Docker 已经可以正常用于后续部署。
如果你只是想先跑通再深入,
建议保留这个 Nginx 容器做练习,
熟悉 docker stop、docker rm、docker exec -it 容器名 bash 这几个命令,
再去看 Dockerfile 和 compose,
学习曲线会平缓很多。