Top
NSD SERVICES DAY04
- 俱往矣,数风流人物,还看今朝
- 设置虚拟机的主机名
- 测试Yum仓库
- SELinux与firewalld
- 设置命名
- 配置IP地址
- 配置虚拟机网卡的网络类型(KVM虚拟机选择private1,VMware虚拟机选项vmnet1)
- 常见的ssh远程管理错误:删除/root/.ssh/known_hosts
- 今日所需资料:podman(img.tar.xz)
- 模块化安装:类似于安装一组软件包
- 容器的优势
- 镜像管理
- 容器管理
- 制作镜像,方式一
- 制作镜像,方式二(专业)
- 容器进阶-对外发布容器服务
- 容器进阶-容器共享卷
- 容器进阶-管理系统服务(了解)
1 俱往矣,数风流人物,还看今朝
2 设置虚拟机的主机名
- [root@localhost ~]# hostnamectl set-hostname rq.tedu.cn
- 或者另一种设置方式
- [root@localhost ~]# hostname rq.tedu.cn
- [root@localhost ~]# echo rq.tedu.cn > /etc/hostname
- 开启一个新的终端验证
3 测试Yum仓库
- [root@rq ~]# yum repoinfo
4 SELinux与firewalld
- [root@rq ~]# vim /etc/selinux/config
- SELINUX=disabled
- 设置虚拟机的防火墙
- [root@rq ~]# yum -y remove firewalld
5 设置命名
修改网卡命名规则
- ]# ifconfig | head -2
- ]# vim /etc/default/grub
- …….
- GRUB_CMDLINE_LINUX="…………quiet net.ifnames=0 biosdevname=0"
- …….
- ]# grub2-mkconfig -o /boot/grub2/grub.cfg
- Generating grub configuration file ...
- done
- ]# reboot #重启系统 (开机自动挂载、SELinux、命名规则)
- ]# ifconfig | head -2 #查看网卡名是否是eth0
- ]# getenforce
6 配置IP地址
- [root@rq ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
- [root@rq ~]# nmcli connection modify eth0
- ipv4.method manual ipv4.addresses 192.168.88.4/24 autoconnect yes
- [root@rq ~]# nmcli connection up eth0
- [root@rq ~]# ifconfig | head -2
7 配置虚拟机网卡的网络类型(KVM虚拟机选择private1,VMware虚拟机选项vmnet1)
效果如图-1、图-2所示。
8 常见的ssh远程管理错误:删除/root/.ssh/known_hosts
9 今日所需资料:podman(img.tar.xz)
真机为Linux: 虚拟机选择网络类型为private1
- [student@server1 ~]$ scp -r /linux-soft/s1/img.tar.xz [email protected]:/root
真机为windows: 虚拟机选择网络类型为vmnet1
Windterm进行传输
10 模块化安装:类似于安装一组软件包
- [root@rq ~]# yum -y module install container-tools
- [root@rq ~]# podman --help #查看podman帮助信息
- 关机拍摄快照:容器安装完成
11 容器的优势
–相比于传统的虚拟化技术,容器更加简洁高效
–传统虚拟机需要给每个VM安装操作系统
–容器使用的共享公共库和程序
•镜像是启动容器的核心,镜像由镜像仓库提供
•在podman中容器是基于镜像启动的
12 镜像管理
• 镜像的名称标识
方式一:每一个镜像都对应唯一的镜像 id
方式二:镜像名称(姓氏) + 标签(名字) = 唯一
–每一个镜像都有标签,如果没写就是默认标签 latest
–我们在调用镜像的时候,如果没有指定标签也是 latest
•查找镜像(需要能访问互联网)
podman search 关键字
podman search httpd
•下载镜像(需要能访问互联网)
podman pull 镜像名称:标签
podman pull localhost/myos:latest
•导入镜像
podman load -i 备份文件.tar.gz
podman load -i /root/httpd.tar.gz
镜像管理练习
- ]# podman images #查看当前有哪些镜像
- ]# podman load -i /root/img.tar.xz #导入镜像
- ]# podman images #查看当前有哪些镜像
镜像删除练习01
- ]# podman images #查看当前有哪些镜像
- ]# podman rmi 60 #按照镜像的ID值,删除镜像
- ]# podman images #查看当前有哪些镜像
- ]# podman load -i /root/img.tar.xz #导入镜像
- ]# podman images #查看当前有哪些镜像
镜像删除练习02
- ]# podman images #查看当前系统可以使用的镜像
- ]# podman rmi localhost/rockylinux:8.6 #删除镜像
- ]# podman images
- ]# podman load -i /root/img.tar.xz #导入镜像
- ]# podman images
13 容器管理
•podman run 命令
–podman run -选项 镜像名称:镜像标签 启动命令
•查看 run 的选项
–podman help run
–man podman-run
•run = 创建 + 启动 + 进入 三合一的操作
•podman run 命令的选项
–选项 -i,交互式方式
–选项 -t,终端
–选项 -d,后台运行
–选项 --name 容器名字
启动容器,并进入容器
podman run -it myos:latest /bin/bash
•可以通过命令行提示符,判定自己是否进入容器了
容器管理命令
•启动容器
–podman run –选项 镜像名称:镜像标签 启动命令
•查看容器
–podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]
•删除容器
–podman rm 容器id
•容器管理命令启动、停止、重启
–podman start|stop|restart 容器id
•进入容器
–podman exec -it 容器id 启动命令
容器初步练习
- ]# podman run --name abc01 -it localhost/rockylinux:8.6 /bin/bash
- [root@2b0b7c62ab42 /]# cat /etc/redhat-release
- [root@2b0b7c62ab42 /]# useradd dc
- [root@2b0b7c62ab42 /]# id dc
- [root@2b0b7c62ab42 /]# exit #退出容器
- [root@rq ~]# podman ps -a #查看当前系统容器
- [root@rq ~]# podman start abc01 #启动容器
- [root@rq ~]# podman exec -it abc01 /bin/bash #进入容器
- [root@2b0b7c62ab42 /]# id dc
- [root@2b0b7c62ab42 /]# exit #退出容器
- [root@rq ~]# podman rm -f abc01 #强制删除容器abc01
容器放入后台练习
- ]# podman rm -f abc01 #强制删除容器abc01
- ]# podman run --name abc01 -itd localhost/rockylinux:8.6
- ]# podman ps -a #查看当前系统有哪些容器
- ]# podman exec -it abc01 /bin/bash #进入abc01容器
- [root@962aa837e17b /]# useradd tc
- [root@962aa837e17b /]# id tc
- [root@962aa837e17b /]# exit
- ]# podman ps -a #查看当前系统有哪些容器
- ]# podman exec -it abc01 /bin/bash #进入abc01容器
- [root@962aa837e17b /]# id tc
- [root@962aa837e17b /]# exit
- ]# podman ps -a #查看当前系统有哪些容器
- ]# podman rm -f abc01 #强制删除容器abc01
14 制作镜像,方式一
构建FTP服务,提供光盘内容
- [root@rq ~]# yum -y install vsftpd
- [root@rq ~]# vim /etc/vsftpd/vsftpd.conf
- anonymous_enable=YES #开启匿名用户访问功能
- [root@rq ~]# systemctl restart vsftpd
- [root@rq ~]# systemctl enable vsftpd
- Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
- [root@rq ~]# mkdi r /var/ftp/dvd
- [root@rq ~]# mount /dev/cdrom /var/ftp/dvd
- mount: /var/ftp/dvd: WARNING: device write-protected, mounted read-only.
- [root@rq ~]# ls /var/ftp/dvd/
- AppStream BaseOS EFI images isolinux LICENSE media.repo TRANS.TBL
- [root@rq~]#
- [root@rq ~]# curl ftp://10.88.0.1/dvd/ #必须有/结尾
- dr-xr-xr-x 4 0 0 2048 May 15 2022 AppStream
- dr-xr-xr-x 4 0 0 2048 May 15 2022 BaseOS
- dr-xr-xr-x 3 0 0 2048 May 15 2022 EFI
- -r--r--r-- 1 0 0 2204 Mar 30 2022 LICENSE
- -r--r--r-- 1 0 0 883 May 15 2022 TRANS.TBL
- dr-xr-xr-x 3 0 0 2048 May 15 2022 images
- dr-xr-xr-x 2 0 0 2048 May 15 2022 isolinux
- -r--r--r-- 1 0 0 86 May 15 2022 media.repo
- [root@rq ~]#
- [root@rq ~]# ifconfig | head -2
- cni-podman0: flags=4099 mtu 1500
- inet 10.88.0.1 netmask 255.255.0.0 broadcast 10.88.255.255
容器构建网络Yum仓库,安装常用软件
- [root@localhost ~]# podman run -it --name haha localhost/rockylinux:8.6 /bin/bash
- [root@acc4ec6e7dc3 /]# ls /etc/yum.repos.d/
- Rocky-AppStream.repo Rocky-HighAvailability.repo Rocky-RT.repo
- Rocky-BaseOS.repo Rocky-Media.repo Rocky-ResilientStorage.repo
- Rocky-Debuginfo.repo Rocky-NFV.repo Rocky-Sources.repo
- Rocky-Devel.repo Rocky-Plus.repo
- Rocky-Extras.repo Rocky-PowerTools.repo
- [root@acc4ec6e7dc3 /]# rm -rf /etc/yum.repos.d/*
- [root@acc4ec6e7dc3 /]# ls /etc/yum.repos.d/
- [root@acc4ec6e7dc3 /]# vi /etc/yum.repos.d/dvd.repo
- [app]
- baseurl=ftp://10.88.0.1/dvd/AppStream
- gpgcheck=0
- [base]
- baseurl=ftp://10.88.0.1/dvd/BaseOS
- gpgcheck=0
- [root@acc4ec6e7dc3 /]# yum repolist -v
- [root@acc4ec6e7dc3 /]# yum -y install net-tools vim
- [root@acc4ec6e7dc3 /]# exit
- exit
将haha文件打包封装成myos:3.8
- [root@localhost ~]# podman commit haha myos:3.8 #制作新的镜像
- [root@localhost ~]# podman images #查看系统所有镜像
- REPOSITORY TAG IMAGE ID CREATED SIZE
- localhost/myos 3.8 89ae5de4fe6c 11 seconds ago 264 MB
- localhost/httpd latest 608968fe7738 4 weeks ago 222 MB
- localhost/rockylinux 8.6 8cf70153e062 8 months ago 202 MB
- [root@localhost ~]#
使用自己制作的镜像
- [root@localhost ~]# podman run -it --name xixi localhost/myos:3.8 /bin/bash
- [root@97b4eb513723 /]# ifconfig | head -2 #测试
- eth0: flags=4163 mtu 1500
- inet 10.88.0.8 netmask 255.255.0.0 broadcast 10.88.255.255
- [root@97b4eb513723 /]# cat /etc/yum.repos.d/dvd.repo
- [app]
- baseurl=ftp://10.88.0.1/dvd/AppStream
- gpgcheck=0
- [base]
- baseurl=ftp://10.88.0.1/dvd/BaseOS
- gpgcheck=0
- [root@97b4eb513723 /]# exit
- exit
- [root@localhost ~]# podman rm -f xixi #删除容器
15 制作镜像,方式二(专业)
制作自己镜像
- [root@localhost ~]# vim yum.sh
- rm -rf /etc/yum.repos.d/*
- echo '
- [app]
- baseurl=ftp://10.88.0.1/dvd/AppStream
- gpgcheck=0
- [base]
- baseurl=ftp://10.88.0.1/dvd/BaseOS
- gpgcheck=0' > /etc/yum.repos.d/dvd.repo
- yum -y install net-tools vim
- [root@localhost ~]# chmod +x yum.sh
- [root@localhost ~]# vim Containerfile
- FROM localhost/rockylinux:8.6 #基础镜像 来自此镜像
- COPY yum.sh /opt/ #复制当前路径下脚本文件yum.sh到容器中/opt
- RUN /opt/yum.sh #容器运行/opt/yum.sh脚本
- [root@localhost ~]# podman build -t niu:3.1 /root #/root为Containerfile文件所在路径以及yum.sh文件所在
使用自己制作的镜像
- [root@localhost ~]# podman run -it --name xtt localhost/niu:3.1 /bin/bash
- [root@3240038a1995 /]#
- [root@3240038a1995 /]# ifconfig | head -2
- eth0: flags=4163 mtu 1500
- inet 10.88.0.16 netmask 255.255.0.0 broadcast 10.88.255.255
- [root@3240038a1995 /]# cat /etc/yum.repos.d/dvd.repo
- [app]
- baseurl=ftp://10.88.0.1/dvd/AppStream
- gpgcheck=0
- [base]
- baseurl=ftp://10.88.0.1/dvd/BaseOS
- gpgcheck=0
- [root@3240038a1995 /]# exit
- exit:q::
- [root@localhost ~]#
- [root@localhost ~]# podman rm -f xtt #删除容器
16 容器进阶-对外发布容器服务
•容器可以与宿主机的端口进行绑定
•从而把宿主机变成对应的服务,不用关心容器的IP地址
•我们使用 -p 参数把容器端口和宿主机端口绑定
•同一宿主机端口只能绑定一个容器服务
•-p [可选IP]:宿主机端口:容器端口
•例如:把宿主机变成 apache
podman run -itd -p 80:80 myos:httpd
•例如:把宿主机变成 nginx
podman run -itd -p 80:80 myos:nginx
容器放入后台,端口绑定练习
- ]# podman run --name nsdweb -p 80:80 -itd localhost/httpd:latest
- [root@rq ~]# podman ps -a
- [root@rq ~]# podman exec -it nsdweb /bin/bash
- [root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html
- [root@5b69bf6956b0 html]# exit
- exit
- [root@rq ~]# curl 192.168.88.4
- wo shi nsdweb
- [root@rq ~]#
17 容器进阶-容器共享卷
•podman容器不适合保存任何数据
•podman可以映射宿主机文件或目录到容器中
–目标对象不存在就自动创建
–目标对象存在就直接覆盖掉
–多个容器可以映射同一个目标对象来达到数据共享的目的
•启动容器时,使用 -v 映射参数
podman run -itd -v 宿主机对象:容器内对象 镜像名称:标签
容器终极练习
- ]# podman rm -f nsdweb #强制删除容器
- ]# mkdir /webroot
- ]# echo wo shi niuniu > /webroot/index.html
- ]# podman run --name nsdweb -p 80:80 -v /webroot:/var/www/html -itd localhost/httpd:latest
- [root@rq ~]# curl 192.168.88.4
- wo shi niuniu
18 容器进阶-管理系统服务(了解)
• systemd一个更高效的系统&服务管理器
– 开机服务并行启动,各系统服务间的精确依赖
– 服务目录:/usr/lib/systemd/system/
– 主要管理工具:systemctl
手动方式:
podman start nsdweb #启动容器
podman stop nsdweb #停止容器
systemd方式:
systemctl start nsdweb #启动容器
systemctl stop nsdweb #停止容器
systemd管理方式思路:
用户--systemctl--》systemd--服务启动配置文件--》容器启动
•管理员服务文件默认路径
–/usr/lib/systemd/system/
•生成服务启动配置文件
--files:生成文件类型
podman generate systemd --name 容器名 --files
•重新加载服务启动配置文件
systemctl daemon-reload
容器之光练习(必须是相对路径,当前路径必须是/usr/lib/systemd/system,容器必须正在运行)
- ]# cd /usr/lib/systemd/system
- ]# podman ps -a
- ]# podman generate systemd --name nsdweb --files
- ]# vim container-nsdweb.service #大致浏览一遍
- ]# systemctl daemon-reload #重新加载服务配置文件
- ]# systemctl daemon-reload
- ]# podman stop nsdweb #手动停止
- ]# podman ps -a
- ]# systemctl start container-nsdweb #测试systemd方式
- ]# podman ps -a
- ]# systemctl enable container-nsdweb #设置开机自启