Linux系统下Docker安装与配置完整指南

发布时间:2026/10/27 14:12:02

Linux系统下Docker安装与配置完整指南 1. Linux环境下Docker安装前的准备工作在开始安装Docker之前我们需要做好充分的准备工作。作为在Linux系统上运行的容器化平台Docker对系统环境有一定要求合理的准备工作能避免后续安装和使用过程中出现各种问题。1.1 系统环境检查首先确认你的Linux发行版和内核版本是否符合要求。Docker官方推荐运行在64位Linux发行版上内核版本至少为3.10或更高。可以通过以下命令检查uname -r cat /etc/*-release对于大多数现代Linux发行版如Ubuntu 16.04/CentOS 7这些要求都能满足。但如果你使用的是较旧的系统可能需要先升级内核。注意在生产环境中建议使用LTS长期支持版本的Linux发行版以获得更好的稳定性和支持周期。1.2 卸载旧版本Docker如果你的系统上已经安装了旧版本的Docker可能被称为docker、docker.io或docker-engine建议先卸载它们以避免冲突sudo apt-get remove docker docker-engine docker.io containerd runc或者对于基于RPM的系统sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine1.3 安装依赖包Docker需要一些基础依赖包才能正常运行。根据你的Linux发行版安装必要的依赖对于Debian/Ubuntu系统sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release对于CentOS/RHEL系统sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm21.4 配置Docker的APT/YUM源为了确保安装的是官方维护的最新稳定版Docker我们需要添加Docker的官方软件源对于Debian/Ubuntu系统curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ deb [archamd64 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/null对于CentOS/RHEL系统sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo提示如果你在中国大陆可以考虑使用国内镜像源来加速下载如阿里云或清华大学的镜像源。2. Docker引擎的安装与验证2.1 安装Docker引擎完成上述准备工作后现在可以正式安装Docker引擎了。对于Debian/Ubuntu系统sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io对于CentOS/RHEL系统sudo yum install docker-ce docker-ce-cli containerd.io如果你需要安装特定版本的Docker可以先列出可用版本apt-cache madison docker-ce # Ubuntu/Debian yum list docker-ce --showduplicates | sort -r # CentOS/RHEL然后指定版本安装sudo apt-get install docker-ceVERSION_STRING docker-ce-cliVERSION_STRING containerd.io # Ubuntu/Debian sudo yum install docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRING containerd.io # CentOS/RHEL2.2 启动Docker服务并设置开机自启安装完成后需要启动Docker服务并设置为开机自动启动sudo systemctl start docker sudo systemctl enable docker2.3 验证Docker安装为了确认Docker已正确安装并运行可以执行以下测试命令sudo docker run hello-world这个命令会下载一个测试镜像并在容器中运行它。如果看到Hello from Docker!的消息说明安装成功。2.4 检查Docker版本信息了解安装的Docker版本信息对于后续使用和故障排查很有帮助docker --version docker-compose --version docker info这些命令会显示Docker客户端和服务器的版本信息以及系统级的配置和资源使用情况。3. Docker的配置与优化3.1 配置非root用户使用Docker默认情况下Docker需要root权限才能运行。为了安全和使用方便我们可以将当前用户加入docker组sudo usermod -aG docker $USER然后需要注销并重新登录或者执行以下命令使更改立即生效newgrp docker现在你可以不使用sudo直接运行docker命令了。重要安全提示docker组实际上等同于root权限因此只应将可信用户加入此组。3.2 配置Docker镜像加速器在国内访问Docker Hub可能会很慢我们可以配置镜像加速器来改善下载速度。常见的加速器包括阿里云、腾讯云等提供的服务。创建或编辑Docker的配置文件sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://your-mirror.mirror.aliyuncs.com] } EOF然后重启Docker服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker3.3 调整Docker数据存储位置默认情况下Docker将镜像和容器存储在/var/lib/docker目录下。如果这个分区空间不足可以修改存储位置首先停止Docker服务sudo systemctl stop docker然后移动现有数据如果有sudo mv /var/lib/docker /path/to/new/location创建符号链接或直接修改配置文件sudo tee /etc/docker/daemon.json -EOF { data-root: /path/to/new/location/docker } EOF最后重启Docker服务sudo systemctl start docker3.4 配置Docker日志轮转Docker容器生成的日志可能会占用大量磁盘空间。我们可以配置日志轮转来管理日志大小编辑Docker的配置文件sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF这会将每个容器的日志文件限制为最大10MB最多保留3个文件。修改后需要重启Docker服务。4. Docker常用操作与维护4.1 基本Docker命令以下是一些最常用的Docker命令搜索镜像docker search 镜像名拉取镜像docker pull 镜像名:标签列出镜像docker images运行容器docker run [选项] 镜像名 [命令]列出运行中的容器docker ps列出所有容器docker ps -a停止容器docker stop 容器ID启动已停止的容器docker start 容器ID删除容器docker rm 容器ID删除镜像docker rmi 镜像ID查看容器日志docker logs 容器ID进入运行中的容器docker exec -it 容器ID /bin/bash4.2 容器与主机之间的文件传输有时我们需要在容器和主机之间传输文件从主机复制到容器docker cp /host/path container_id:/container/path从容器复制到主机docker cp container_id:/container/path /host/path4.3 容器资源限制为了防止容器占用过多系统资源可以设置资源限制限制内存使用docker run -it --memory512m 镜像名限制CPU使用docker run -it --cpus1.5 镜像名限制CPU优先级docker run -it --cpu-shares512 镜像名4.4 Docker系统清理随着使用时间的增加Docker可能会积累大量不再使用的镜像、容器和网络等资源。定期清理可以释放磁盘空间删除所有停止的容器docker container prune删除所有未被使用的镜像docker image prune -a删除所有未被使用的网络docker network prune删除所有未被使用的资源docker system prune更彻底的清理包括构建缓存docker system prune -a5. 常见问题与解决方案5.1 Docker服务启动失败如果遇到Docker服务无法启动的情况可以按照以下步骤排查检查服务状态sudo systemctl status docker查看详细日志sudo journalctl -u docker常见原因及解决方案内核模块缺失确保加载了必要的内核模块overlay、aufs等存储驱动问题尝试在/etc/docker/daemon.json中指定不同的存储驱动端口冲突检查是否有其他服务占用了Docker使用的端口默认为2375/23765.2 容器网络连接问题容器无法访问外部网络或主机无法访问容器服务检查Docker网络配置docker network ls docker network inspect 网络名验证防火墙设置sudo iptables -L解决方案确保防火墙允许Docker流量检查容器是否连接到正确的网络验证端口映射是否正确5.3 镜像拉取速度慢或失败检查当前配置的镜像源docker info | grep -i mirror尝试更换镜像源如前文所述配置镜像加速器对于特定镜像可以尝试直接从国内镜像站拉取docker pull registry.cn-hangzhou.aliyuncs.com/library/镜像名5.4 容器内时间不正确如果容器内的时间与主机不一致检查主机时间date运行容器时同步主机时间docker run -it --rm --privileged 镜像名或者在Dockerfile中添加ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone5.5 容器存储空间不足检查Docker存储使用情况docker system df清理无用资源如前文所述扩展存储空间如果使用devicemapper存储驱动可能需要调整存储池大小考虑迁移到overlay2存储驱动6. Docker进阶配置与使用技巧6.1 使用Docker Compose管理多容器应用Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。安装方法sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose创建一个简单的docker-compose.yml文件示例version: 3 services: web: image: nginx:alpine ports: - 8080:80 db: image: postgres:13 environment: POSTGRES_PASSWORD: example启动服务docker-compose up -d6.2 构建自定义镜像通过Dockerfile创建自定义镜像FROM ubuntu:20.04 RUN apt-get update apt-get install -y python3 COPY app.py /app/ WORKDIR /app CMD [python3, app.py]构建镜像docker build -t my-app .6.3 容器健康检查在Dockerfile中添加健康检查HEALTHCHECK --interval30s --timeout3s \ CMD curl -f http://localhost/ || exit 1或者在docker-compose.yml中healthcheck: test: [CMD, curl, -f, http://localhost] interval: 30s timeout: 3s retries: 36.4 容器资源监控查看容器资源使用情况docker stats使用cAdvisor进行更详细的监控docker run \ --volume/:/rootfs:ro \ --volume/var/run:/var/run:ro \ --volume/sys:/sys:ro \ --volume/var/lib/docker/:/var/lib/docker:ro \ --volume/dev/disk/:/dev/disk:ro \ --publish8080:8080 \ --detachtrue \ --namecadvisor \ google/cadvisor:latest6.5 容器安全最佳实践不要以root用户运行容器进程docker run -u 1000:1000 镜像名限制容器能力docker run --cap-dropALL --cap-addNET_BIND_SERVICE 镜像名使用只读文件系统docker run --read-only 镜像名定期更新镜像和Docker引擎docker pull 镜像名:最新标签 sudo apt-get upgrade docker-ce
延伸阅读

更多相关文章

2026/10/27 14:12:02

HCIA-Datacom实验指南:IPv4编址与静态路由配置避坑

网络实验这东西,光看教材不动手,跟看菜谱学做菜是一个道理——眼睛会了,手没会。我前后带过几批准备HCIA-Datacom认证的朋友,发现一个特别普遍的现象:静态路由配得飞起,一问掩码和网关的关系就卡壳&#xf…

2026/10/27 14:12:02

ponytail浏览器插件:一键提取网页重点与摘要配置教程

后台被问得最多的问题,最近变成了“ponytail 插件到底怎么用”。其实这个名字本身就挺有意思:ponytail 是马尾辫,我做的这个浏览器插件也干的是“扎头发”的活儿——把网页上散落一地的信息碎片梳拢、扎成一束,让你一眼看到重点&a…

2026/10/27 14:07:00

无人洗车App开发核心技术解析与行业实践

1. 无人洗车App开发行业现状解析 最近两年,汽车后市场服务数字化进程明显加快,其中无人洗车App作为细分领域异军突起。根据我接触过的十几个项目经验来看,这类应用主要解决三类用户痛点:车主排队等待时间过长、传统洗车店营业时间…

2026/10/27 15:08:02

ponytail插件注入机制详解:从原理到实战的轻量级代码增强指南

1. 从“ponytail”这个词说起:它到底指什么第一次看到“ponytail”这个词,绝大多数人脑子里蹦出来的画面是发型——马尾辫。但在插件生态和前端工具链的语境里,ponytail 是一个被反复搜索、却很少有人能一句话讲清楚的东西。热搜词里“插件 p…

2026/10/27 15:08:02

农业技术拆解(10月26日)|棚里高两度,你那棚番茄就卖不上价

十月中旬的一个早上,棚膜内侧全是水珠。掀开草帘进去,番茄叶子背面发亮,手一摸,是一层湿的。 有经验的人这时候心里会咯噔一下。这种天气,灰霉最爱来。果子上一旦起了斑,收果的人看一眼就压价。 可隔壁那…

2026/10/27 15:08:02

JxBrowser 7.19:Swing 嵌入 Chromium 的通信与避坑

简介:JxBrowser 7.19 是面向 Java 桌面应用开发者的嵌入式浏览器组件资源,适合在 Swing、SWT、JavaFX 等界面中集成网页渲染、HTML 交互、登录授权与跨平台浏览能力的项目使用,也可为旧版本升级、兼容性验证和多端部署提供参考。压缩包共 135…

2026/10/27 15:08:02

e2e profile1 实战:从端到端测试原理到落地配置

1. 当“e2e”不再只是三个字母:从热词到落地场景的拆解第一次看到“e2e”这个词,很多人脑子里蹦出来的可能是“端到端”这三个字,然后就没有然后了。但如果你最近在技术社区、产品群或者招聘 JD 里频繁刷到它,尤其是“e2e profile…

2026/10/27 15:08:02

Android 14系统启动与Launcher核心机制解析

1. Android 14系统启动与Launcher核心机制解析作为一名经历过三代Android大版本迭代的移动端开发者,每次系统升级最让我兴奋的就是观察Launcher这个"门面担当"的进化。Android 14的Launcher启动流程在保持核心架构稳定的前提下,引入了多项底层…

2026/10/27 15:02:58

e2e测试实战:从CLI卡顿到用户旅程契约

1. “e2e”不是缩写谜题,而是工程交付的临门一脚 很多人第一次在团队站会上听到“这个需求的 e2e 还没跑通”,下意识以为是某个新出的 CLI 工具名,或是某家公司的内部代号。其实不是。“e2e”三个字母背后没有隐藏什么神秘协议或商业机密&…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑