当前位置: 首页 > article >正文

Ubuntu Server 下 Docker 的快速安装与优化配置指南

1. 环境准备与旧版本清理在开始安装Docker之前我们需要确保系统环境干净且具备必要的依赖项。我遇到过不少因为旧版本残留导致的问题所以建议先执行清理操作。Ubuntu Server默认可能包含旧版docker.io或lxc-docker这些可能与新版Docker CE产生冲突。执行以下命令彻底清除旧版本sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd清理完成后建议更新系统基础软件包。这个步骤经常被新手忽略但实测下来能避免很多依赖冲突sudo apt update sudo apt upgrade -y注意生产环境中建议在非业务高峰期执行系统更新避免影响正在运行的服务。我曾经因为跳过这步导致后续安装出现奇怪的依赖错误排查了整整两小时才发现是基础库版本不匹配。2. 安装Docker引擎2.1 安装必要依赖包Docker运行需要一些基础工具支持这些依赖就像盖房子前要准备的水泥和砖块sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common这里有个小技巧使用\符号将长命令分成多行既美观又便于后续维护。我在团队协作时发现这种写法能让其他成员更清楚每个依赖的作用。2.2 添加Docker官方GPG密钥GPG密钥相当于软件的身份证确保下载的包是官方正版curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg这个命令做了三件事通过curl下载密钥使用gpg解码将密钥保存到系统可信密钥环2.3 设置稳定版仓库配置软件源就像告诉系统去哪里找软件国内用户建议使用阿里云镜像加速echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null这里有个坑要注意$(lsb_release -cs)会自动获取系统代号如focal/jammy但某些非标准系统可能返回错误值。我遇到过自定义镜像返回unknown的情况这时需要手动替换为正确的系统代号。2.4 安装Docker引擎终于到核心步骤了这个命令会安装Docker三大组件sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io安装完成后验证版本docker --version建议同时安装docker-compose插件这在后续容器编排时会非常有用sudo apt install -y docker-compose-plugin3. 基础配置优化3.1 配置国内镜像加速直接从Docker Hub拉取镜像可能会很慢就像国际快递总是比同城配送慢。修改daemon.json配置国内镜像源sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://registry.docker-cn.com, https://mirror.baidubce.com, https://docker.mirrors.ustc.edu.cn ], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF这个配置除了镜像加速外还包含三个重要优化使用systemd作为cgroup驱动兼容性更好限制日志文件大小避免磁盘爆满使用overlay2存储驱动性能更优应用配置并重启服务sudo systemctl daemon-reload sudo systemctl restart docker3.2 用户权限管理默认只有root能直接操作Docker这就像把家里所有钥匙都交给一个人既不方便也不安全。更合理的做法是将普通用户加入docker组sudo groupadd docker sudo usermod -aG docker $USER newgrp docker测试权限是否生效docker run --rm hello-world重要安全提示docker组实际上拥有root等效权限。在生产环境中应该更精细地控制访问权限比如使用授权插件或RBAC策略。4. 高级安全配置4.1 限制容器能力默认情况下容器几乎能做任何事这就像给陌生人你家的万能钥匙。通过Linux capabilities机制可以限制容器的权限docker run --cap-drop ALL --cap-add NET_BIND_SERVICE -d nginx这个命令首先移除所有权限--cap-drop ALL然后只添加绑定网络端口的权限--cap-add NET_BIND_SERVICE4.2 启用用户命名空间隔离用户命名空间隔离能让容器中的root不等于宿主机的root相当于给容器戴上了面具sudo tee /etc/docker/daemon.json -EOF { userns-remap: default } EOF配置后需要重建所有容器。我在测试环境验证时发现启用这个功能会导致约5%的性能下降但安全性提升显著。4.3 网络访问控制Docker默认开放所有端口非常危险应该像小区门禁一样严格控制访问# 查看现有网络规则 sudo iptables -L DOCKER-USER # 只允许特定IP访问2375管理端口 sudo iptables -I DOCKER-USER -i eth0 ! -s 192.168.1.100 -p tcp --dport 2375 -j DROP对于生产环境更推荐使用VPN或私有网络进行管理完全避免暴露管理端口到公网。5. 性能调优技巧5.1 存储驱动选择不同的存储驱动就像不同类型的仓库适合不同场景驱动类型适用场景优点缺点overlay2默认推荐性能好需要Linux内核4.0aufs旧系统兼容稳定性高性能较差devicemapper企业存储支持块设备配置复杂查看当前使用的驱动docker info | grep Storage Driver5.2 日志管理策略失控的日志就像漏水的水龙头迟早会淹没你的磁盘。除了之前设置的日志大小限制还可以完全禁用某个容器的日志docker run --log-drivernone ...使用外部日志系统docker run --log-driversyslog ...5.3 资源限制实践不给容器设资源限制就像让程序随便刷你的信用卡。通过cgroups可以精确控制docker run -it --cpus 0.5 --memory 512m --memory-swap 1g alpine这个配置表示最多使用50%的CPU时间片内存限制512MB交换分区1GB我在压力测试中发现不设内存限制的容器在内存耗尽时会被OOM Killer直接杀死而有限制的容器会优雅地报错。6. 日常维护命令6.1 空间清理Docker用久了会像从不整理的书房到处都是没用的缓存。这些命令能释放空间# 删除所有停止的容器 docker container prune # 删除所有未被使用的镜像 docker image prune -a # 深度清理包括构建缓存 docker system prune --volumes建议设置定时任务每周自动清理一次但要注意避开业务高峰期。6.2 健康检查定期检查Docker健康状况就像体检能提前发现问题# 检查服务状态 systemctl status docker # 查看详细运行时信息 docker info # 检查存储驱动状态 docker system df我习惯把这些检查写成脚本用Prometheus监控关键指标这样能实时掌握系统状态。7. 常见问题排查7.1 网络连接失败当容器无法联网时可以按照这个流程排查检查宿主机网络ping 8.8.8.8验证DNS解析docker run --rm busybox nslookup example.com检查iptables规则sudo iptables -L -n -v7.2 镜像拉取超时遇到镜像拉取问题时可以换一个镜像源检查DNS配置cat /etc/resolv.conf使用代理需符合相关规定7.3 容器启动失败容器启动报错时按这个顺序检查查看详细日志docker logs -f 容器名以调试模式启动docker run --rm -it --entrypoint sh 镜像名检查存储驱动状态dmesg | grep overlay记得去年我们线上服务突然全部崩溃最后发现是overlay文件系统损坏。现在我会定期检查/var/lib/docker目录的健康状况。

相关文章:

Ubuntu Server 下 Docker 的快速安装与优化配置指南

1. 环境准备与旧版本清理 在开始安装Docker之前,我们需要确保系统环境干净且具备必要的依赖项。我遇到过不少因为旧版本残留导致的问题,所以建议先执行清理操作。Ubuntu Server默认可能包含旧版docker.io或lxc-docker,这些可能与新版Docker C…...

手眼标定太复杂?试试这款超简单易用的开源标定工具!

1. 为什么你需要这款手眼标定工具? 第一次接触机器人手眼标定时,我被各种数学公式和复杂的标定流程搞得晕头转向。传统的标定方法往往需要手动计算坐标变换矩阵,还要处理各种误差补偿,光是理解原理就要花上好几天。直到发现这个开…...

VMware虚拟机安装Ubuntu部署DeepSeek-OCR-2:完整教程

VMware虚拟机安装Ubuntu部署DeepSeek-OCR-2:完整教程 1. 引言 如果你正在寻找一种在隔离环境中测试OCR模型的方法,那么使用VMware虚拟机安装Ubuntu并部署DeepSeek-OCR-2可能是个不错的选择。这个教程将带你一步步完成整个过程,从VMware配置…...

微表情数据集获取全攻略:从申请到使用的完整指南

1. 微表情数据集的价值与应用场景 微表情研究在心理学、人机交互和安全检测等领域越来越重要。这些短暂的面部表情变化通常只持续1/25到1/5秒,却能揭示人真实的情绪状态。要开展相关研究,高质量的数据集是基础。我刚开始做微表情分析时,花了大…...

PyTorch-2.x-Universal-Dev使用体验:国内源加速的深度学习环境

PyTorch-2.x-Universal-Dev使用体验:国内源加速的深度学习环境 1. 为什么你需要一个“开箱即用”的PyTorch环境? 如果你尝试过从零开始搭建一个PyTorch深度学习环境,大概率经历过这些“痛苦时刻”:花半小时下载几个G的CUDA驱动&…...

解锁Deepin Boot Maker的4大实战价值:打造安全高效的启动盘制作流程

解锁Deepin Boot Maker的4大实战价值:打造安全高效的启动盘制作流程 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 当你需要为新电脑安装系统、修复受损操作系统,或测试不同Linux发行版时…...

摄影小白必看:如何用MTF曲线挑选最适合你的镜头(附实战对比)

摄影小白必看:如何用MTF曲线挑选最适合你的镜头(附实战对比) 当你第一次听说"MTF曲线"这个词时,可能会觉得这是专业摄影师才需要了解的复杂概念。但实际上,理解MTF曲线就像掌握了一把钥匙,能帮你…...

BLDC电机控制避坑指南:从霍尔信号处理到PWM调制的5个常见问题

BLDC电机控制避坑指南:从霍尔信号处理到PWM调制的5个常见问题 在无刷直流电机(BLDC)控制系统的开发过程中,工程师们常常会遇到各种棘手的技术挑战。这些问题不仅影响系统性能,还可能导致硬件损坏或控制失效。本文将深入…...

从数据获取到分析应用:ERA5-Land月尺度降水、气温与辐射数据的全流程处理指南

1. ERA5-Land数据基础认知 第一次接触气象数据的朋友可能会被各种专业术语吓到,但ERA5-Land其实就像一台记录地球表面天气变化的超级摄像机。这个由欧洲中期天气预报中心(ECMWF)维护的数据集,以9公里9公里的网格精度,持…...

ARMA模型调参避坑指南:当ACF/PACF都拖尾时如何确定p,q阶数?

ARMA模型调参实战:当ACF/PACF拖尾时的阶数选择策略 引言 在电商销量预测、股票价格分析、能源需求预估等场景中,时间序列建模都是核心工具。许多数据分析师在掌握了ARIMA模型基础后,往往会在ARMA(p,q)阶数选择这个关键步骤上陷入困境——当自…...

如何用乒乓缓存机制优化你的嵌入式系统性能(附代码示例)

如何用乒乓缓存机制优化你的嵌入式系统性能(附代码示例) 在嵌入式系统开发中,实时性和高效性往往是核心诉求。想象一下,当你正在处理高频率的传感器数据或实时音视频流时,任何I/O延迟都可能导致数据丢失或系统卡顿。这…...

Godot 4实战:如何绕过工程目录限制实现动态图片导入(附完整代码)

Godot 4实战:突破工程目录限制的动态图片加载方案 在开发电子书阅读器这类需要动态加载外部资源的应用时,Godot引擎默认的资源管理机制往往会成为绊脚石。最近在开发一个支持多格式电子书的阅读器时,我遇到了一个典型问题:如何在不…...

优化FF14游戏体验:自动过场动画跳过技术解析与实践指南

优化FF14游戏体验:自动过场动画跳过技术解析与实践指南 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip 游戏流程中断问题:过场动画的隐性成本分析 在大型多人在线角色扮演游戏中…...

如何利用阿里云镜像加速Deeplearning4j的Maven依赖下载(附完整POM.xml配置)

阿里云镜像加速Deeplearning4j依赖下载实战指南 如果你曾经被Maven依赖下载速度折磨得怀疑人生,那么这篇文章就是为你准备的。作为Java生态中最流行的深度学习框架之一,Deeplearning4j的强大功能背后是一系列复杂的依赖关系,而这些依赖默认从…...

OpenCV轮廓检测实战:5种mode参数效果对比与选型指南(附代码)

OpenCV轮廓检测实战:5种mode参数效果对比与选型指南(附代码) 在计算机视觉项目中,轮廓检测往往是物体识别、形状分析和工业检测的第一步。OpenCV提供的cv2.findContours()函数虽然功能强大,但其mode参数的四种不同选项…...

ChatGPT内容生成指令与范例大全:从零构建高效提示词工程

ChatGPT内容生成指令与范例大全:从零构建高效提示词工程 刚开始接触ChatGPT这类大语言模型时,你是不是也遇到过这样的烦恼?明明想让AI写一篇产品介绍,结果它给你生成了一篇抒情散文;想让它总结技术文档,它…...

Qwen3-14b_int4_awq多场景应用:跨境电商独立站商品页文案AI批量生成

Qwen3-14b_int4_awq多场景应用:跨境电商独立站商品页文案AI批量生成 1. 模型简介与部署验证 Qwen3-14b_int4_awq是基于Qwen3-14b模型的量化版本,采用int4精度和AWQ(Activation-aware Weight Quantization)技术进行优化。这个版本…...

3步打造数据恢复利器:Deepin Boot Maker应急救援指南

3步打造数据恢复利器:Deepin Boot Maker应急救援指南 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 当系统崩溃时,你是否遇到过重要文件无法访问的困境?当硬盘分区损坏时&…...

深入解析Redis持久化:RDB与AOF的实战对比与选型指南

1. Redis持久化的重要性与基本概念 想象一下你正在运营一个电商平台,突然服务器断电重启,所有用户购物车里的商品、秒杀活动的库存数据全部消失——这种灾难性场景正是Redis持久化要解决的核心问题。作为内存数据库,Redis的数据默认只存在于R…...

服务器为什么会被攻击?服务器遭受攻击后,如何进行防护

常见的网络攻击 DDoS攻击是最常见的攻击方式,全称为分布式拒绝服务攻击,又称为“洪水式攻击”。DDoS是一种基于DoS的特殊形式的拒绝服务攻击,DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响…...

再见 MCP

好吧,代理 AI 社区正在经历一次重大的现实检验。 如果你关注开发者动态已有一段时间,模型上下文协议(MCP) 本应是通用标准。 我不会说它没有帮助。我构建了 Splitwise MCP,因为付费升级 pro 不是一个好主意。 它是将…...

CMake项目构建必知:CMAKE_CURRENT_SOURCE_DIR和CMAKE_SOURCE_DIR的实战区别与常见坑点

CMake路径变量深度解析:如何精准掌控CMAKE_CURRENT_SOURCE_DIR与CMAKE_SOURCE_DIR 当你第一次在CMake项目中看到CMAKE_CURRENT_SOURCE_DIR和CMAKE_SOURCE_DIR这两个变量时,可能会觉得它们看起来非常相似——毕竟都包含"SOURCE_DIR"这个部分。但…...

Qwen3-TTS-Tokenizer-12Hz实战教程:语音克隆流程中tokens中间表示

Qwen3-TTS-Tokenizer-12Hz实战教程:语音克隆流程中tokens中间表示 你是不是也好奇,那些能模仿任何人声音的AI语音克隆技术,到底是怎么把一段声音“记住”并“复刻”出来的?秘密就藏在声音的“数字密码”——tokens中间表示里。 …...

SolidWorks到Unity全流程:如何将自定义模型完美导入Unity(含FBX转换避坑指南)

SolidWorks到Unity全流程:工业级模型的高保真迁移指南 当工业设计师与游戏开发者相遇,最大的挑战往往不是创意碰撞,而是技术壁垒的打破。SolidWorks作为工业设计领域的标杆工具,其生成的精密模型如何无损进入Unity的实时渲染世界&…...

B端产品经理必看:用ER图搞定汽车美容门店系统的数据库设计(附完整案例)

B端产品经理实战指南:汽车美容门店系统的ER图设计与业务建模 在B端产品设计领域,业务建模能力直接决定了系统架构的合理性与扩展性。作为连接业务需求与技术实现的桥梁,ER图(实体关系图)是每位B端产品经理必须掌握的核…...

Qwen3-14b_int4_awq从零开始:Linux环境部署vLLM+Chainlit全流程图文详解

Qwen3-14b_int4_awq从零开始:Linux环境部署vLLMChainlit全流程图文详解 1. 环境准备与快速部署 在开始之前,请确保您的Linux系统满足以下基本要求: 操作系统:Ubuntu 20.04或更高版本显卡:NVIDIA GPU(建议…...

Z-Image Atelier 与物联网结合:为STM32项目生成产品外观与UI界面概念图

Z-Image Atelier 与物联网结合:为STM32项目生成产品外观与UI界面概念图 1. 引言:当硬件开发遇上AI视觉 做嵌入式开发的朋友,尤其是玩STM32这类单片机的,肯定都经历过这样的阶段:电路板调通了,代码跑起来了…...

计算机毕业设计springboot基于+vue的盲盒管理系统的设计与实现 基于SpringBoot与Vue的潮流盲盒电商平台开发 基于SpringBoot+Vue架构的惊喜盒交易与运营系统

计算机毕业设计springboot基于vue的盲盒管理系统的设计与实现8l1g8gng (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。近年来,盲盒经济以其独特的"惊喜消费&quo…...

nomic-embed-text-v2-moe部署优化:Ollama GPU绑定+显存隔离防多模型干扰

nomic-embed-text-v2-moe部署优化:Ollama GPU绑定显存隔离防多模型干扰 1. 模型简介与核心优势 nomic-embed-text-v2-moe是一个强大的多语言文本嵌入模型,专门为高效的文本检索和相似度计算而设计。这个模型在多个关键指标上表现出色,特别适…...

Ubuntu 20.04下nvidia-docker安装避坑指南

1. 为什么需要nvidia-docker? 在深度学习开发中,GPU加速是必不可少的。但传统的Docker默认不支持直接调用宿主机的NVIDIA GPU,这就导致很多机器学习框架在容器内无法发挥显卡性能。nvidia-docker的出现完美解决了这个问题,它通过封…...