Docker实战指南:安装、配置与部署
摘要:本文专为CentOS用户打造,详细讲解在CentOS 7/8上安装Docker Engine、配置国内镜像加速器,并附上全门类常用命令详解。最后,我们将通过部署Nginx和MySQL来一场完整的实战演练。
一、 Docker简介与优势
Docker是一种轻量级的容器化技术,它将应用及其依赖打包在一个隔离的容器中,从而实现快速交付、可靠部署和弹性伸缩。
与传统虚拟机相比,Docker容器共享主机操作系统内核,因此更加轻量、快速,资源占用极低。其核心优势在于保证了环境的一致性,彻底解决了"开发环境正常,生产环境异常"的难题。
二、 在CentOS上安装Docker Engine
重要提示 :CentOS 7及更高版本才能稳定运行Docker,且需要启用 centos-extras
仓库。本指南适用于CentOS 7和CentOS 8。
-
卸载旧版本(如果之前安装过):
bash
arduinosudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
安装必要的依赖包和设置仓库:
bash
csharpsudo yum install -y yum-utils # 添加官方的Docker仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装Docker Engine:
bash
luasudo yum install -y docker-ce docker-ce-cli containerd.io
-
启动Docker并设置开机自启:
bash
bashsudo systemctl start docker # 启动Docker服务 sudo systemctl enable docker # 设置开机自动启动
-
验证安装:
bash
arduinosudo docker run hello-world
如果命令成功运行并输出欢迎信息,说明安装成功!
三、 配置镜像加速器(国内用户必做)
默认从Docker Hub拉取镜像速度很慢,配置国内镜像加速器是必不可少的一步。
-
创建并编辑Docker守护进程配置文件:
bash
bashsudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", # 阿里云镜像加速地址 "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] } EOF
建议注册阿里云账号,从容器镜像服务控制台获取专属加速器地址,速度更快。
-
重新加载配置并重启Docker:
bash
bashsudo systemctl daemon-reload # 重载守护进程 sudo systemctl restart docker # 重启Docker服务
-
验证加速器是否生效:
bash
sudo docker info
在输出信息的最下方,如果看到
Registry Mirrors
中包含你配置的地址,说明配置成功。
四、 Docker核心命令大全(通用)
Docker命令本身是跨平台的,以下命令在CentOS上同样适用。
1. 服务管理命令 (CentOS)
bash
bash
sudo systemctl start docker # 启动
sudo systemctl stop docker # 停止
sudo systemctl restart docker # 重启
sudo systemctl status docker # 查看状态
sudo systemctl enable docker # 开机自启
2. 镜像命令
bash
bash
docker images # 列出本地镜像
docker search <image-name> # 搜索镜像
docker pull <image-name>[:tag] # 拉取镜像
docker rmi <image-id/name> # 删除镜像
docker build -t <name> . # 构建镜像
3. 容器命令
bash
bash
# 生命周期
docker run -itd --name <name> <image> # 创建并运行容器(-d后台运行)
docker start/stop/restart <name> # 启动/停止/重启容器
docker rm <name> # 删除已停止的容器
docker rm -f <name> # 强制删除运行中的容器
# 查看与交互
docker ps -a # 查看所有容器
docker logs <name> # 查看日志
docker exec -it <name> /bin/bash # 进入容器
4. 网络与存储命令
bash
bash
# 网络
docker network ls # 列出网络
docker network create <net-name> # 创建网络
# 存储(数据卷)
docker volume ls # 列出数据卷
docker volume create <vol-name> # 创建数据卷
五、 实战:在CentOS上部署Nginx和MySQL
场景:部署一个Nginx提供web服务,并创建一个MySQL容器,两者通过网络互通。
-
创建自定义网络(实现容器间通过容器名通信):
bash
luadocker network create my-app-net
-
部署MySQL(使用数据卷持久化数据):
bash
inidocker run -d --name mysql-server \ --network my-app-net \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_DATABASE=myapp \ -v mysql_data:/var/lib/mysql \ # 数据卷持久化,避免数据丢失 mysql:8.0
-
部署Nginx(挂载本地配置和网页文件):
bash
bash# 在宿主机创建目录和文件 mkdir -p ~/nginx/{html,conf} echo "<h1>Hello from Nginx on CentOS!</h1>" > ~/nginx/html/index.html # 运行Nginx容器 docker run -d --name nginx-web \ --network my-app-net \ -p 80:80 \ -v ~/nginx/html:/usr/share/nginx/html:ro \ # 挂载网页文件,只读 nginx:alpine
-
验证部署:
- Nginx :打开浏览器,访问
http://你的CentOS服务器IP
,应该能看到Hello页面。 - MySQL:进入MySQL容器测试连接。
bash
bashdocker exec -it mysql-server mysql -uroot -pmy-secret-pw # 如果能成功进入MySQL命令行,说明数据库部署成功。
- Nginx :打开浏览器,访问
六、 防火墙配置(CentOS特有重要步骤)
CentOS的防火墙 (firewalld
) 可能会阻止你访问Docker容器映射的端口,你需要放行这些端口。
bash
ini
# 放行80端口(Nginx)
sudo firewall-cmd --permanent --add-port=80/tcp
# 放行3306端口(如果你映射了MySQL端口到主机)
# sudo firewall-cmd --permanent --add-port=3306/tcp
# 重新加载防火墙规则使其生效
sudo firewall-cmd --reload
七、 总结
通过本文,你已经在CentOS系统上成功搭建了Docker环境,配置了加速器,学习了核心命令,并完成了多容器应用的联合部署。CentOS作为企业级服务器的主流操作系统,结合Docker后,其应用部署和管理的效率将得到巨大提升。
下一步 ,可以探索如何编写 Dockerfile
来构建自定义镜像,以及使用 Docker Compose
来编排和管理本文中的多容器应用,这将让你的容器化之旅更加顺畅。
欢迎在评论区交流你在CentOS上使用Docker遇到的问题和经验!