Docker——1.安装与相关命令

Docker 简介

Docker 是一个开源的容器化平台,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,实现 "一次构建,到处运行"。与传统虚拟机相比,容器共享宿主操作系统内核,启动快、资源占用低,特别适合微服务、持续集成/持续部署(CI/CD)等场景。

Docker CE(Community Edition)是 Docker 的社区免费版本,适合个人开发者、小型团队学习和生产使用。本文将基于 CentOS 7/8 系统,带你一步步完成 Docker CE 的安装,并使用阿里云镜像源与公共镜像加速器解决国内网络问题。

核心概念

  • 镜像(Image):一个只读的模板,包含运行应用所需的文件系统、依赖和配置。镜像采用分层结构,每一层代表一次变更,支持复用和增量更新。
  • 容器(Container):镜像的运行实例,是一个轻量级、隔离的执行环境。容器拥有独立的进程空间、网络接口和文件系统,可快速启停。
  • Dockerfile :用于构建镜像的文本文件,通过一系列指令(FROMRUNCOPY 等)定义镜像的构建步骤。
  • Registry(仓库) :存放和管理镜像的服务,如 Docker Hub、阿里云容器镜像服务等。用户可通过 pull / push 操作获取或分发镜像。
  • Docker Daemon(dockerd):运行在宿主机的守护进程,负责管理容器、镜像、网络和数据卷。
  • Docker Client(docker CLI):用户与 Docker Daemon 交互的命令行工具,通过 API 发送指令。

Docker 安装

1) 使用 yum 安装 (Installation via yum)

1. 卸载旧版本 Docker(如有)
bash 复制代码
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
2. 安装必要依赖 (Install Required Dependencies)
bash 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加阿里云 Docker CE 源(关键修改点)

⚠️ 将文档中的官方地址替换为阿里云镜像地址,解决网络连接问题:

bash 复制代码
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 验证源是否可用 (Verifying Repository Availability)
bash 复制代码
yum repolist

✅ 正常输出中 docker-ce-stable 的状态应显示具体包数量(如 600+),

而非 0

5. 查看可安装的 Docker 版本 (View Installable Docker Versions)
bash 复制代码
yum list | grep docker-ce

✅ 该命令会列出所有可用的 Docker CE 版本,您可以根据需要选择特定版本安装(如 docker-ce-20.10.0)。

6. 安装 Docker CE (Install Docker CE)
bash 复制代码
yum -y install docker-ce
7. 启动 Docker 并设置开机自启 (Start Docker and Enable Auto-start)
bash 复制代码
systemctl start docker
systemctl enable docker
8. 验证安装结果 (Verifying Installation)
bash 复制代码
docker version
docker --version

✅ 若同时显示 Client 和 Server 版本信息,则安装成功。

9. 添加加速器(建议使用方法 2)
方式 1:使用阿里云镜像加速器

阿里云-计算,为了无法计算的价值

注册阿里云 → 搜索容器镜像服务 → 右侧菜单栏选择镜像工具 → 通过阿里云操作文档进行操作。

bash 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<你的专属ID>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

注意: 阿里云加速器为个人免费专属,存在以下硬性限制:

  • 它对 "阿里云产品 + 公网访问" 组合生效,仅加速特定范围内的镜像。适合阿里云 ECS 环境,内网/同地域速度最优。
  • 若你使用的是本地虚拟机、自建机房或其他云环境(如主机名显示为 localhost,且上一步连接官方源被建议更换为阿里云源),该地址可能不生效或加速效果有限,尤其是在拉取 Docker Hub 上的公共镜像时。
  • 阿里云官方公告说明:因运营商网络问题,拉取 Docker Hub 镜像仍可能变慢。
方式 2:使用公共镜像加速器(建议使用)
bash 复制代码
cat > /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub.rat.dev",
    "https://docker.1ms.run",
    "https://docker.1panel.live",
    "https://docker.hpcloud.cloud",
    "https://docker.nju.edu.cn"
  ]
}
EOF

校验 + 重载 + 重启 + 确认:

bash 复制代码
python -m json.tool /etc/docker/daemon.json >/dev/null && echo "JSON OK" || echo "JSON 错,查逗号/引号"
systemctl daemon-reload
systemctl restart docker
docker info | grep -A 8 "Registry Mirrors"

验证: 拉取测试镜像,确认加速器生效。

bash 复制代码
docker pull nginx:alpine
docker images | grep nginx

2) 使用第三方工具安装

由于网络限制,可借助第三方工具 "轩辕镜像" 实现一键安装 Docker(付费,但包含了一键安装及镜像加速器)。

轩辕镜像官方网站:https://www.xuanyuan.dev/

Docker 核心命令

核心命令,结合了企业级最佳实践进行了扩展,按照镜像管理、容器生命周期、运维排查、资源限制、网络存储、Dockerfile构建、Docker Compose编排等维度进行了分类。

1. 镜像管理 (Image Management)

镜像是容器的模板,企业级操作中强调版本锁定镜像瘦身

命令 说明 扩展/最佳实践
docker pull <镜像名>:<标签> 拉取镜像 必加标签 :严禁使用 latest,应指定版本如 nginx:1.27-alpine 以确保环境一致性。
docker images 查看本地镜像列表 可配合 grep 过滤,如 `docker images
docker rmi <镜像ID/名称> 删除镜像 若有容器正在使用该镜像,需先删除容器或加 -f 强制删除。
docker tag <源镜像> <目标镜像> 镜像打标 用于私有仓库推送,格式:IP:端口/项目/镜像:版本
docker save -o <文件名.tar> <镜像> 镜像备份/迁移 将镜像保存为 tar 包,用于离线环境部署。
docker load -i <文件名.tar> 镜像恢复/导入 从 tar 包加载镜像,保留所有层信息(推荐)。
docker image prune -a 清理悬空镜像 删除未被任何容器引用的镜像,释放磁盘空间。

2. 容器生命周期管理 (Container Lifecycle)

管理容器的运行状态,核心在于守护式运行自动重启策略

命令 说明 扩展/最佳实践
docker run [选项] <镜像> 创建并启动容器 最核心命令,详见下方参数详解。
docker ps 查看运行中的容器 -a 查看所有(含已停止);加 -q 仅显示容器ID。
docker stop <容器名/ID> 停止容器 发送 SIGTERM 信号,允许优雅退出。
docker start <容器名/ID> 启动已停止的容器 用于重启非运行状态的容器。
docker restart <容器名/ID> 重启容器 相当于 stop + start。
docker rm <容器名/ID> 删除容器 -f 可强制删除运行中的容器;加 -v 同时删除关联卷。
docker container prune 批量清理 一键删除所有已停止的容器,运维常用。

docker run 核心参数扩展:

  • -d: 后台运行(生产环境必加)。
  • --name: 指定容器名称,方便记忆。
  • -p <宿主机端口>:<容器端口>: 端口映射。
  • -v <宿主机目录>:<容器目录>: 数据卷挂载(持久化)。
  • --restart=always: 企业级必配,保证容器随 Docker 服务自启或异常退出后自动重启。
  • -e KEY=VALUE: 设置环境变量。
  • --network: 指定网络模式。

3. 运维排查与日志 (Ops & Troubleshooting)

当服务出现问题时,快速定位是运维的基本功。

命令 说明 扩展/最佳实践
docker logs <容器名> 查看日志 -f 实时跟踪(类似 tail -f);加 --tail 100 只看最后100行。
docker exec -it <容器名> <命令> 进入容器/执行命令 生产推荐 :在运行容器中开启新进程。如 docker exec -it nginx sh
docker attach <容器名> 连接主进程 慎用:退出时可能导致容器主进程退出(容器停止)。
docker inspect <容器名> 查看详细信息 查看 IP、挂载点、配置详情。配合 grep 使用,如 grep IPAddress
docker stats 实时资源监控 查看所有容器的 CPU、内存、网络 I/O 实时占用。
docker top <容器名> 查看进程 查看容器内部运行的具体进程列表。
docker cp <容器:路径> <宿主机:路径> 文件拷贝 在容器和宿主机之间复制文件,用于紧急修复配置。

4. 资源限制与管理 (Resource Management)

防止某个容器耗尽宿主机资源,导致"邻居干扰"。

命令 说明 扩展/最佳实践
docker update 动态更新配置 可动态修改运行中容器的重启策略或资源限制。
--memory-m 内存限制 -m 512m。防止内存泄漏吃光宿主机内存。
--cpuset-cpus CPU 核绑定 0,1,限制容器只能使用特定的 CPU 核心。
--cpu-shares CPU 权重 默认 1024。仅在 CPU 争抢时生效,按比例分配时间片。
--device-read-bps 磁盘读限速 限制设备读取速度,如 /dev/sda:1mb
--device-write-bps 磁盘写限速 限制设备写入速度,防止 I/O 阻塞。

5. 网络与存储 (Network & Storage)

解决容器间通信和数据持久化问题。

命令 说明 扩展/最佳实践
docker network create <网络名> 创建自定义网络 推荐创建 bridge 网络,实现容器间通过名称互访。
docker network ls 查看网络列表 查看 bridge, host, none 等模式。
docker network inspect <网络名> 查看网络详情 查看网段、连接的容器等信息。
docker volume create <卷名> 创建数据卷 管理 Docker 管理的卷,比直接挂载目录更易于备份迁移。
docker volume ls 查看数据卷列表
docker volume prune 清理无用卷 删除未被容器使用的卷。

6. Dockerfile 构建 (Image Building)

文档中详细列出了 Dockerfile 的关键字,这是构建自定义镜像的基础。

核心指令速查:

  • FROM: 指定基础镜像(必须是第一行,推荐 Alpine 或 Slim 版)。
  • LABEL: 维护者信息(替代已废弃的 MAINTAINER)。
  • COPY / ADD: 复制文件。推荐用 COPYADD 仅在需要自动解压 tar 包或下载 URL 时使用。
  • RUN: 构建时执行命令。建议合并多条命令(用 &&)以减少镜像层数。
  • WORKDIR: 指定工作目录。
  • EXPOSE: 声明端口(文档说明,不自动映射)。
  • ENV: 设置环境变量。
  • ENTRYPOINT / CMD: 启动命令。ENTRYPOINT 适合做主程序,CMD 适合做默认参数。
  • HEALTHCHECK: 企业级必加,配置健康检查,让编排工具感知容器状态。
  • USER: 切换用户,避免使用 root 运行应用。

构建命令:

  • docker build -t <镜像名:版本> .: 构建镜像(注意点代表当前目录)。

7. Docker Compose 编排 (Orchestration)

用于定义和运行多容器应用(如 LNMP、Zabbix)。

命令 说明 扩展/最佳实践
docker-compose up -d 启动所有服务 docker-compose.yml 所在目录执行,-d 表示后台运行。
docker-compose down 停止并删除 停止容器并移除网络,加 -v 可同时删除卷。
docker-compose ps 查看服务状态 查看编排文件中定义的所有容器状态。
docker-compose logs -f 查看聚合日志 实时查看所有服务的日志输出。
docker-compose restart 重启服务 重启编排文件中的所有容器。
docker-compose restart 重启服务 重启编排文件中的所有容器。

8. 私有仓库与系统管理 (Registry & System)

  • 私有仓库交互:
    • docker login <仓库地址>: 登录私有仓库。
    • docker logout: 登出。
    • 配置信任 :修改 /etc/docker/daemon.json 添加 insecure-registries 以支持 HTTP 私有仓库。
  • 系统级命令:
    • docker info: 查看 Docker 系统详细信息(存储驱动、容器数量等)。
    • docker version: 查看版本。
    • systemctl restart docker: 修改 daemon.json 后必须重启服务生效。
相关推荐
数智化管理手记2 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
technology_x2 小时前
2026年财务报表分析软件测评:兼容与安全解析
java·服务器·前端
大鱼>2 小时前
eBPF内核编程:从TC到XDP的全栈可观测性
linux·服务器·php
Shell运维手记3 小时前
ARP 协议超详细讲解(适合网工考试 / 运维理解)
运维·网络·网络协议·智能路由器
西安景驰电子3 小时前
PCIe 授时卡原理及应用
运维·服务器·windows·单片机·嵌入式硬件·fpga开发
程序喵大人3 小时前
【C++进阶】STL容器与迭代器 - 05 map 和 set 为什么按键保持有序
开发语言·c++·容器·迭代器·stl
huainingning4 小时前
华三瘦AP切换为胖AP并配置无线功能
运维·网络·网络协议·tcp/ip
xywww1685 小时前
开发团队接入 Opus 5 / Sonnet 5:模型路由、升级阈值和成本账怎么算
服务器·网络·p2p
爱写代码的森5 小时前
鸿蒙三方库 | harmony-utils之EncryptUtil URL编解码详解
服务器·华为·harmonyos·鸿蒙·huawei
外滩运维专家5 小时前
十几台服务器要改配置,别再一台台 SSH 了
运维