docker安装部署学习
- 什么是 Docker?
- 如何理解 Docker?
- 1. 容器化技术 vs. 传统虚拟机
- 2. Docker 的核心概念
- 3. Docker 的四大优势
- Docker 的应用场景
- 安装 Docker 引擎
- 1. 卸载旧版本(确保环境干净)
- 2. 安装依赖工具
- 3. 添加 Docker 官方仓库
- 4. 安装 Docker 核心组件
- 5. 启动 Docker 服务
- 6. 验证安装
- 配置阿里云镜像加速器
- 1. 注册阿里云账号(已有账号可跳过)
- 2. 获取专属加速器地址
- 3. 配置 Docker 镜像加速
- 4. 验证加速器是否生效
- Docker 镜像加速器 vs. 阿里云 yum 仓库源的区别
- 1. 解决的问题不同
- 2. 配置方式不同
- (1) 阿里云 yum 仓库源
- (2) Docker 镜像加速器
- 3. 实际效果对比
- 4. 为何需要同时配置?
- Docker 基础使用示例
什么是 Docker?
Docker 是一种开源的容器化平台,用于将应用程序及其依赖打包成轻量级、可移植的容器,容器是一种标准化的软件单元,可以在任何支持 Docker 的环境中快速部署和运行,简单来说,Docker 解决了开发、测试和部署过程中 “环境不一致” 的难题
如何理解 Docker?
1. 容器化技术 vs. 传统虚拟机
-
传统虚拟机:通过虚拟化硬件(如 VMware、VirtualBox)模拟完整的操作系统,每个虚拟机需要独立的操作系统内核、库和应用程序,缺点:资源占用大、启动慢、性能损耗高
-
Docker 容器:共享主机操作系统内核,仅打包应用程序及其依赖(如代码、运行时、系统工具),优点:轻量(MB级)、秒级启动、性能接近原生
类比理解:
-
虚拟机像是一栋完整的房子(包含地基、水电、家具)
-
Docker 容器像是一个标准化的集装箱(仅装所需物品,直接放在货轮上运输)
2. Docker 的核心概念
- 镜像(Image):只读的模板,包含应用程序运行所需的一切(代码、环境、配置),例如:一个 Ubuntu 镜像 + Python 环境 + 你的代码 = 一个定制镜像
- 容器(Container):镜像的运行实例,每个容器是隔离的沙箱环境,互不干扰,例如:用同一个镜像启动 3 个容器,每个容器运行独立的服务
- 仓库(Registry):存储和分享镜像的平台,最常用的是 Docker Hub(类似 GitHub 的镜像托管平台)
- Dockerfile:文本文件,定义如何构建镜像(例如安装依赖、复制文件、设置启动命令)
3. Docker 的四大优势
- 环境一致性:“开发环境能跑,生产环境报错?” Docker 确保环境完全一致
- 快速部署:镜像秒级启动,无需手动配置环境
- 资源高效:多个容器共享主机资源,节省内存和 CPU
- 隔离性:每个容器独立运行,避免依赖冲突(例如 Python 2 和 Python 3 共存)
Docker 的应用场景
- 开发环境搭建:无需在本地安装 MySQL、Redis,直接启动容器
- 持续集成(CI/CD):自动化测试和部署时,用 Docker 保证环境一致
- 微服务架构:每个微服务独立打包成容器,灵活扩展
- 快速部署开源工具:例如一键部署 WordPress、Jenkins、Elasticsearch
Docker 的核心价值是:一次构建,处处运行,它通过容器化技术将应用程序与环境解耦,解决了开发到部署的“最后一公里”问题
安装 Docker 引擎
1. 卸载旧版本(确保环境干净)
yum remove -y docker* containerd.io
rm -rf /var/lib/docker
2. 安装依赖工具
yum install -y yum-utils device-mapper-persistent-data lvm2
(我的已经是最新)
3. 添加 Docker 官方仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
若出现如下输出:
可使用阿里云镜像源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装 Docker 核心组件
yum install -y docker-ce docker-ce-cli containerd.io
5. 启动 Docker 服务
systemctl start docker
systemctl enable docker
6. 验证安装
docker --version
配置阿里云镜像加速器
1. 注册阿里云账号(已有账号可跳过)
访问 阿里云官网 注册账号
2. 获取专属加速器地址
- 登录阿里云控制台
- 搜索进入 容器镜像服务 → 镜像工具 → 镜像加速器
- 复制你的专属加速器地址(格式如 https://xxxxxx.mirror.aliyuncs.com)
3. 配置 Docker 镜像加速
sudo mkdir -p /etc/docker# 写入阿里云加速器配置(替换成你的实际地址)
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF# 重启 Docker 生效
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 验证加速器是否生效
docker info | grep "Registry Mirrors" -A1
如果显示阿里云镜像地址,说明配置成功
Docker 镜像加速器 vs. 阿里云 yum 仓库源的区别
1. 解决的问题不同
场景 | 阿里云 yum 仓库源 | Docker 镜像加速器 |
---|---|---|
作用对象 | Docker 软件的安装包(如 docker-ce) | Docker 运行时拉取的镜像(如 nginx) |
核心目的 | 加速 Docker 软件本身的下载和安装 | 加速 Docker 镜像的下载(如 docker pull) |
类比理解 | 更换软件商店的地址(从国外搬到国内) | 给软件商店里的商品(镜像)添加国内 CDN |
2. 配置方式不同
(1) 阿里云 yum 仓库源
- 作用:告诉系统“从阿里云下载 Docker 安装包”
- 操作示例:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 配置文件位置:/etc/yum.repos.d/docker-ce.repo
- 验证:
yum list docker-ce # 查看是否能列出阿里云的 Docker 包
(2) Docker 镜像加速器
- 作用:告诉 Docker 引擎“从阿里云拉取镜像”
- 操作:编辑 Docker 配置文件 /etc/docker/daemon.json
3. 实际效果对比
场景 | 未配置阿里云 yum 仓库源 | 未配置 Docker 镜像加速器 |
---|---|---|
安装 Docker 软件 | 从 Docker 官方源下载,速度可能慢 | 不影响(软件安装已完成) |
拉取 Docker 镜像 | 不影响(镜像加速器已配置) | 从 Docker Hub 下载,速度可能慢 |
4. 为何需要同时配置?
- 分阶段优化:
- 安装阶段:用阿里云 yum 仓库源快速安装 Docker 软件
- 运行时阶段:用镜像加速器快速拉取 Docker 镜像
- 互补关系:两者优化的是 Docker 不同阶段的操作
常见问题解答
Q1:只配置镜像加速器,不配置阿里云 yum 仓库源会怎样?
- 安装 Docker 时可能从国外源下载,速度较慢,但拉取镜像时会走阿里云加速
Q2:两个配置都用阿里云,会有冲突吗?
- 完全不会!两者是独立的配置,分别作用于不同阶段
Docker 基础使用示例
1. 拉取镜像(以 Nginx 为例)
docker pull nginx
如果出现了如下提示:
可能是镜像加速器设置的问题,可以换成如下:
{"registry-mirrors":["https://docker.1ms.run","https://docker.1panel.live/"]
}
再次拉取:
有时会出现docker pull可以正常拉取,但docker search出现异常:
Error response from daemon: Get "https://index.docker.io/v1/search?q=mysql&n=25": dial tcp 75.126.124.162:443: i/o timeout
待解决
TODO 暂未找到合适方案,后续找到后更新
2. 运行容器
# 启动一个 Nginx 容器并映射端口
docker run -d -p 8080:80 --name my-nginx nginx
3. 查看运行中的容器
sudo docker ps
4. 访问测试
浏览器访问 http://<服务器IP>:8080,看到 Nginx 欢迎页即成功
后面文章会继续介绍常见的docker指令用法!