docker - 1 安装
一 docker 应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
IaaS:(Infrastructure-as-a-Service)(基础设施即服务)
PaaS:(PlatformasaService)(平台即服务)
SaaS:(Software-as-a-Service)(软件即服务)
二 Docker核心概念
Docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统中)
Docker客户端(Client):连接Docker主机进行操作;
Docker容器(Container):镜像启动后的实例,独立运行的一个或一组应用;
Docker镜像(Image):打包好的软件,用于创建Docker容器的模板;
Docker仓库(Respository):用于保存打包好的软件镜像;
关系示意图:


| 概念 | 说明 |
|---|---|
| Docker 镜像 (Images) | Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
| Docker 容器 (Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
| Docker 客户端 (Client) | Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。 |
| Docker 主机 (Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
| Docker 仓库 (Registry) | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub (https://hub.docker.com) 提供了庞大的镜像集合供使用。 |
| Docker Machine | Docker Machine 是一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装 Docker,比如 VirtualBox、Digital Ocean、Microsoft Azure。 |
三 Docker的安装
Docker版本要求
1、要求 CentOs 系统的内核版本高于 3.10,可通过如下指令查看版本
uname -r
https://docs.docker.com/engine/install/centos/
更新yum
安装 docker ce 即社区免费版,先安装必要的软件包,安装 yum-utils,它提供一个 yum-config-manager 单元,同时安装的 device-mapper-persistent-data 和 lvm2 用于储存设备映射(devicemapper)必须的两个软件包。
sudo yum update
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
由于 CentOS 7 官方仓库已停止维护,建议替换为阿里云镜像:
# 下载阿里云CentOS 7镜像配置 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

紧接着配置一个稳定(stable)的仓库,仓库配置会保存到 /etc/yum.repos.d/docker-ce.repo 文件中。此处我们使用阿里云。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 安装的相关 Docker 软件包
sudo yum makecache fast#会出错
查看仓库版本,并指定版本安装
查看版本
yum list docker-ce --showduplicates | sort -r

安装
# yum install docker-ce # 只会安装 核心组件(docker-ce 本体 + 依赖的 docker-ce-cli、containerd.io)
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
卸载:
yum list installed | grep docker
yum remove 移除需要卸载的组件
安装完毕后,检查docker info
dokcer info
下面是遇到的错误:
[root@node01 ~]# docker info
Client: Docker Engine - Community
Version: 26.1.4
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.27.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info
Docker 客户端无法连接到 Docker 守护进程(daemon),通常是因为 Docker 服务未启动
启动 Docker 服务
sudo systemctl start docker

设置 Docker 开机自启(可选)
sudo systemctl enable docker
检查 Docker 服务状态
sudo systemctl status docker
配置 Docker Hub 到国内镜像
docker pull busybox
失败了,
docker pull nginx Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)配置镜像:
先查看 ls /etc/docker/daemon.json
1. 准备工作:确认 Docker 服务状态
先停止 Docker 服务(避免配置过程中服务占用文件):
# 1. 停止 Docker 主服务和自动激活组件(避免服务自动重启) sudo systemctl stop docker docker.socket # 2. 确认服务已停止(显示 inactive (dead)) sudo systemctl status docker2. 创建并编写
daemon.json(关键:格式绝对正确)Docker 对
daemon.json的 JSON 格式要求极严格(无多余逗号、英文半角符号、键值对闭合),推荐用以下方式创建,避免手动编辑失误:# 1. 确保 /etc/docker 目录存在(默认已存在,防止意外删除) sudo mkdir -p /etc/docker # 2. 用 echo 或 tee 直接写入配置(以“轩辕镜像加速”为例,可替换为其他源) sudo echo '{ "registry-mirrors": ["https://docker.xuanyuan.me"] }' > /etc/docker/daemon.json # 3. 验证文件内容(确保无格式错误) cat /etc/docker/daemon.json
正确内容示例(必须完全一致):
{ "registry-mirrors": ["https://docker.xuanyuan.me","https://docker.1ms.run"] }常见错误规避:
- 不写多余逗号(如
["xxx.com",]错误);- 不用中文符号(中文引号、逗号会导致解析失败);
- 键名
registry-mirrors必须带双引号。3. 适配 SELinux 安全策略(CentOS 7 必做)
CentOS 7 默认开启 SELinux,即使
daemon.json权限为rw-r--r--,SELinux 仍可能阻止 Docker 读取文件,需通过以下操作适配:# 1. 临时关闭 SELinux(快速绕过权限拦截,立即生效,重启后恢复) sudo setenforce 0 # 验证 SELinux 状态(显示 Permissive 即成功) getenforce # 2. (可选,永久方案)为文件添加 SELinux 标签(避免重启后失效) # 先安装 SELinux 管理工具(若未安装) sudo yum install -y policycoreutils-python # 为 daemon.json 添加允许 Docker 读取的标签 sudo semanage fcontext -a -t container_runtime_t "/etc/docker/daemon.json" # 应用标签(立即生效) sudo restorecon -v /etc/docker/daemon.json # 3. 验证 SELinux 标签(显示 container_runtime_t 即正确) ls -Z /etc/docker/daemon.json4. 强制 Docker 加载配置(关键:确保配置不被忽略)
部分场景下 Docker 可能未自动读取
daemon.json,需通过修改 Docker 服务启动参数强制加载配置:# 1. 编辑 Docker 服务的 systemd 配置文件 sudo vi /usr/lib/systemd/system/docker.service # 2. 找到 ExecStart 行,末尾添加 --config-file /etc/docker/daemon.json # 修改前:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock # 修改后: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --config-file /etc/docker/daemon.json # 3. 保存退出:按 ESC → 输入 :wq → 回车5. 重启 Docker 服务并验证配置
# 1. 重新加载 systemd 配置(让修改的服务参数生效) sudo systemctl daemon-reload # 2. 启动 Docker 服务 sudo systemctl start docker # 3. 确认服务正常启动(显示 active (running),无红色报错) sudo systemctl status docker # 4. 验证配置是否生效(核心:看到加速地址即成功) docker info | grep "Registry Mirrors"
- 生效标志:输出类似
Registry Mirrors: https://docker.xuanyuan.me/(换行显示地址是正常格式,无需纠结)。6. 测试:拉取镜像验证加速
配置生效后,拉取镜像会自动走加速源,无超时错误:
# 拉取 nginx 镜像(小镜像,测试速度快) docker pull nginx
- 成功标志:显示镜像分层下载进度(如
Downloading [=======>...............]),最终提示Status: Downloaded newer image for nginx:latest。常见问题排查
- 配置不生效(Registry Mirrors 为空):
检查daemon.json格式(用cat确认)→ 确认 SELinux 已临时关闭或标签正确 → 检查 Docker 服务启动参数是否添加--config-file。- Docker 服务启动失败:
用journalctl -u docker -n 30查看日志,若提示 “invalid character”,说明daemon.json格式错误,重新创建文件。- 拉取镜像仍超时:
换用更稳定的加速源(如网易云https://hub-mirror.c.163.com),重复步骤 2 和 5。
下载VMware
链接: https://pan.baidu.com/s/1jfRhik_EwblE9I6hwqVhgw?pwd=1234 提取码: 1234

浙公网安备 33010602011771号