1. Ubuntu 24.04.3环境准备
在开始部署Docker 27.3.1之前,我们需要确保Ubuntu 24.04.3系统已经完成基础配置。我建议使用全新安装的Ubuntu Server LTS版本,这样可以避免各种依赖冲突问题。
1.1 系统更新与依赖安装
首先执行系统更新,这是任何Linux环境配置的标准第一步:
sudo apt update && sudo apt upgrade -y接下来安装必要的依赖包:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release注意:如果你使用的是企业内网环境,可能需要先配置代理或更换apt源。国内用户建议使用阿里云或清华的镜像源。
1.2 内核版本检查
Docker对Linux内核有特定要求,我们需要确认内核版本:
uname -rUbuntu 24.04.3默认搭载的是5.15或更高版本的内核,完全满足Docker 27.3.1的需求。
2. Docker 27.3.1安装流程
2.1 添加Docker官方GPG密钥
为了保证软件包的安全性,我们需要添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg2.2 设置稳定版仓库
添加Docker的apt仓库源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null2.3 安装特定版本Docker
现在我们可以安装指定版本的Docker了:
sudo apt update sudo apt install -y docker-ce=5:27.3.1-1~ubuntu.24.04~jammy docker-ce-cli=5:27.3.1-1~ubuntu.24.04~jammy containerd.io docker-buildx-plugin docker-compose-plugin重要:这里我们通过指定完整版本号来确保安装的是27.3.1版本,而不是最新的稳定版。
3. 安装后配置与验证
3.1 用户权限配置
默认情况下,只有root用户和docker组的用户才能运行Docker命令。为了避免每次都要用sudo,我们可以将当前用户加入docker组:
sudo usermod -aG docker $USER newgrp docker # 立即生效,无需重新登录3.2 服务启动与验证
启动Docker服务并设置开机自启:
sudo systemctl enable --now docker验证安装是否成功:
docker version docker run hello-world你应该能看到类似这样的输出:
Client: Docker Engine - Community Version: 27.3.1 API version: 1.43 Go version: go1.20.10 ...4. 常见问题排查
4.1 镜像加速配置
国内用户可能会遇到镜像拉取慢的问题,我们可以配置镜像加速器。创建或修改/etc/docker/daemon.json文件:
{ "registry-mirrors": [ "https://registry.docker-cn.com", "https://mirror.baidubce.com" ] }然后重启Docker服务:
sudo systemctl restart docker4.2 存储驱动选择
Ubuntu 24.04默认使用overlay2存储驱动,这是目前最推荐的驱动。可以通过以下命令确认:
docker info | grep "Storage Driver"如果显示不是overlay2,可以修改/etc/docker/daemon.json:
{ "storage-driver": "overlay2" }4.3 防火墙配置
如果你使用了UFW防火墙,需要允许Docker的通信:
sudo ufw allow 2375/tcp sudo ufw allow 2376/tcp sudo ufw reload5. 生产环境优化建议
5.1 日志管理
默认情况下,Docker容器的日志会无限增长。我们可以限制日志大小,在/etc/docker/daemon.json中添加:
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }5.2 资源限制
为了防止单个容器占用过多资源,可以在运行容器时设置限制:
docker run -it --memory=512m --cpus=1 ubuntu5.3 安全加固
建议启用用户命名空间隔离,在/etc/docker/daemon.json中添加:
{ "userns-remap": "default" }6. 版本管理与升级策略
6.1 锁定Docker版本
为了防止意外升级,我们可以锁定Docker版本:
sudo apt-mark hold docker-ce docker-ce-cli containerd.io6.2 升级注意事项
当需要升级Docker时,建议:
- 备份重要容器和数据
- 查看官方发布说明了解变更内容
- 在测试环境先验证
- 使用apt-get install --only-upgrade指定升级特定包
7. 常用工具与插件
7.1 Docker Compose安装
虽然我们已经安装了docker-compose-plugin,但如果你习惯使用独立的Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose7.2 实用工具推荐
- ctop:容器监控工具
- dive:镜像分析工具
- lazydocker:终端UI管理工具
安装示例:
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock quay.io/vektorlab/ctop:latest8. 性能调优与监控
8.1 系统参数调整
对于生产环境,建议调整以下内核参数:
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf sudo sysctl -p8.2 监控方案
推荐使用以下组合监控Docker:
- Prometheus + cAdvisor + Grafana
- Docker自带的stats命令:
docker stats9. 备份与恢复策略
9.1 容器备份
要备份运行中的容器:
docker commit -p <container_id> <backup_name> docker save -o <backup_name>.tar <backup_name>9.2 卷备份
对于数据卷的备份:
docker run --rm --volumes-from <container_name> -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /volume_data10. 网络配置进阶
10.1 自定义网络
创建自定义网络可以提高安全性:
docker network create --driver=bridge --subnet=172.28.0.0/16 my-net10.2 端口管理
查看容器端口映射:
docker port <container_id>11. 容器安全实践
11.1 镜像扫描
使用docker scan命令扫描镜像漏洞:
docker scan <image_name>11.2 最小权限原则
运行容器时使用非root用户:
docker run -u 1000:1000 <image_name>12. 多阶段构建优化
12.1 构建缓存利用
合理使用构建缓存可以加速镜像构建:
FROM ubuntu as builder # 构建阶段... FROM ubuntu COPY --from=builder /app /app12.2 构建参数
使用构建参数提高灵活性:
ARG version=latest FROM ubuntu:$version13. 容器编排入门
13.1 Docker Swarm基础
初始化Swarm集群:
docker swarm init13.2 服务部署
创建服务:
docker service create --name web --publish 8080:80 nginx14. 存储驱动深度配置
14.1 存储驱动选择
根据使用场景选择存储驱动:
- overlay2:通用场景
- devicemapper:特定存储设备
- btrfs/zfs:对应文件系统
14.2 数据卷管理
创建持久化卷:
docker volume create my-vol15. CI/CD集成实践
15.1 GitHub Actions集成
示例workflow配置:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Build Docker image run: docker build -t myapp .15.2 镜像推送
推送到Docker Hub:
docker tag myapp username/myapp docker push username/myapp16. 多架构支持
16.1 构建多平台镜像
使用buildx构建多架构镜像:
docker buildx build --platform linux/amd64,linux/arm64 -t username/multiarch-app .16.2 运行不同架构容器
在ARM设备上运行AMD64容器:
docker run --platform linux/amd64 -it ubuntu17. 容器日志管理进阶
17.1 日志驱动选择
根据需求选择日志驱动:
- json-file:默认
- syslog:集中式日志
- fluentd:日志收集
17.2 日志过滤
查看特定时间段的日志:
docker logs --since 2023-01-01 --until 2023-01-02 <container_id>18. 资源限制与配额
18.1 内存限制
防止容器耗尽内存:
docker run -it --memory=1g --memory-swap=2g ubuntu18.2 CPU限制
限制CPU使用:
docker run -it --cpus=0.5 ubuntu19. 容器健康检查
19.1 健康检查配置
在Dockerfile中添加健康检查:
HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost/ || exit 119.2 健康状态监控
查看容器健康状态:
docker inspect --format='{{json .State.Health}}' <container_id>20. 容器网络调试
20.1 网络连接测试
进入容器测试网络:
docker exec -it <container_id> ping google.com20.2 网络配置检查
查看容器网络配置:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id>