一、打开新的REHL8虚拟机
- 设置虚拟机的主机名
[root@localhost ~]# hostnamectl set-hostname rhel8.caowei.cn
[root@localhost ~]# hostname
rhel8.caowei.cn
[root@localhost ~]#···
开启一个新的终端验证
- 关闭所有虚拟机的SELinux
[root@rhel8 ~]# vim /etc/selinux/config
SELINUX=disabled
- 设置所有虚拟机防火墙
[root@rhel8 ~]# systemctl stop firewalld
[root@rhel8 ~]# systemctl disable firewalld
- 构建Yum仓库
[root@rhel8 ~]# mkdir /dvd
[root@rhel8 ~]# mount /dev/cdrom /dvd
mount: /dvd: WARNING: device write-protected, mounted read-only.
[root@rhel8 ~]# ls /dvd
[root@rhel8 ~]# vim /etc/yum.repos.d/dvd.repo
[haha]
name=haha
baseurl=file:///dvd/AppStream/
enabled=1
gpgcheck=0
[xixi]
baseurl=file:///dvd/BaseOS/。
gpgcheck=0
[root@rhel8 ~]# yum repolist -v #显示仓库的详细信息
[root@rhel8 ~]# yum -y install vsftpd
- 构建Yum仓库,开机自动挂载
[root@rhel8 ~]# blkid /dev/cdrom
[root@rhel8 ~]# vim /etc/fstab
/dev/cdrom /dvd iso9660 defaults 0 0
[root@rhel8 ~]# umount /dvd
[root@rhel8 ~]# ls /dvd
[root@rhel8 ~]# mount -a
mount: /dvd: WARNING: device write-protected, mounted read-only.
[root@rhel8 ~]# ls /dvd
- 修改网卡命名规则
[root@rhel8 ~]# ifconfig | head -2
[root@rhel8 ~]# vim /etc/default/grub
…….
GRUB_CMDLINE_LINUX="……. quiet net.ifnames=0 biosdevname=0"·
…….
[root@rhel8 ~]#gr622-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done
[root@rhel8 ~]# reboot #重启系统
[root@rhel8 ~]# ls /dvd #显示光盘内容
[root@rhel8 ~]# ifconfig | head -2 #查看网卡名称
[root@rhel8 ~]# getenforce #查看SELinux运行模式
- 配置IP地址
[root@rhel8 ~]# nmcli connection show
[root@rhel8 ~]# nmcli connection delete ens160
[root@rhel8 ~]# nmcli connection show
[root@rhel8 ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
[root@rhel8 ~]# nmcli connection modify eth0
ipv4.method manual ipv4.addresses 192.168.4.108/24 connection.autoconnect yes
[root@rhel8 ~]# nmcli connection up eth0
[root@rhel8 ~]# ifconfig | head -2
临时配置IP地址
[root@rhel8 ~]# ifconfig eth0 192.168.4.108/24
[root@rhel8 ~]# ifconfig eth0 | head -2
模块化安装:类似于安装一组软件包
[root@rhel8 ~]# yum module list
[root@rhel8 ~]# yum -y module install container-tools
[root@rhel8 ~]# rpm -q podman
- 容器基础概述
- 容器基本信息
- Linux中的容器是装应用的
- 容器就是将软件打包成标准化单元,用于开发、交付和部署
- 容器技术已经成为应用程序封装和交付的核心技术
- 优点
- 相比于传统的虚拟化技术,容器更加简洁高效
- 传统虚拟机需要给每个VM安装操作系统
- 容器使用的共享公共库和程序
- 镜像是启动容器的核心,镜像由镜像仓库提供
- 在podman中容器是基于镜像启动的
- podman和容器的关系
- podman是完整的一套容器管理系统
- podman提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
- podman所需软件
- 系统软件,位于 rhel-8.2-x86_64-dvd 源中
- 利用系统光盘,构建Yum仓库
- 获取镜像
- 镜像的名称标识
- 每一个镜像都对应唯一的镜像 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 rmi 镜像名称:镜像标签
- 镜像管理练习
]# podman images #查看当前有哪些镜像
]# podman load -i /root/httpd.tar.gz #导入镜像
]# podman images #查看当前有哪些镜像
]# podman load -i /root/nginx.tar.gz #导入镜像
]# podman load -i /root/myos.tar.gz #导入镜像
]# podman images #查看当前有哪些镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/myos nginx 8a9042664597 11 months ago 392 MB
localhost/myos httpd 2f2eb9bd1363 11 months ago 392 MB
localhost/myos latest 2f57195050eb 16 months ago 392 MB
- 镜像删除练习
]# podman images #查看当前有哪些镜像
]# podman rmi 2f5 #按照镜像的ID值,删除镜像
]# podman images #查看当前有哪些镜像
]# podman load -i /root/myos.tar.gz #导入镜像
]# podman images #查看当前有哪些镜像
]# podman images
]# podman rmi localhost/myos:nginx #删除镜像
]# podman images
]# podman rmi localhost/myos:latest #删除镜像
]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/myos httpd 2f2eb9bd1363 11 months ago 392 MB
生成容器之前,RHEL8.2必须必备一个文件
[root@rhel8 ~]# touch /etc/resolv.conf
- 使用容器
- 容器基本命令
- 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 启动命令
- 容器初步练习
]# touch /etc/resolv.conf
]# podman run --name abc01 -it localhost/myos:httpd /bin/bash
[root@2b0b7c62ab42 /]# cat /etc/redhat-release
[root@2b0b7c62ab42 /]# useradd dc
[root@2b0b7c62ab42 /]# id dc
[root@2b0b7c62ab42 /]# exit
]# podman ps -a #查看所有的容器
- 容器放入后台练习
]# podman run --name nsd01 -d localhost/myos:httpd
]# podman ps -a
]# podman exec -it nsd01 /bin/bash #进入nsd01容器
[root@962aa837e17b html]# cd /
[root@962aa837e17b /]# useradd tc
[root@962aa837e17b /]# id tc
uid=1000(tc) gid=1000(tc) groups=1000(tc)
[root@962aa837e17b /]# exit
[root@rhel8 ~]# podman ps -a
[root@rhel8 ~]# podman stop nsd01 #停止容器
[root@rhel8 ~]# podman rm -f nsd01
[root@rhel8 ~]# podman ps -a
四、容器进阶-对外发布容器服务
- 容器可以与宿主机的端口进行绑定
- 从而把宿主机变成对应的服务,不用关心容器的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 -d localhost/myos:httpd
]# podman ps -a
]# podman exec -it nsdweb /bin/bash
[root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html
[root@5b69bf6956b0 html]# exit
exit
[root@rhel8 ~]# curl http://192.168.4.108
wo shi nsdweb
[root@rhel8 ~]#
五、容器进阶-容器共享卷
- podman容器不适合保存任何数据
- podman可以映射宿主机文件或目录到容器中
- 目标对象不存在就自动创建
- 目标对象存在就直接覆盖掉
- 多个容器可以映射同一个目标对象来达到数据共享的目的
- 启动容器时,使用 -v 映射参数
podman run -itd -v 宿主机对象:容器内对象 镜像名称:标签
- 容器终极练习
]# podman rm -f nsdweb #强制删除容器
]# podman run --name rqweb -p 80:80 -v /opt:/var/www/html -d localhost/myos:httpd
[root@rhel8 ~]# podman ps -a
[root@rhel8 ~]# echo wo shi niuniubenben > /opt/index.html
[root@rhel8 ~]# curl http://192.168.4.108
wo shi niuniubenben
[root@rhel8 ~]#
六、容器进阶-管理系统服务
- systemd一个更高效的系统&服务管理器
- 开机服务并行启动,各系统服务间的精确依赖
- 服务目录:/usr/lib/systemd/system/
- 主要管理工具:systemctl
- 管理员服务文件默认路径
- /usr/lib/systemd/system/
- 生成服务启动配置文件
--files:生成文件类型
podman generate systemd --name 容器名 --files
- 重新加载服务启动配置文件
systemctl daemon-reload
用户---->systemd---->服务启动配置文件--->/usr/sbin/httpd
用户--->systemd--->服务启动配置文件--->podman start 容器名字
容器必须是开启的状态
- 容器之光练习(必须是相对路径,当前路径必须是/usr/lib/systemd/system)
]# cd /usr/lib/systemd/system
]# podman ps -a
]# podman generate systemd --name rqweb --files
]# vim container-rqweb.service #大概浏览一般内容
]# systemctl daemon-reload #重新加载服务配置文件
]# podman stop rqweb #必须手动停止
]# podman ps -a
]# systemctl start container-rqweb
]# podman ps -a
]# systemctl enable container-rqweb #设置开机自启动