实验三 容器技术
【实验类型】
综合性、验证性
【实验地点】
I203
【实验指导教师】
黄山
【实验日期】
2020年5月8日
【实验学时】
4学时
【实验目的】
- 掌握podman部署容器的方法
【实验环境】
硬件环境:
HP Z440工作站
CPU:Intel Xeon E5-1630 v4
内存:8G
软件环境:
Windows 10 企业版
VMware WorkStation 12 专业版
CentOS-8-1虚拟机,已部署KVM虚拟化系统。
【实验任务】
任务一 安装容器相关软件软件包,配置Podman镜像。
- 安装相关软件包
yum module install container-tools
- 安装相关软件包
yum install yum-utils podman
- 测试安装成功
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为容器端口
- 使用开始制作容器镜像。Buildah可以在已有镜像基础上制作,也可以从头开始制作,这里从头开始制作。
buildah from scratch #这个词易拼错,可以打buildah from会有提示
buildah containers #查看镜像,替代buildah list
- 挂载容器镜像
[root@localhost stu]# buildah mount working-container #会出现以下挂载路径,是后面步骤需要访问的路径,一定要记住。 每名同学都不一样。
/var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged
- 安装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/
- 编辑容器中的网页
echo "hello dlnu virt <学号> <姓名>" >/var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/var/www/html/index.html
- 设置容器启动时的命令
buildah config --cmd "/usr/sbin/httpd -DFOREGROUND" working-container
- 设置容器端口
buildah config --port 80/tcp working-container
- 清空无用的yum缓存文件,缩小镜像
yum clean all --installroot /var/lib/containers/storage/overlay/84c899b189b66ddc89b39ddd311356540e0ce7c1849b1f809b29d893aad1f9a4/merged/
- 卸载镜像
buildah umount working-container
- 生成镜像
buildah commit working-container myimage #myimage为镜像名,等几分钟
- 使用podman运行镜像
podman run -d -p <学号后三位>:80 localhost/myimage #hostPort:containerPort
- 测试容器使用
curl localhost:<学号后三位>
【实验参考】
【实验总结与习题】
- 你制作容器镜像时挂载的路径是什么?
- 什么是容器虚拟化
- 对比容器技术与虚拟化异同
- 对比容器技术与虚拟化优缺点
- 任务二中 centos-gpg-keys、centos-repos、centos-release这几个软件包是否可以使用yum安装到镜像中,为什么?
- 本次实验遇到哪些问题,如何解决?