实验三 容器技术

【实验类型】

综合性、验证性

【实验地点】

I203

【实验指导教师】

黄山

【实验日期】

2020年5月8日

【实验学时】

4学时

【实验目的】

  1. 掌握podman部署容器的方法

【实验环境】

硬件环境:

  1. HP Z440工作站

  2. CPU:Intel Xeon E5-1630 v4

  3. 内存:8G

软件环境:

  1. Windows 10 企业版

  2. VMware WorkStation 12 专业版

  3. CentOS-8-1虚拟机,已部署KVM虚拟化系统。

【实验任务】

任务一 安装容器相关软件软件包,配置Podman镜像。

  1. 安装相关软件包

yum module install container-tools

  1. 安装相关软件包

yum install yum-utils podman

  1. 测试安装成功
podman pull hello-world

buildah

yumdownloader

任务二 使用buildah制作镜像,使用podman启动容器

原理使用buildah,可以把容器的镜像挂载到一个目录中,因此对目录中文件的更改,就对应为对镜像文件的更改。本次实验以制作一下启动http服务器的容器镜像为例。使用root用户操作。需要安装rpm包,和使用yum命令安装包,需要用到以下命令

yumdownloader 包名

rpm -ivh --root 路径

yum install 包名 --installroot 路径

podman run  -p 123:80   #123为主机端口,80为容器端口
  1. 使用开始制作容器镜像。Buildah可以在已有镜像基础上制作,也可以从头开始制作,这里从头开始制作。
buildah from scratch  #这个词易拼错,可以打buildah from会有提示
buildah containers  #查看镜像,替代buildah list

1616814975015

1616815046759

  1. 挂载容器镜像
[root@localhost stu]# buildah mount working-container  #会出现以下挂载路径,是后面步骤需要访问的路径,一定要记住。 每名同学都不一样。

/var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged
  1. 安装httpd服务
 yumdownloader centos-gpg-keys centos-linux-repos centos-linux-release

 rpm --root /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/  --initdb

 rpm -ivh --root /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/ centos-gpg-keys-8.1-1.1911.0.9.el8.noarch.rpm

 rpm -ivh --root /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/ centos-repos-8.1-1.1911.0.9.el8.x86_64.rpm centos-release-8.1-1.1911.0.9.el8.x86_64.rpm

rm /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/etc/yum.repos.d/*

 cp /etc/yum.repos.d/CentOS-Base.repo /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/etc/yum.repos.d/

  cp /etc/yum.repos.d/CentOS-AppStream.repo /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/etc/yum.repos.d/

 yum install httpd --installroot /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/
  1. 编辑容器中的网页
echo "hello dlnu virt <学号> <姓名>" >/var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/var/www/html/index.html
  1. 设置容器启动时的命令
buildah config --cmd "/usr/sbin/httpd -DFOREGROUND" working-container
  1. 设置容器端口
buildah config --port 80/tcp working-container
  1. 清空无用的yum缓存文件,缩小镜像
yum clean all --installroot /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/
  1. 卸载镜像
buildah umount working-container
  1. 生成镜像
buildah commit working-container myimage #myimage为镜像名,等几分钟
  1. 使用podman运行镜像
podman run -d -p <学号后三位>:80 localhost/myimage  #hostPort:containerPort
  1. 测试容器使用
curl localhost:<学号后三位>

【实验参考】

  1. https://www.bilibili.com/video/av73921726/

【实验总结与习题】

  1. 你制作容器镜像时挂载的路径是什么?
  2. 什么是容器虚拟化
  3. 对比容器技术与虚拟化异同
  4. 对比容器技术与虚拟化优缺点
  5. 任务二中 centos-gpg-keys、centos-repos、centos-release这几个软件包是否可以使用yum安装到镜像中,为什么?
  6. 本次实验遇到哪些问题,如何解决?

results matching ""

    No results matching ""