作为企业级 Linux 发行版,RHEL 9 提供了稳定可靠的容器运行环境。本文将详细介绍在 RHEL 9 系统上快速部署 Docker 的完整流程,包含从软件源配置到实际应用的各个环节。
提示:本文所有操作均需 root 权限执行,建议先通过
sudo -i切换至 root 用户。
RHEL 9 默认不包含 Docker 官方源,我们需要手动配置阿里云镜像源:
bash复制cat > /etc/yum.repos.d/docker.repo << EOF
[docker]
name = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
gpgcheck = 0
EOF
执行以下命令更新软件缓存:
bash复制dnf makecache
常见问题处理:
搜索可用 Docker 软件包:
bash复制dnf search docker
安装 Docker 社区版核心组件:
bash复制dnf install docker-ce docker-ce-cli containerd.io -y
关键组件说明:
启用并启动 Docker 服务:
bash复制systemctl enable --now docker
验证安装:
bash复制docker version
配置内核参数以支持容器网络:
bash复制echo br_netfilter > /etc/modules-load.d/docker_mod.conf
modprobe br_netfilter
cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
参数说明:
创建或修改 Docker 守护进程配置:
bash复制mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://docker.1ms.run"]
}
EOF
systemctl restart docker
验证加速器配置:
bash复制docker info | grep -A 5 "Registry Mirrors"
bash复制docker search nginx # 搜索镜像
docker pull nginx:1.23 # 拉取指定版本
bash复制docker images # 查看本地镜像
docker rmi nginx:1.23 # 删除镜像
docker save nginx:1.23 > nginx.tar # 导出镜像
docker load < nginx.tar # 导入镜像
bash复制docker history nginx:1.23
bash复制docker run -d --name web nginx:1.23 # 后台运行
docker stop web # 停止容器
docker start web # 启动已停止容器
docker restart web # 重启容器
bash复制docker run -it --rm busybox sh # 临时交互容器
退出方式:
exit: 退出并停止容器Ctrl+P, Ctrl+Q: 退出但保持运行bash复制docker ps # 运行中容器
docker ps -a # 所有容器
docker inspect web # 详细配置
bash复制docker exec web ls /etc/nginx # 非交互式
docker exec -it web bash # 交互式
bash复制docker cp web:/etc/nginx/nginx.conf ./ # 从容器复制文件
docker cp ./index.html web:/usr/share/nginx/html/ # 向容器复制文件
将容器端口映射到主机:
bash复制docker run -d -p 8080:80 --name web nginx:1.23
参数说明:
-p 主机端口:容器端口: 端口映射-P: 自动分配主机端口创建自定义桥接网络:
bash复制docker network create my_net --subnet 172.18.0.0/16
使用自定义网络启动容器:
bash复制docker run -d --network my_net --name web1 nginx:1.23
docker run -it --network my_net --name client busybox
验证网络连通性:
bash复制ping web1 # 在 client 容器中执行
bash复制docker network connect my_net existing_container
bash复制docker run -d --name web nginx:1.23
docker run -it --network container:web busybox
主机目录直接挂载:
bash复制docker run -d -v /host/path:/container/path nginx:1.23
自动创建数据卷:
bash复制docker run -d -v /container/path nginx:1.23
查看数据卷信息:
bash复制docker volume ls
docker inspect <volume_name>
创建专用数据卷容器:
bash复制docker create -v /data --name data_container busybox
其他容器挂载使用:
bash复制docker run --volumes-from data_container nginx:1.23
示例 Dockerfile:
dockerfile复制FROM nginx:1.23
LABEL maintainer="your@email.com"
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
构建命令:
bash复制docker build -t my_nginx .
dockerfile复制FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]
快速启动本地仓库:
bash复制docker run -d -p 5000:5000 --restart=always --name registry registry:2
推送镜像到私有仓库:
bash复制docker tag nginx:1.23 localhost:5000/my_nginx
docker push localhost:5000/my_nginx
Harbor 安装准备:
bash复制wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
tar xvf harbor-offline-installer-v2.5.0.tgz
cd harbor
配置 harbor.yml 后安装:
bash复制./install.sh
内存限制示例:
bash复制docker run -d --memory=512m --memory-swap=1g nginx:1.23
CPU 限制示例:
bash复制docker run -d --cpus=1.5 nginx:1.23
检查日志:
bash复制docker logs <container_id>
进入退出状态容器:
bash复制docker run -it --entrypoint sh <image> -c "exit 1"
docker commit <container_id> debug-image
docker run -it debug-image sh
检查容器网络:
bash复制docker exec <container> ip a
docker exec <container> ping <target>
检查 iptables 规则:
bash复制iptables -L -n -v --line-numbers
检查挂载点:
bash复制docker inspect <container> | grep -A 10 Mounts
验证权限:
bash复制docker exec <container> ls -l /path
通过以上步骤,您可以在 RHEL 9 系统上快速搭建并熟练使用 Docker 容器环境。实际生产部署时,请根据具体业务需求调整配置参数和安全策略。