Docker的使用
Docker 是最流行的容器运行时之一,提供统一的镜像格式与运行 API,常与 Kubernetes、CI/CD 流水线和开发环境集成。本文整理在 Linux 上安装 Docker Engine、配置守护进程、常见命令与排障要点,帮助快速掌握日常使用方法。
安装 Docker Engine
以下步骤适用于主流 Debian/Ubuntu 发行版,其他发行版可参考 官方文档。
-
移除旧版本(存在时):
sudo apt-get remove docker docker-engine docker.io containerd runc -
安装依赖并配置官方仓库:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
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
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -
安装 Docker Engine、CLI 及 containerd:
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
验证安装:
sudo systemctl status docker
sudo docker run --rm hello-world
若希望非 root 用户执行 Docker 命令,可运行
sudo usermod -aG docker $USER并重新登录会话。
守护进程配置
Docker Daemon 的默认配置文件位于 /etc/docker/daemon.json。常见配置示例:
{
"registry-mirrors": [
"https://bqr1dr1n.mirror.aliyuncs.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
修改后执行 sudo systemctl restart docker 并通过 docker info 校验配置是否生效。若用于 Kubernetes,确保 cgroup 驱动与 kubelet 保持一致(建议使用 systemd)。
镜像管理
- 拉取镜像:
docker pull ubuntu:22.04 - 构建镜像:
docker build -t myapp:1.0 . - 查看镜像:
docker images或docker images --digests - 删除镜像:
docker rmi <IMAGE_ID> - 保存/加载:
docker save myapp:1.0 -o myapp.tar与docker load -i myapp.tar
构建镜像时,建议写 .dockerignore 排除无关文件,缩小体积并提升缓存命中率。
容器生命周期
常见容器操作命令:
# 新建并后台运行容器
docker run -d --name nginx -p 8080:80 nginx:alpine
# 查看容器列表
docker ps # 运行中
docker ps -a # 包含已退出
# 进入容器(采用交互式终端)
docker exec -it nginx /bin/sh
# 查看日志(支持 --tail / --since 等参数)
docker logs -f nginx
# 停止、启动、删除容器
docker stop nginx
docker start nginx
docker rm nginx
# 在容器与主机之间拷贝文件
docker cp nginx:/etc/nginx/nginx.conf ./
docker cp ./index.html nginx:/usr/share/nginx/html/
使用 docker inspect <NAME> 可以获取详细配置、网络、挂载信息。对资源使用情况,可配合 docker stats 实时查看 CPU、内存、网络 IO。
Docker Compose 快速上手
Compose 适合定义多容器应用。新建 docker-compose.yml:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
redis:
image: redis:7-alpine
运行命令:
docker compose up -d
docker compose ps
docker compose down
Compose 会自动创建网络并管理容器依赖,适合开发测试或小型部署。
健康检查与优化建议
- 定期清理无用镜像、容器与卷:
docker system prune - 为业务容器定义
HEALTHCHECK指令,便于监控重启。 - 生产环境限制容器日志尺寸,避免占满磁盘。
- 结合
docker update --cpus、--memory控制资源上限,与 Kubernetes 的 Requests/Limits 对齐。
常见故障排查
- 服务无法启动:查看
sudo journalctl -u docker与/var/log/docker.log。若缺少内核模块,可加载sudo modprobe overlay。 - 镜像拉取缓慢:确认镜像源可达,必要时启用镜像加速器或配置私有 Registry。
- 权限问题:确保当前用户在
docker组内,或在命令前加sudo。 - 磁盘不足:使用
docker system df分析空间占用,配合prune清理未使用资源。
通过以上配置与命令,可以快速搭建可靠的 Docker 运行环境,并为后续容器编排(如 Kubernetes、Swarm)奠定基础。