尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Ubuntu 24.04官方推荐Docker安装与配置指南

Ubuntu 24.04官方推荐Docker安装与配置指南 1. 为什么选择官方推荐方式安装Docker在Ubuntu 24.04代号Noble Numbat上安装Docker时官方推荐的方法是通过设置Docker仓库来安装。这种方法相比直接下载deb包安装有几个显著优势自动获取最新稳定版更新便于后续版本升级维护确保软件包签名验证的安全性避免依赖关系冲突我在生产环境中实测发现通过仓库安装的Docker在系统升级时表现更稳定不会出现手动安装时常见的依赖断裂问题。下面将详细介绍完整安装流程。2. 系统准备与依赖安装2.1 更新系统软件包首先确保系统处于最新状态sudo apt update sudo apt upgrade -y这个步骤看似简单但很重要。我遇到过因为基础库版本过旧导致Docker安装失败的情况。特别是Ubuntu 24.04刚发布时有些镜像可能包含未及时更新的软件源。2.2 安装必要工具包Docker需要一些基础工具才能正常工作sudo apt install -y ca-certificates curl gnupg lsb-release这些工具包的作用ca-certificates用于HTTPS连接验证curl下载密钥和配置文件gnupg验证软件包签名lsb-release获取系统版本信息3. 设置Docker官方仓库3.1 添加Docker GPG密钥安全验证的关键步骤sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg这里创建了专门的密钥环目录避免污染系统其他密钥。我建议每次安装前都重新下载密钥因为Docker偶尔会轮换他们的签名密钥。3.2 配置APT源设置稳定版仓库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这个命令自动适配当前系统架构amd64/arm64等和Ubuntu版本代号。在Ubuntu 24.04上$(lsb_release -cs)会自动解析为noble。4. 安装Docker引擎4.1 更新软件包索引使新配置的仓库生效sudo apt update如果遇到找不到Release文件错误通常是因为Ubuntu版本代号识别问题。可以手动检查/etc/apt/sources.list.d/docker.list中的版本代号是否正确。4.2 安装Docker组件安装最新稳定版sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin这些组件的功能docker-ceDocker引擎核心docker-ce-cli命令行工具containerd.io容器运行时buildx-plugin多架构构建支持compose-plugin原生Compose支持5. 验证安装与权限配置5.1 检查Docker版本确认安装成功docker --version典型输出示例Docker version 24.0.7, build afdd53b5.2 测试运行容器运行测试容器sudo docker run hello-world这个命令会下载测试镜像并运行如果看到Hello from Docker!消息说明安装成功。5.3 配置非root用户权限默认需要sudo才能运行docker命令可以通过将用户加入docker组来避免sudo usermod -aG docker $USER newgrp docker # 立即生效重要安全提示docker组权限等同于root仅将受信任用户加入此组6. 常见问题排查6.1 镜像下载速度慢国内用户建议配置镜像加速器sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的镜像加速器.mirror.aliyuncs.com] } EOF sudo systemctl restart docker6.2 启动失败排查如果docker服务启动失败检查日志journalctl -xu docker.service常见问题包括内核模块缺失需要linux-modules-extra存储驱动冲突检查/etc/docker/daemon.json端口冲突默认占用2375/23766.3 卸载Docker如需完全卸载sudo apt purge docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd7. 进阶配置建议7.1 配置日志轮转防止日志文件过大sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF sudo systemctl restart docker7.2 修改数据存储位置默认存储在/var/lib/docker如需更改sudo systemctl stop docker sudo rsync -a /var/lib/docker /new/path sudo tee /etc/docker/daemon.json -EOF { data-root: /new/path/docker } EOF sudo systemctl start docker7.3 启用IPv6支持如需IPv6功能sudo tee /etc/docker/daemon.json -EOF { ipv6: true, fixed-cidr-v6: 2001:db8:1::/64 } EOF sudo systemctl restart docker8. 生产环境优化建议8.1 内核参数调整在高负载环境下建议修改sysctl参数sudo tee /etc/sysctl.d/99-docker.conf -EOF net.ipv4.ip_forward 1 net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 EOF sudo sysctl --system8.2 限制容器资源创建容器时建议明确设置资源限制docker run -it --cpus1.5 --memory512m ubuntu8.3 使用cgroups v2Ubuntu 24.04默认使用cgroups v2如需兼容旧版sudo tee /etc/default/grub -EOF GRUB_CMDLINE_LINUXsystemd.unified_cgroup_hierarchy0 EOF sudo update-grub sudo reboot9. 版本升级与维护9.1 查看可用版本列出仓库中所有Docker版本apt list -a docker-ce9.2 升级到特定版本指定版本号升级sudo apt install docker-ceVERSION docker-ce-cliVERSION9.3 自动安全更新启用无人值守升级sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades10. 容器网络配置技巧10.1 自定义网桥创建隔离的网络环境docker network create --driverbridge --subnet172.28.0.0/16 my-net10.2 端口映射检查查看容器端口映射docker port container_id10.3 主机模式网络需要高性能网络时使用docker run --networkhost nginx11. 存储驱动选择建议Ubuntu 24.04推荐使用overlay2驱动sudo tee /etc/docker/daemon.json -EOF { storage-driver: overlay2 } EOF验证当前使用的驱动docker info | grep Storage Driver12. 容器安全加固措施12.1 启用用户命名空间隔离root权限sudo tee /etc/docker/daemon.json -EOF { userns-remap: default } EOF12.2 只读文件系统运行敏感容器时docker run --read-only alpine12.3 禁用特权模式除非必要否则避免docker run --privileged13. 性能监控与日志13.1 实时监控容器查看资源使用情况docker stats13.2 日志查看技巧跟踪特定容器日志docker logs -f --tail100 container_id13.3 导出检查点用于故障诊断docker checkpoint create container_id checkpoint_name14. 多架构构建支持14.1 启用buildx创建构建器实例docker buildx create --use14.2 跨平台构建同时构建amd64和arm64镜像docker buildx build --platform linux/amd64,linux/arm64 -t your-image .15. 常用维护命令参考15.1 磁盘空间清理删除无用数据docker system prune -a15.2 查看镜像分层分析镜像构成docker history image_id15.3 导出导入容器迁移容器状态docker export container_id container.tar docker import container.tar new-image16. 与Ubuntu 24.04特性集成16.1 使用新版本systemd利用cgroup v2特性docker run --cgroupnsprivate alpine16.2 与Snap兼容性如果系统安装了snap版dockersudo snap remove docker sudo apt purge docker.io16.3 利用新内核特性Ubuntu 24.04的5.15内核支持docker run --device /dev/kvm --cap-add NET_ADMIN17. 容器编排初步17.1 使用内置ComposeUbuntu 24.04可直接使用docker compose up -d17.2 编写Compose文件示例docker-compose.ymlversion: 3.8 services: web: image: nginx:alpine ports: - 8080:8017.3 管理Compose项目查看运行状态docker compose ps18. 备份与恢复策略18.1 定期备份配置重要目录包括/etc/docker/var/lib/docker/volumes重要的compose文件18.2 容器数据卷备份示例备份命令docker run --rm --volumes-from db -v $(pwd):/backup ubuntu tar cvf /backup/db.tar /var/lib/mysql18.3 全量迁移方案使用Docker内置工具docker save -o images.tar $(docker images -q)19. 故障恢复技巧19.1 容器崩溃调试进入故障容器docker exec -it container_id sh19.2 网络问题诊断检查容器网络docker network inspect network_id19.3 存储驱动修复当出现存储问题时sudo dockerd --debug20. 性能调优实战20.1 文件系统选择推荐使用xfs或ext4mkfs.xfs /dev/sdb120.2 调整swappiness减少交换内存使用echo 10 | sudo tee /proc/sys/vm/swappiness20.3 优化IO调度对于SSD建议使用none或deadlineecho deadline | sudo tee /sys/block/sda/queue/scheduler
返回列表