如果你第一次接触容器,Docker 最适合作为入门起点:它能把应用、依赖和运行方式打包到相对一致的环境里,减少“我电脑上能跑”的问题。本文以常见 Linux 服务器为背景,带你从零搭建一个可用、可维护的 Docker 容器环境 🐳。
一、先准备系统环境
开始之前,建议使用一台干净的 Linux 主机或虚拟机,并确保你拥有 sudo 权限。Docker 官方文档建议在安装前确认发行版、系统架构以及是否存在旧版或冲突包;以 Ubuntu 为例,Docker Engine 支持多个主流架构,并推荐通过官方软件源安装 Docker Ubuntu 安装文档。
- 确认系统版本:cat /etc/os-release
- 确认 CPU 架构:uname -m
- 更新软件索引:sudo apt update
- 安装基础工具:sudo apt install -y ca-certificates curl
如果你的机器曾经安装过 docker.io、docker-compose、containerd 或 runc,建议先卸载冲突包。需要注意的是,卸载软件包通常不会自动删除 /var/lib/docker/ 下已有的镜像、容器、卷和网络数据,是否清理应根据实际情况决定 官方说明。
二、安装 Docker Engine
生产或长期使用环境中,更推荐使用 Docker 官方仓库,而不是直接安装发行版仓库里的旧包。下面以 Ubuntu/Debian 系常见方式为例,核心思路是:添加 GPG 密钥、配置 Docker 软件源、安装 Docker Engine 与常用插件。
- 创建密钥目录:sudo install -m 0755 -d /etc/apt/keyrings
- 下载 Docker GPG 密钥:sudo curl -fsSL 来源链接 -o /etc/apt/keyrings/docker.asc
- 设置读取权限:sudo chmod a+r /etc/apt/keyrings/docker.asc
- 添加官方软件源并更新索引后,安装 docker-ce、docker-ce-cli、containerd.io、docker-buildx-plugin 和 docker-compose-plugin。
安装完成后,可以用 sudo docker version 查看客户端与服务端版本,用 sudo docker run hello-world 做一次基本验证。hello-world 镜像会被拉取并短暂运行,如果能正常输出提示,说明 Docker Engine、镜像拉取和容器启动流程已经打通 Docker 安装后步骤。
三、理解几个核心概念
很多新手会把镜像和容器混为一谈。简单说,镜像像“应用模板”,容器像“运行中的实例”。同一个镜像可以启动多个容器,而容器停止后不等于镜像消失。仓库则是存放镜像的地方,例如 Docker Hub 或企业内部镜像仓库。
- 镜像 Image:包含应用运行所需的文件、依赖和启动配置。
- 容器 Container:由镜像创建出来的运行环境,可以启动、停止、删除。
- 卷 Volume:用于持久化数据,避免容器删除后数据丢失。
- 网络 Network:用于容器之间、容器与宿主机之间通信。
四、配置非 root 用户运行
默认情况下,普通用户通常需要通过 sudo 执行 docker 命令。Docker 官方提供了把用户加入 docker 用户组的方式,但也明确提醒:docker 组会带来接近 root 级别的权限,因此只应授予可信用户 Docker Linux post-install 文档。
- 创建用户组:sudo groupadd docker
- 加入当前用户:sudo usermod -aG docker $USER
- 重新登录,或执行:newgrp docker
- 验证命令:docker run hello-world
如果你之前用 sudo 运行过 Docker,可能遇到 ~/.docker/config.json 权限问题。可以按官方建议调整 ~/.docker 目录归属,或者删除该目录让 Docker 自动重新生成配置 权限处理说明。
五、运行第一个实际容器
验证环境后,可以尝试启动一个 Nginx 容器:
sudo docker run -d --name web-demo -p 8080:80 nginx
这条命令的含义是:后台运行容器,容器名叫 web-demo,把宿主机 8080 端口映射到容器 80 端口,并使用 nginx 镜像。随后在浏览器访问 来源链接 curl 来源链接 Nginx 默认页面。
- 查看运行中容器:docker ps
- 查看所有容器:docker ps -a
- 查看日志:docker logs web-demo
- 停止容器:docker stop web-demo
- 删除容器:docker rm web-demo
- 删除镜像:docker rmi nginx
六、用 Compose 管理多容器应用
当项目包含 Web、数据库、缓存等多个服务时,逐条 docker run 会变得难维护。Docker Compose 插件可以用一个 compose.yaml 文件描述服务、端口、环境变量、卷和网络。官方安装包中通常包含 docker-compose-plugin,安装后可使用 docker compose version 检查 Docker Engine 安装说明。
举个思路:你可以把 Web 服务、MySQL 服务和 Redis 服务写进同一个 compose.yaml,然后使用 docker compose up -d 一键启动,使用 docker compose down 停止并清理相关容器网络。这样部署测试环境会更清晰,也方便团队共享配置。
七、常见问题与实用建议
- 端口无法访问:检查容器是否运行、端口映射是否正确、防火墙和云服务器安全组是否放行。
- 镜像下载慢:优先确认网络和 DNS,再考虑配置可信的镜像加速源。
- 数据突然没了:数据库、上传文件等重要数据不要只放容器内部,应使用 volume 或绑定宿主机目录。
- 权限过大:不要随意把所有用户加入 docker 组,服务器上应遵循最小权限原则。
- 磁盘占满:定期查看 docker system df,谨慎使用 docker system prune 清理无用资源。
小提示 💡:容器不是虚拟机,也不是安全边界的万能替代品。对外暴露端口、挂载宿主机目录、使用特权模式时,都应该额外谨慎。
八、总结
从零搭建 Linux Docker 容器环境,可以按“准备系统、安装 Engine、验证运行、配置用户、理解镜像容器、使用 Compose、做好安全和数据管理”的路线推进。只要掌握这些基础,你就能在本地测试、服务器部署和团队协作中更稳定地使用 Docker。后续进阶方向可以继续学习 Dockerfile 编写、私有镜像仓库、CI/CD 集成以及容器日志监控,让容器环境真正服务于日常开发与运维 🚀。