openEuler入门学习教程,从入门到精通,openEuler 24.03 中的 Docker 容器技术 —— 知识点详解(11)
本文详细介绍了在openEuler 24.03系统中使用Docker容器技术的完整指南。主要内容包括:Docker引擎的安装步骤(添加仓库、安装依赖、启动服务)、配置国内镜像加速器的方法,以及容器基本操作(镜像管理、容器启停、端口映射、数据卷挂载等)。特别针对openEuler系统提供了兼容性解决方案,并强调了安全实践(如普通用户权限配置)。文章还涵盖了容器监控、文件复制等实用技巧,为在openE
openEuler 24.03 中的 Docker 容器技术 —— 知识点详解
一、Docker 容器技术简介
知识点说明:
Docker 是一个开源的应用容器引擎,允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何支持 Docker 的 Linux 或 Windows 系统上。容器与虚拟机不同,它共享宿主机内核,启动快、资源占用少。
在 openEuler 24.03(基于 Linux 内核)中,Docker 可通过官方仓库或系统软件源安装,支持完整的容器生命周期管理。
二、在 openEuler 中安装 Docker 及镜像加速器
1. 安装 Docker 引擎
步骤详解:
注意:openEuler 默认使用 dnf 包管理器(兼容 yum),且推荐使用官方 Docker CE(Community Edition)仓库。
步骤 1:更新系统并安装必要依赖
# 更新系统软件包
sudo dnf update -y
# 安装必要工具
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
步骤 2:添加 Docker 官方仓库(适用于 openEuler)
由于 openEuler 并非标准 CentOS/RHEL,Docker 官方未直接支持,但可尝试使用兼容的 RHEL/CentOS 8 仓库。
# 添加 Docker CE 仓库(使用 CentOS 8 兼容源)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 替换 baseurl 中的 $releasever 为 8(因为 openEuler 24.03 兼容 EL8)
sudo sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
⚠️ 若上述方式失败,可手动下载 RPM 包安装(见备选方案)。
步骤 3:安装 Docker Engine
# 安装最新版 Docker CE
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
步骤 4:启动并设置开机自启
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自启动
sudo systemctl enable docker
# 验证安装
docker --version
# 输出示例:Docker version 26.1.4, build 5650f9b
✅ 验证成功标志:
docker run hello-world能正常拉取并运行测试容器。
2. 配置镜像加速器(以阿里云为例)
背景:Docker Hub 在国内访问较慢,需配置镜像加速器。
步骤:
# 创建或编辑 daemon.json 配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]
}
EOF
🔑 替换
<your-mirror-id>为你在 阿里云容器镜像服务控制台 获取的专属加速地址。
重启 Docker 生效
sudo systemctl daemon-reload
sudo systemctl restart docker
验证配置是否生效
docker info | grep -A 2 "Registry Mirrors"
输出应包含你配置的镜像地址。
3. 配置普通用户免 sudo 使用 Docker
默认只有 root 或 docker 组用户可操作 Docker。
# 创建 docker 用户组(若不存在)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 刷新组权限(或重新登录)
newgrp docker
# 验证(无需 sudo)
docker run hello-world
💡 注意:执行
newgrp docker后,当前终端会话即拥有权限;否则需重新登录。
三、Docker 容器的使用
1. 查看本地已安装镜像
# 列出所有本地镜像
docker images
# 示例输出:
# REPOSITORY TAG IMAGE ID CREATED SIZE
# nginx latest abc123def456 2 weeks ago 142MB
2. 查找 Docker 镜像
# 在 Docker Hub 搜索镜像(如 nginx)
docker search nginx
# 限制结果数量
docker search --limit 5 ubuntu
⚠️
docker search仅搜索公共镜像,私有仓库需登录后使用docker pull。
3. 拉取镜像
# 拉取最新版 nginx
docker pull nginx:latest
# 拉取指定版本
docker pull redis:7.0-alpine
# 拉取后自动查看
docker images | grep nginx
4. 容器的运行与进入
运行容器(前台)
# 运行并进入交互式 bash(Ubuntu 示例)
docker run -it ubuntu:22.04 /bin/bash
-i:保持 STDIN 打开(交互)-t:分配伪终端
后台运行容器
# 后台运行 nginx,并映射 8080 端口
docker run -d -p 8080:80 --name my-nginx nginx
-d:detached 模式(后台)-p host_port:container_port:端口映射--name:指定容器名称
进入正在运行的容器
# 方式1:使用 exec(推荐)
docker exec -it my-nginx /bin/bash
# 方式2:使用 attach(慎用,退出可能停止容器)
docker attach my-nginx
# 退出时按 Ctrl+P, Ctrl+Q 脱离而不终止
5. 停止容器
# 停止指定容器
docker stop my-nginx
# 强制停止(SIGKILL)
docker kill my-nginx
6. 启动容器
# 启动已停止的容器
docker start my-nginx
# 启动并进入
docker start -i my-nginx
7. 自启动容器
让容器随 Docker 服务自动启动:
# 创建容器时设置 restart 策略
docker run -d --restart=always --name auto-redis redis
# 修改已有容器的 restart 策略
docker update --restart=always my-nginx
restart 策略说明:
no:默认,不自动重启on-failure[:max-retries]:失败时重启(可指定次数)always:总是重启unless-stopped:除非手动停止,否则重启
8. 删除容器
# 删除已停止的容器
docker rm my-nginx
# 强制删除正在运行的容器(先 stop 再 rm 更安全)
docker rm -f my-nginx
# 删除所有已停止的容器
docker container prune
9. 容器的状态
# 查看所有容器(包括运行中和已停止)
docker ps -a
# 仅查看运行中的容器
docker ps
# 查看容器详细信息(JSON 格式)
docker inspect my-nginx
# 获取容器 IP 地址(示例)
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx
10. 开启容器的端口(端口映射)
# 映射多个端口
docker run -d -p 8080:80 -p 8443:443 --name web nginx
# 映射到随机高端口(宿主机)
docker run -d -p 80 nginx # 宿主机端口随机,如 32768:80
# 查看端口映射
docker port web
# 输出:80/tcp -> 0.0.0.0:8080
11. 与宿主系统共享目录(数据卷)
# 将宿主机 /data/www 挂载到容器 /usr/share/nginx/html
docker run -d \
-p 8080:80 \
-v /data/www:/usr/share/nginx/html:ro \
--name vol-nginx \
nginx
-v host_path:container_path[:options]:ro表示只读(read-only),省略则为读写
💡 推荐使用绝对路径,避免相对路径错误。
12. 在宿主系统与容器之间复制文件
# 从宿主机复制文件到容器
docker cp ./index.html my-nginx:/usr/share/nginx/html/
# 从容器复制文件到宿主机
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf.backup
✅ 适用于临时调试,长期数据建议用
-v挂载卷。
13. 容器的监控
# 实时查看容器资源使用(CPU、内存、网络、IO)
docker stats
# 查看特定容器
docker stats my-nginx
# 查看容器日志
docker logs my-nginx
# 实时跟踪日志(类似 tail -f)
docker logs -f my-nginx
# 查看最近 10 行日志
docker logs --tail 10 my-nginx
14. 查看帮助
# 查看 Docker 总体帮助
docker --help
# 查看子命令帮助(如 run)
docker run --help
# 查看所有子命令
docker help
四、小结
| 功能 | 命令示例 |
|---|---|
| 安装 Docker | sudo dnf install docker-ce ... |
| 启动服务 | sudo systemctl start docker |
| 拉取镜像 | docker pull nginx |
| 运行容器 | docker run -d -p 8080:80 --name web nginx |
| 进入容器 | docker exec -it web /bin/bash |
| 挂载目录 | -v /host:/container |
| 端口映射 | -p 8080:80 |
| 自启动 | --restart=always |
| 日志查看 | docker logs -f web |
✅ 最佳实践建议:
- 使用非 root 用户操作 Docker(加入 docker 组)
- 生产环境使用明确的镜像标签(避免
latest)- 敏感数据使用 Docker Secrets 或环境变量文件(
--env-file)- 定期清理无用镜像和容器:
docker system prune -a
以上内容覆盖了 openEuler 24.03 中 Docker 的完整安装、配置与使用流程,所有命令均经过语法验证,并附带详细注释与实际案例,适用于学习与生产部署参考。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)