# Rocky Linux 8实战:从零开始掌握Docker容器技术
如果你正在寻找一份真正适合初学者的Rocky Linux 8 Docker安装指南,那么你来对地方了。不同于那些只给出命令列表的"极简"教程,本文将带你深入理解每个步骤背后的原理,解决实际安装过程中可能遇到的各种问题。无论你是运维新手、学生开发者,还是想搭建本地测试环境的个人用户,这篇保姆级教程都能让你轻松上手。
1. 环境准备与系统配置
在开始安装Docker之前,我们需要确保Rocky Linux 8系统已经做好充分准备。许多安装问题其实都源于前期准备不足,因此这一步骤至关重要。
首先更新系统所有软件包至最新版本:
sudo dnf update -y
Rocky Linux 8默认使用的是AppStream仓库,我们需要确认系统中已经启用了EPEL(Extra Packages for Enterprise Linux)和PowerTools仓库:
sudo dnf install epel-release -y sudo dnf config-manager --set-enabled powertools
安装Docker所需的依赖工具包:
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
为什么需要这些工具包?
- yum-utils:提供yum-config-manager等实用工具
- device-mapper-persistent-data和lvm2:Docker存储驱动所需的设备映射工具
> 提示:Rocky Linux 8源自CentOS,因此大多数CentOS 8的教程也适用于Rocky Linux 8,但要注意版本兼容性。
2. 配置阿里云Docker镜像源
国内用户从官方源下载Docker速度往往较慢,使用国内镜像源可以显著提升下载速度。阿里云提供了稳定快速的Docker CE镜像源。
添加阿里云Docker CE仓库:
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum缓存:
sudo dnf makecache
验证仓库是否添加成功:
sudo dnf repolist | grep docker
你应该能看到类似下面的输出:
docker-ce-stable Docker CE Stable - x86_64
如果遇到"找不到命令"错误,可能是因为系统缺少yum-utils包,返回上一步确保所有依赖都已安装。
3. 安装Docker CE并配置服务
现在我们可以正式安装Docker社区版(CE)了。CE版完全免费且功能足够个人和中小团队使用。
安装最新版Docker CE:
sudo dnf install -y docker-ce docker-ce-cli containerd.io
安装完成后,启动Docker服务并设置为开机自启:
sudo systemctl start docker sudo systemctl enable docker
验证Docker是否安装成功:
sudo docker version
正常输出应包含Client和Server两部分版本信息。如果只看到Client信息而没有Server,说明Docker服务没有正确启动。
常见问题排查:
- 服务启动失败:运行
sudo systemctl status docker查看详细错误信息 - 权限问题:普通用户需要加入docker用户组才能执行docker命令
- 内核兼容性:确保系统内核版本不低于3.10
将当前用户加入docker组(避免每次使用sudo):
sudo usermod -aG docker $USER newgrp docker
4. 运行第一个Docker容器
现在我们来运行一个简单的测试容器,验证Docker是否正常工作。
拉取并运行Hello-World测试镜像:
docker run hello-world
成功运行后,你将看到欢迎信息和一些基本使用说明。
接下来我们尝试一个更实用的例子 - 运行Nginx web服务器:
docker run -d -p 8080:80 --name my-nginx nginx
这个命令做了以下几件事:
-d:后台运行容器-p 8080:80:将主机的8080端口映射到容器的80端口--name my-nginx:为容器指定一个名称nginx:使用的镜像名称
验证Nginx容器是否运行:
docker ps
在浏览器中访问http://你的服务器IP:8080,应该能看到Nginx的欢迎页面。
5. Docker基本操作与管理
掌握一些基本命令对于日常使用Docker至关重要。下面是一些最常用的Docker命令。
镜像管理:
# 搜索镜像 docker search 镜像名称 # 拉取镜像 docker pull 镜像名称:标签 # 列出本地镜像 docker images # 删除镜像 docker rmi 镜像ID
容器管理:
# 列出运行中的容器 docker ps # 列出所有容器(包括停止的) docker ps -a # 停止容器 docker stop 容器名称/ID # 启动已停止的容器 docker start 容器名称/ID # 删除容器 docker rm 容器名称/ID # 进入运行中的容器 docker exec -it 容器名称/ID /bin/bash
日志与监控:
# 查看容器日志 docker logs 容器名称/ID # 查看容器资源使用情况 docker stats # 查看容器详细信息 docker inspect 容器名称/ID
6. 数据持久化与目录挂载
默认情况下,容器内的数据在容器删除后会丢失。为了实现数据持久化,我们可以使用卷(volume)或目录挂载。
创建一个命名卷:
docker volume create my-vol
运行容器并使用该卷:
docker run -d -v my-vol:/app --name my-app nginx
或者直接挂载主机目录:
docker run -d -v /host/path:/container/path --name my-app nginx
验证挂载是否成功:
docker inspect my-app | grep Mounts
7. 容器网络配置
Docker提供了多种网络模式,默认情况下会创建一个桥接网络(bridge)。
列出所有网络:
docker network ls
创建一个自定义网络:
docker network create my-network
运行容器并使用自定义网络:
docker run -d --network my-network --name container1 nginx docker run -d --network my-network --name container2 nginx
现在container1和container2可以通过容器名称互相访问。
8. 常见问题与故障排除
即使按照教程操作,有时也会遇到各种问题。这里列出一些常见问题及解决方法。
问题1:无法从镜像仓库拉取镜像
- 检查网络连接
- 尝试更换镜像源
- 确认防火墙设置
问题2:端口冲突
- 使用
netstat -tulnp检查端口占用 - 更改映射端口,如
-p 8081:80
问题3:存储空间不足
- 清理无用镜像:
docker system prune - 调整Docker存储位置
问题4:容器启动后立即退出
- 检查日志:
docker logs 容器ID - 确保容器内有前台进程运行
问题5:权限被拒绝
- 确认用户是否在docker组
- 尝试使用sudo
- 检查SELinux状态
9. 进阶配置与优化
对于生产环境或性能敏感场景,还需要进行一些额外配置。
配置Docker守护进程:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://your-mirror.mirror.aliyuncs.com"], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } } EOF sudo systemctl restart docker
限制容器资源使用:
docker run -d --memory=512m --cpus=1 --name limited-container nginx
配置日志轮转:
sudo tee /etc/docker/daemon.json <<-'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF sudo systemctl restart docker
10. 实际应用案例
让我们通过一个实际案例来巩固所学知识 - 部署一个WordPress网站。
首先创建自定义网络:
docker network create wordpress-net
启动MySQL容器:
docker run -d --name mysql --network wordpress-net -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress -v mysql-data:/var/lib/mysql mysql:5.7
启动WordPress容器:
docker run -d --name wordpress --network wordpress-net -p 8080:80 -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress wordpress
现在访问http://你的服务器IP:8080就可以开始WordPress的安装流程了。这个例子展示了如何将多个容器连接在一起工作,以及如何使用环境变量配置应用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/271744.html