基于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构建成功。