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

相关推荐
AKAMAI1 小时前
Sport Network 凭借 Akamai 实现卓越成就
人工智能·云原生·云计算
ajax_beijing1 小时前
zookeeper是啥
分布式·zookeeper·云原生
user4840232542395 小时前
使用自定义snapshotter修改容器的rootfs路径
云原生
骆驼10246 小时前
40分钟的Docker实战攻略
云原生·eureka
阿里云云原生8 小时前
阿里 Qoder 新升级,Repo Wiki 支持共享、编辑和导出
云原生
眠りたいです10 小时前
基于脚手架微服务的视频点播系统-数据管理与网络通信部分的预备工作
c++·qt·ui·微服务·云原生·架构·媒体
元闰子14 小时前
OLTP上云,哪种架构最划算?·VLDB'25
数据库·后端·云原生
Xxtaoaooo17 小时前
OpenTenBase分布式HTAP实战:从Oracle迁移到云原生数据库的完整指南
云原生·oracle·tdsql·opentenbase·腾讯云数据库
2201_761199041 天前
7.k8s四层代理service
云原生·容器·kubernetes