容器技术入门与docker环境部署

一、容器技术基础

  1. 容器核心概念

    • 容器:轻量级、可移植的软件单元,将应用与依赖打包为独立运行环境,基于 Linux 内核的 Namespace 和 Cgroups 实现资源隔离。

    • Docker:主流容器引擎,提供镜像构建、容器管理能力,支持跨平台部署18。


二、openEuler 环境准备

系统要求
  • 操作系统:openEuler 20.03/22.03 LTS(推荐)

  • 内核:≥ 3.8,支持存储驱动(如 Device Mapper、Overlay2)3

  • 权限:需 root 用户操作4

安装依赖
复制代码
sudo dnf update
sudo dnf install dnf-utils device-mapper-persistent-data lvm2 fuse-overlayfs wget

三、Docker 安装与配置

步骤 1:添加 Docker 仓库
复制代码
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
步骤 2:安装 Docker
复制代码
sudo dnf install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
步骤 3:验证安装
复制代码
sudo docker run hello-world  # 出现欢迎信息即成功:cite[2]
关键配置
  • 禁用 iptables 冲突 (若遇启动失败)

    编辑 /etc/docker/daemon.json

    复制代码
    { "iptables": false }

    重启服务:sudo systemctl restart docker2

  • 存储驱动优化 (推荐 Overlay2)

    daemon.json 中添加:

    复制代码
    { "storage-driver": "overlay2" }
    ```:cite[4]

四、拉取与运行 openEuler 容器镜像

镜像拉取(国内源加速)
复制代码
docker pull hub.oepkgs.net/openeuler/openeuler:22.03-lts  # 推荐国内源:cite[1]
# 或从华为云获取专用镜像
docker pull swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:22.03-lts:cite[3]
启动容器
复制代码
docker run -itd --name my_openeuler hub.oepkgs.net/openeuler/openeuler:22.03-lts bash
进入容器验证
复制代码
docker exec -it my_openeuler bash
cat /etc/os-release  # 查看 openEuler 系统信息

五、容器管理基本操作

操作 命令示例 用途
查看运行容器 docker ps 列出活跃容器
停止/启动容器 docker stop my_openeuler 停止容器
docker start my_openeuler 启动容器
删除容器 docker rm my_openeuler 移除容器
持久化容器为镜像 docker commit my_openeuler my_custom_image 保存当前容器状态为新镜像6

六、进阶:自定义镜像与编排

  1. 构建自定义镜像

    • 编写 Dockerfile(示例基于 openEuler):

      复制代码
      FROM hub.oepkgs.net/openeuler/openeuler:22.03-lts
      RUN dnf install -y python3 && echo "print('Hello World')" > /app.py
      CMD ["python3", "/app.py"]
    • 构建命令:

      复制代码
      docker build -t my_python_app .
      ```:cite[5]
  2. 容器网络配置

    • 创建 Macvlan 网络(固定容器 IP):

      复制代码
      docker network create -d macvlan --subnet=192.168.1.0/24 -o parent=eth0 my_net
      docker run -itd --network my_net --ip=192.168.1.100 openeuler:22.03-lts
      ```:cite[6]
  3. 容器编排(Docker Compose)

    • 定义多容器服务(示例 docker-compose.yml):

      复制代码
      version: '3'
      services:
        web:
          image: openeuler:22.03-lts
          ports: ["8080:80"]
        db:
          image: mysql:5.7
          environment: MYSQL_ROOT_PASSWORD=123456
    • 启动服务:docker-compose up -d8


七、注意事项与常见问题

  • 权限冲突 :CentOS 宿主机需临时关闭 SELinux(setenforce 0),避免挂载目录权限错误5。

  • 镜像兼容性:若需 openEuler 20.03 镜像,需手动下载离线包并导入5:

    复制代码
    wget https://repo.openeuler.org/openEuler-20.03-LTS-SP2/docker_img/aarch64/openEuler-docker.aarch64.tar.xz
    docker load -i openEuler-docker.aarch64.tar.xz
  • 服务依赖 :重启 firewalld 后需重启 Docker,避免 iptables 规则丢失4。

相关推荐
东风微鸣8 小时前
职场生存指南:如何优雅应对"双面人"同事
docker·云原生·kubernetes·可观察性
●VON9 小时前
重生之我在暑假学习微服务第七天《微服务之服务治理篇》
java·学习·微服务·云原生·nacos·架构·springcloud
云和数据.ChenGuang9 小时前
云计算k8s集群部署配置问题总结
云原生·容器·kubernetes·云计算
阿里云云原生9 小时前
Vibecoding 新体验:实测 Qwen3 Coder 代码生成效果
云原生
斯普信专业组10 小时前
k8s云原生rook-ceph pvc快照与恢复(下)
ceph·云原生·kubernetes
爱吃芝麻汤圆10 小时前
k8s之DevicePlugin
云原生·容器·kubernetes
kaliarch11 小时前
迈向云基础设施自动化 - Terraformer 助力腾讯云资源管理转型
后端·云原生·自动化运维
赵文宇(温玉)13 小时前
1.6万 Star 的流行容器云平台停止开源
云原生·容器·开源·容器云·kubespere
David爱编程13 小时前
K8s 的工作机制原理:控制器如何“自动修复”
云原生·容器·kubernetes
David爱编程14 小时前
Kubernetes 中 StorageClass 高级用法与实战
云原生·容器·kubernetes