当前位置: 首页 > news >正文

Docker入门指南:CentOS 7 安装与阿里云镜像加速配置

Dokcer是什么

Docker 是一种容器化技术,它能将应用程序及其依赖(如库、配置文件、运行环境等)打包成一个标准化的“容器”,确保应用在任何支持 Docker 的环境中都能以相同方式运行,解决了“开发环境能跑,生产环境跑不起来”的经典问题(服务器系统、配置不同导致的各类打包问题)。

一、Docker 的核心优势:为什么要用 Docker?

  1. 环境一致性
    开发时将应用和依赖打包成容器,测试、生产环境直接使用相同容器,彻底避免“我这能跑”“你那缺个库”的问题。比如 Java 应用依赖 JDK 11,容器里会固定包含这个版本,不会因服务器上的 JDK 版本不同而报错。

  2. 轻量级与高效
    容器不像虚拟机(VM)需要模拟完整操作系统,而是共享宿主机的内核,启动速度快(秒级),占用资源少(一个服务器可运行成百上千个容器)。

  3. 隔离性
    每个容器是独立的“沙箱”,应用运行时的资源(CPU、内存、文件系统)相互隔离,避免互相干扰(如 A 应用不会占用 B 应用的内存)。

  4. 易于扩展与部署
    容器可通过脚本快速复制、启停,配合 Kubernetes(K8s)等工具能实现自动扩缩容(如流量高峰时自动增加容器数量),简化分布式系统的部署流程。

二、Docker 的核心概念:3 个关键组件

  1. 镜像(Image)

    • 是容器的“模板”,包含运行应用所需的代码、依赖、配置等(可理解为“只读的快照”)。
    • 例如 nginx 镜像包含 Nginx 服务器的所有文件,mysql 镜像包含 MySQL 数据库的运行环境。
    • 镜像不能直接运行,需要基于它创建容器。
  2. 容器(Container)

    • 是镜像的“运行实例”,镜像被加载到内存后形成的可执行环境(可读写)。
    • 一个镜像可创建多个容器(如用 mysql 镜像启动 3 个独立的 MySQL 容器,各自有不同的数据)。
    • 容器停止后,数据默认会丢失(除非挂载外部存储)。
  3. 仓库(Repository)

    • 用于存储和分发镜像的平台,类似代码仓库(如 GitHub)。
    • 公共仓库:Docker Hub(官方,包含大量常用镜像,如 nginxopenjdk);
    • 私有仓库:企业内部搭建的仓库(如 Harbor),用于存储私有镜像(如公司自研应用的镜像)。

三、CentOS7 系统安装Docker

  1. 卸载旧版本命令或残留文件

    yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
    
  2. 同步时区

     yum -y install ntpsystemctl enable ntpd --now
    
  3. 安装docker的yum库

     yum install -y yum-utils
    
  4. 安装docker

     #方式1wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#方式2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  5. 替换 Docker 仓库源为阿里云镜像

    sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    
  6. 更新 YUM 缓存

    yum makecache fast
    
  7. 安装 Docker以及相关组件

    yum -y install docker-ce-24.0.2-1.el7 docker-ce-cli-24.0.2-1.el7 containerd.io-1.6.9-3.1.el7
    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  8. 启动 Docker, 设置开机自启动

     sudo systemctl start docker#启动dockersudo systemctl restart docker#重启dockersudo systemctl status docker#查看docker状态sudo systemctl stop docker#停止dockersystemctl enable docker# 开机自启动
    
  9. 查看docker

     docker --version#查看docker版本docker images#查看docker镜像情况
    

四、Docker 在后端开发中的典型应用场景

  1. 开发环境标准化
    团队成员通过相同的 Docker 镜像搭建开发环境,避免因本地配置不同导致的问题(如“数据库版本不一致”“依赖缺失”)。

  2. 微服务部署
    每个微服务(如用户服务、订单服务)打包成独立容器,通过 Docker Compose 编排多个容器(如同时启动服务、数据库、Redis),一键启动整个系统。

  3. CI/CD 流水线集成
    代码提交后,自动构建 Docker 镜像并推送至仓库,再由部署工具拉取镜像并更新容器,实现“代码提交→自动部署”的全流程自动化。

  4. 隔离测试
    测试时为每个测试用例创建独立容器,测试完成后销毁,避免测试数据污染环境。

五、学习建议(针对后端开发)

  1. 先练基础操作:用 Docker 启动 Nginx、MySQL 等常用服务,熟悉镜像拉取、容器启停、端口映射等基础命令。
  2. 学写 Dockerfile:尝试将自己开发的 Java 应用(如 Spring Boot 项目)打包成镜像,理解如何在镜像中配置 JDK、复制 jar 包、暴露端口。
  3. 结合 Docker Compose:学习用 docker-compose.yml 编排多容器应用(如“Spring Boot 应用 + MySQL + Redis”),实现一键启动整个服务集群。

六、常用Docker命令

# 搜索镜像
docker search 镜像名称# 拉取镜像
docker pull 镜像名称:标签# 查看已下载的镜像
docker images# 运行容器
docker run -d --name 容器名称 -p 主机端口:容器端口 镜像名称# 查看运行中的容器
docker ps# 查看所有容器(包括已停止的)
docker ps -a# 停止容器
docker stop 容器名称或ID# 启动已停止的容器
docker start 容器名称或ID# 删除容器
docker rm 容器名称或ID# 删除镜像
docker rmi 镜像ID

文章转载自:

http://XlNXgAoj.LzLjq.cn
http://Ore8IYfT.LzLjq.cn
http://ZUIdhbzd.LzLjq.cn
http://6UbicHP8.LzLjq.cn
http://H9uKLVPw.LzLjq.cn
http://FuLz4vTR.LzLjq.cn
http://4gAJxVCk.LzLjq.cn
http://v4zSTihW.LzLjq.cn
http://km43XAJu.LzLjq.cn
http://mp1oEHlV.LzLjq.cn
http://bq07foVu.LzLjq.cn
http://vcYRvi4c.LzLjq.cn
http://7TyZBuI7.LzLjq.cn
http://YpjwmVq3.LzLjq.cn
http://k2uedzvA.LzLjq.cn
http://BMU0PsEm.LzLjq.cn
http://28XpHCOi.LzLjq.cn
http://dw5iRXp2.LzLjq.cn
http://POwqiPB8.LzLjq.cn
http://qxKBQnae.LzLjq.cn
http://WT5JPiRN.LzLjq.cn
http://4R1X6L2l.LzLjq.cn
http://YJU67EUI.LzLjq.cn
http://37E2y9zL.LzLjq.cn
http://ITHRop60.LzLjq.cn
http://NEJa75cZ.LzLjq.cn
http://GhKsvwpN.LzLjq.cn
http://uauGFauN.LzLjq.cn
http://vk3WZ0Ib.LzLjq.cn
http://3m3Rl1Lq.LzLjq.cn
http://www.dtcms.com/a/378699.html

相关文章:

  • 【Python自动化】 22 Python os 库详解
  • 智能投影仪技术解析:从显示工具到智慧影音终端的演进
  • 下一代社媒运营工具:亚矩阵云手机集成AIGC与数字人技术引领内容革命
  • 在Excel中删除大量间隔空白行
  • Android Studio Meerkat | 2024.3.1 Gradle Tasks不展示
  • 新版Android Studio能打包但无法run ‘app‘,编译通过后手机中没有安装,顶部一直转圈
  • CSS 伪类选择器
  • 2年1170万!39岁的霍福德,还有多少油?
  • IsaacSim Segmentation
  • CLIP、DALL·E 1的解读
  • Go 语言开发环境安装与 GOPROXY 镜像配置(含依赖管理与版本切换技巧)
  • 麒麟V10 + Docker部署KingbaseES数据库实战教程
  • 比亚迪新版五合一登陆、签到、查询、迁移
  • HOT100--Day22--74. 搜索二维矩阵,34. 在排序数组中查找元素的第一个和最后一个位置,33. 搜索旋转排序数组
  • Sentinel 原理与源码解析:流控、熔断、降级到热点限流的一体化方案
  • 克隆代币 + 捆绑开盘:多链环境下的低成本发币玩法
  • Android 项目:画图白板APP开发(六)——分页展示
  • 阿里云ClickHouse数据保护秘籍:本地备份与恢复详解
  • 数字图像处理——图像金字塔
  • 全球充电标准体系简介
  • Sub-GHz无线收发单片机,低功耗物联网通信的硬件“基石”
  • React18学习笔记(一) 创建React项目,JSX基础应用,案例:视频网站评论区
  • 【实时Linux实战系列】规避缺页中断:mlock/hugetlb 与页面预热
  • 全球汽车高压电加热器市场规模到2031年将达到62.72亿美元,CAGR 25.2%
  • 【展厅多媒体】从技术到体验,AR在展厅中的一体化整合
  • 双指针算法_移动零
  • 数据结构之复杂度
  • 几种常用锁
  • android13修改WiFi扫描二维码识别识别成功率不高的问题
  • params和body传参讲解