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

相关推荐
ICT董老师29 分钟前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php
原神启动129 分钟前
K8S(八)—— Kubernetes Pod 资源限制 + 探针(Probe)解析
云原生·容器·kubernetes
zxnbmk37 分钟前
【7】Kubernetes存储(本章知识密度较高,仅浅浅了解后续详解)
linux·云原生·容器·kubernetes
叫致寒吧37 分钟前
pod详解
云原生·kubernetes
孤岛悬城1 小时前
58 k8s之pod
云原生·容器·kubernetes
可爱又迷人的反派角色“yang”1 小时前
k8s(五)
linux·运维·docker·云原生·容器·kubernetes
努力搬砖的咸鱼2 小时前
用 Docker 部署你的第一个微服务
docker·微服务·云原生·容器
Zsr10232 小时前
K8s核心组件pod:进阶篇
云原生·容器·kubernetes·pod
一条咸鱼_SaltyFish3 小时前
Spring Cloud Gateway鉴权空指针惊魂:HandlerMethod为null的深度排查
java·开发语言·人工智能·微服务·云原生·架构
广州服务器托管16 小时前
NVIDIA最新591.74显卡驱动精简版:支持DLSS 4.5、所有RTX显卡都可使用,最新N卡驱动下载
计算机网络·网络安全·云原生·个人开发·可信计算技术