Docker 安装 CentOS(长文解析)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言:为什么选择 Docker 安装 CentOS?
在软件开发和系统管理的领域中,Docker 安装 CentOS 逐渐成为一种高效且灵活的实践。Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。而 CentOS 是一个广泛使用的 Linux 发行版,因其稳定性和安全性,常被用于生产环境。通过 Docker 安装 CentOS,用户可以快速创建一个隔离的 Linux 环境,避免对主机系统造成干扰,同时实现资源高效利用。
想象一下,Docker 就像一个集装箱码头,每个集装箱(容器)装载着不同的货物(应用程序),而 CentOS 是其中一个标准化的集装箱模板(镜像)。通过 Docker,用户可以轻松地“装载”(拉取镜像)、“运输”(运行容器)和“管理”(操作容器)这些集装箱,极大简化了开发和部署流程。
本文将从零开始,逐步讲解如何在 Docker 中安装和管理 CentOS 环境,并提供实际案例和代码示例,帮助读者快速掌握这一技能。
一、Docker 的基础概念与安装
1.1 Docker 的核心组件
- Docker Engine:负责运行容器的底层引擎,包含客户端(docker CLI)、服务端(dockerd)和容器运行时。
- 镜像(Image):容器的模板,例如 CentOS 镜像包含了 CentOS 系统的所有文件和配置。
- 容器(Container):基于镜像运行的实例,可以启动、停止和删除。
- 仓库(Repository):存储镜像的远程服务器,如 Docker Hub。
1.2 在 Linux 系统上安装 Docker
以 Ubuntu 22.04 为例,安装步骤如下:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo docker --version
提示:若使用其他 Linux 发行版(如 CentOS 8),可参考 Docker 官方文档调整命令。
二、拉取并运行 CentOS 容器
2.1 拉取 CentOS 镜像
Docker Hub 中的 CentOS 镜像分为多个版本,例如 centos:7
和 centos:latest
。使用 docker pull
命令下载:
sudo docker pull centos:7
比喻:这就像在淘宝上“下单”一个标准化的集装箱模板,Docker 会自动下载并存储到本地仓库。
2.2 运行第一个 CentOS 容器
使用 docker run
命令启动容器:
sudo docker run -it --name my_centos centos:7 /bin/bash
-it
:分配交互式终端。--name my_centos
:为容器命名,方便后续管理。centos:7
:指定使用的镜像。/bin/bash
:容器启动后执行的命令,这里以 Bash 终端为例。
成功运行后,终端会切换到容器内部的 CentOS 环境,输入 cat /etc/redhat-release
可查看版本信息:
CentOS Linux release 7.9.2009 (Core)
2.3 容器退出与重启
- 退出容器:在容器内执行
exit
命令,或按Ctrl+P+Q
保持容器运行但脱离终端。 - 重启容器:
sudo docker start my_centos # 启动容器 sudo docker attach my_centos # 重新连接终端
三、容器的高级管理技巧
3.1 挂载目录:实现数据持久化
默认情况下,容器停止后数据会丢失。通过 绑定挂载(Bind Mount) 可将主机目录与容器目录关联:
sudo docker run -it -v /host/path:/container/path centos:7
案例:假设在主机创建
/code
目录存放项目文件,启动容器时挂载:
sudo docker run -it -v $(pwd)/code:/app/code --name dev_env centos:7
容器内执行
cd /app/code
后,即可直接访问主机的代码目录,实现数据持久化。
3.2 端口映射:对外暴露服务
若需在容器内运行 Web 服务器(如 Apache),需通过 -p
参数映射端口:
sudo docker run -d -p 8080:80 --name web_server centos:7
3.3 容器日志与删除
- 查看容器日志:
sudo docker logs web_server
- 删除容器:
sudo docker rm web_server
四、Docker 安装 CentOS 的进阶实践
4.1 使用 Dockerfile 自定义镜像
若需预装软件或配置环境,可通过 Dockerfile 创建自定义镜像:
FROM centos:7
RUN yum install -y httpd
CMD ["httpd", "-D", "FOREGROUND"]
构建镜像并运行:
sudo docker build -t my_centos_web .
sudo docker run -d -p 8080:80 my_centos_web
4.2 容器网络管理
默认情况下,Docker 容器通过 bridge
网络通信。可通过 --network
参数自定义网络:
sudo docker network create my_net
sudo docker run -d --network my_net --name db_server centos:7
五、常见问题与解决方案
5.1 容器运行后无法访问
- 可能原因:未正确映射端口或服务未启动。
- 解决方案:
# 检查端口映射 sudo docker port web_server # 进入容器检查服务状态 sudo docker exec -it web_server systemctl status httpd
5.2 镜像空间不足
- 解决方案:清理未使用的镜像和容器:
sudo docker system prune -a --volumes
结论:Docker 安装 CentOS 的价值与展望
通过本文的讲解,读者已掌握了如何利用 Docker 快速构建、管理和扩展 CentOS 环境。Docker 的容器化技术不仅简化了开发流程,还通过资源隔离保障了系统的稳定性。随着云原生技术的普及,Docker 在 DevOps、微服务等领域的作用将更加重要。
未来,建议读者进一步探索 Docker Compose(多容器编排)和 Kubernetes(容器集群管理),以应对更复杂的生产环境需求。掌握 Docker 安装 CentOS 的技能,将成为开发者通往高效协作与自动化运维的关键一步。