基于HCE OS的云原生容器实践

该实验旨在指导用户在华为云欧拉操作系统(HCE OS)环境上安装docker容器,使用dockerfile自建镜像,然后将自建镜像上传至华为云镜像仓库。

准备环境

预置环境

开始实验前请点击手册上方“预置实验环境”按钮。预置实验环境需要等待【2分钟】,环境预置成功。环境预置成功意味着系统为您创建好了实验过程所需的ECS、EIP、VPC、安全组等资源,确保后续实验可以正常进行。预置的ECS资源用户、密码信息可点击预置环境信息查看。

 

 

登录华为云账号

进入【实验操作桌面】,打开Chrome浏览器,选择“IAM 用户登录”,并在对话框中输入系统为您分配的华为云实验账号和密码进行登录。

注意:请使用实验手册上方账号信息,切勿使用您自己的华为云账号登录。

 

1 安装Docker环境

本任务主要介绍如何在云资源上安装Docker容器,为后续实验打下基础。

 

步骤一:登录实验环境

登录成功点击控制台,点击弹性云服务器,点击远程登录。

点击“CloudShell登录”

输入创建弹性云服务器时设置的密码,点击连接。

登录后效果。

 

步骤二:安装Docker

通过yum安装Docker,在云主机中输入如下命令:

 

yum install docker -y

跳过此步

2 容器基础实操

本任务介绍docker容器的基本操作,包含了容器生命周期管理相关操作。同时也介绍如何利用docker exec方式进入docker容器,为后续的实验打下基础。

2.1 运行一个容器

步骤一:创建一个名为huawei1的httpd容器

docker create --name huawei1 httpd

**注意:**第一次创建容器时,本地由于没有httpd的镜像,默认会从dockerhub镜像仓库里下载到本地。

如果拉取镜像失败,点击华为云SWR->镜像资源->镜像中心->镜像加速器,按照操作说明配置镜像加速。

 

nano  /etc/docker/daemon.json

{      "registry-mirrors": [ "https://0627234c88000f360f77c014d6aa53a0.mirror.swr.myhuaweicloud.com" ]  }

 

 

 

{
    "registry-mirrors": [ "https://0627234c88000f360f77c014d6aa53a0.mirror.swr.myhuaweicloud.com" ]
}

 

systemctl restart docker

 

 

 

 

步骤二:查看该容器信息

docker ps -a

步骤三:启动容器huawei1

docker start huawei1 或者 docker start  容器ID

跳过此步

步骤四:再次查看容器的hauwei1信息,状态为UP

docker container ls

步骤五:停止容器huawei1,并查看到该容器状态为Exited

docker stop huawei1

步骤六:删除容器huawei1

docker rm huawei1

2.2 Docker exec进入容器

步骤一:在后台运行一个名为“httpd1”的httpd容器,并将其服务端口80映射到宿主机8080端

docker run --name httpd1 -d -p 8080:80 httpd

【说明】

-P:是容器内部端口随机映射到主机端口。

-p:是容器内部端口绑定到指定的主机端口

 

步骤二:访问容器httpd1

curl 127.0.0.1:8080

跳过此步

步骤三:进入容器httpd1

docker exec -it httpd1 bash

【说明】

-i:以交互模式运行容器,通常与-t同时使用

-t:为容器重新分配一个伪输入终端,通常与-i同时使用

 

步骤四:修改httpd1容器中静态文件内容,修改完成后输入“exit”退出

找到httpd相关的静态文件index.html

ls

cd htdocs
ls

echo “update to httpd” > index.htmlexit

步骤五:再次访问容器httpd1

curl 127.0.0.1:8080

跳过此步

步骤六:为方便后续实验,将本实验中创建的容器删除

docker kill [容器名或者ID]

3 容器镜像实操

本任务介绍如何进行docker容器镜像的创建,通过Dockerfile的方式构建镜像。

3.1 Dockerfile构建基础镜像

步骤一:拉取官方的镜像,标签为7

docker pull centos:7

步骤二:使用dockerimages查看本地镜像列表REPOSITORY为centos标签为7的镜像

docker images centos:7

步骤三:使用镜像centos:7以交互模式启动一个容器,在容器内执行/bin/bash命令

docker run -it centos:7 /bin/bash

此时进入容器内部,图中“705ccba62a5”为容器ID。

重新打开一个标签,并使用cloudshell登录ECS,登录后执行以下命令,准备镜像源。

wget https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
docker cp CentOS-7-anon.repo (已获取的容器ID):/etc/yum.repos.d/CentOS-Base.repo

步骤四:容器内安装Redis依赖包

回到运行容器的cloudshell窗口,执行一下命令。

yum -y install wget gcc make libgcc gcc-c++ glibc-devel

步骤五:输入exit,退出容器,输入docker ps -a查看容器id

exit
docker ps -a

由此可知,容器的ID为3b898a823d80

步骤六:根据容器ID创建一个新的镜像作为Redis的基础镜像

docker cp CentOS-7-anon.repo a065983ccbdb:/etc/yum.repos.d/CentOS-Base.repo
docker commit -a "song" -m "songmadeimages" a065983ccbdb songos:7

 

docker commit -a "huawei.com" -m "redis images" f42cb9a0bf6f(此处为容器ID注意替换为自己的容器ID) centos:7

其中:

huawei.com:提交的镜像作者

3b898a823d80:容器ID

redis images:提交时的说明文字

centos:7:新生成的镜像名称

步骤七:查看新构建的基础镜像

docker images

由此可知,新镜像centos:7构建成功。