容器技术入门与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。

相关推荐
KKKingWei1 小时前
Kubernetes Dashboard UI 部署安装
云原生·容器·kubernetes
麟城Lincoln2 小时前
【Linux-云原生-笔记】系统引导修复(grub、bios、内核、系统初始化等)
linux·笔记·云原生·bios·grub·系统修复·系统引导
KubeSphere 云原生2 小时前
云原生周刊:镜像兼容性
云原生
陈小桔2 小时前
Eureka实战
eureka
退役小学生呀13 小时前
十一、K8s细粒度权限管理RBAC
linux·docker·云原生·容器·kubernetes·k8s
昭阳~15 小时前
Kubernetes 高级调度特性
云原生·容器·kubernetes
阿里云云原生1 天前
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
微服务·云原生·架构
东风微鸣1 天前
Python 脚本最佳实践2025版
docker·云原生·kubernetes·可观察性
David爱编程1 天前
Deployment vs StatefulSet:怎么选?
后端·云原生·kubernetes
洁辉2 天前
Spring Cloud 全栈指南:构建云原生微服务的终极武器
spring cloud·微服务·云原生