Linux(Ubuntu)系统安装Docker与Docker Compose完整指南

server/2025/3/22 7:22:42/

本文是为需要在Ubuntu系统部署容器服务的开发者准备的详细教程。我们将分两个主要部分讲解:Docker引擎的标准安装流程和Docker Compose的配置方法。所有操作均在终端执行,建议使用Ubuntu 18.04及以上版本。

一、Docker引擎安装全流程
(总耗时约5-10分钟,需root权限)

1. 系统环境准备
在开始安装前,建议先更新软件源并升级现有软件包:
 

sudo apt-get update       # 刷新软件源索引
sudo apt-get upgrade -y   # 自动升级所有可更新软件包



注意:若系统提示需要重启(如内核升级),建议执行`sudo reboot`重启后再继续

2. 安装必备依赖组件
 

sudo apt-get install -y \ca-certificates \    # SSL证书支持curl \               # 网络传输工具gnupg \             # 加密签名工具lsb-release         # 系统版本信息工具



这些依赖确保后续安装过程的安全性和兼容性

3. 官方脚本自动化安装
推荐使用Docker官方提供的一键安装脚本:
 

curl -fsSL https://test.docker.com -o test-docker.sh  # 下载安装脚本
sh test-docker.sh                                    # 执行安装程序



说明:此脚本会自动完成以下工作:
- 添加Docker官方GPG密钥
- 设置稳定版仓库
- 安装containerd运行时
- 配置docker-ce核心组件
- 创建docker用户组

4. 配置国内镜像加速(关键步骤)
由于默认仓库访问较慢,需配置镜像源加速:
 

sudo vim /etc/docker/daemon.json  # 使用nano编辑器可替换为sudo nano



输入以下内容(建议保留3-4个镜像源):
 


{"registry-mirrors": ["https://docker.m.daocloud.io",    # 道克镜像"https://docker.imgdb.de",         # 德国镜像"https://docker-0.unsee.tech",     # 美国西海岸镜像"https://docker.hlmirror.com"      # 香港镜像]
}保存后按Esc输入:wq退出vim

5. 重启服务使配置生效
 

sudo systemctl daemon-reload     # 重载服务配置
sudo systemctl restart docker    # 重启docker服务
sudo systemctl enable docker     # 设置开机自启(可选)


验证服务状态:

`systemctl status docker`应显示active(running)

6. 功能验证测试
执行基础镜像拉取测试:
 

sudo docker pull hello-world    # 下载测试镜像
sudo docker run hello-world     # 运行测试容器

成功输出"Hello from Docker!"即表示安装成功

二、Docker Compose安装指南
(Docker官方推荐使用插件形式安装)

1. 执行安装命令
 

sudo apt install -y docker-compose-plugin  # 安装官方插件版



该版本相较于传统的docker-compose有以下优势:
- 直接集成到docker CLI
- 版本与Docker Engine同步更新
- 兼容compose v2语法

2. 验证安装结果
 

docker compose version  # 注意中间没有短横线


预期输出示例:
Docker Compose version v2.17.2

三、进阶配置建议

1. 非root用户权限配置(可选)
为避免每次使用sudo,可将当前用户加入docker组:
 

sudo usermod -aG docker $USER   # $USER替换为具体用户名
newgrp docker                   # 刷新用户组



注意:修改后需要重新登录生效

2. 常用维护命令
- 查看docker版本:`docker version`
- 查看系统信息:`docker info`
- 清理无用镜像:`docker system prune`

四、常见问题排查

Q1:镜像拉取速度慢
A:检查daemon.json配置格式,建议注释掉部分镜像源测试

Q2:权限拒绝错误
A:执行`sudo chmod 777 /var/run/docker.sock`临时解决,建议使用用户组方案

Q3:脚本安装失败
A:可尝试官方备用方案:
 

sudo apt-get install docker-ce docker-ce-cli containerd.io


 

五、版本兼容说明
- Docker 23.x+ 已内置Compose插件
- 旧版Compose文件需注意volume语法差异
- 建议定期执行`sudo apt-get upgrade docker-*`保持更新

六、安全建议
1. 定期清理无用镜像:`docker image prune`
2. 避免使用--privileged特权模式
3. 生产环境建议配置TLS证书加密

通过本教程,您已完成Docker环境的完整部署。接下来可以:
- 尝试部署Nginx:`docker run -d -p 80:80 nginx`
- 学习Dockerfile编写
- 使用docker-compose编排多容器应用


http://www.ppmy.cn/server/176986.html

相关文章

浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例

目录 1. 环境准备 1.1 MySQL配置 1.2 部署Canal Server 2. Spring Boot项目配置 2.1 添加依赖 2.2 配置参数 3. 实现Canal监听与同步 3.1 Canal客户端监听 3.2 同步到Redis 3.3 同步到Elasticsearch 4. 注意事项 在Spring Boot中通过Canal监听MySQL数据库变更并同步…

数据结构-----队列

顺序队列(Queue) 一、队列核心概念 1. 基本特性 先进先出(FIFO):最早入队的元素最先出队操作限制: 队尾(Rear):唯一允许插入的位置队头(Front)&…

第四周日志-用网络请求理解bp(2)

python网络请求库实现数据抓取、API调用还是后端服务的交互 以urllib3库为例 请求: import urllib3 http urllib3.PoolManager() # 创建连接池管理对象url1"" r1 http.request(GET,url1) #request print(r1.status) request&…

鸿蒙NEXT项目实战-百得知识库05

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

neo4j-如何让外部设备访问wsl中的neo4j

WSL 运行在一个虚拟网络环境中,它的 IP 只能被宿主 Windows 访问,外部设备无法直接访问 WSL 的端口。你需要在 Windows 上转发端口,让外部设备可以访问 Windows 并映射到 WSL。 1. 获取 WSL 的 IP 地址 在 WSL 中运行以下命令获取其 IP 地址…

Doris性能优化建议

1、jdbc连接中添加参数rewriteBatchedStatementstrue,将 JDBC 单条插入优化为批量操作 2、将单条插入攒成批后再插入,可先使用redis的zset存储,,每3秒后取出写入表中,写入失败再写回redis的zset 3、fe.conf中添加 按照机器可用内存的10/7赋…

第二天 流程控制(if/for/while) - 列表/元组/字典操作

前言 在IT运维和系统管理领域,资源监控是至关重要的基础技能。本教程将带领Python初学者,通过编写一个实用的系统资源监控脚本,掌握Python基础语法中的流程控制、数据结构操作等核心知识。即使您完全没有编程经验,只要跟着本文一…

Go 1.24.1 编译错误:`can‘t find export data (bufio: buffer full)` 的解决之旅

一、前言 最近在用 Go 1.24.1 开发时,我遇到了一个让人头疼的编译错误。错误信息如下: # internal/runtime/math C:\Program Files\Go\src\internal\runtime\math\math.go:7:8: could not import internal/goarch (cant find export data (bufio: buff…