一、 容器基础概述
- Linux中的容器是装应用的
- 容器就是将软件打包成标准化单元,用于开发、交付和部署
- 容器技术已经成为应用程序封装和交付的核心技术
• 优点
– 相比于传统的虚拟化技术,容器更加简洁高效
– 传统虚拟机需要给每个VM安装操作系统
– 容器使用的共享公共库和程序
• 镜像是启动容器的核心,镜像由镜像仓库提供
• 在podman中容器是基于镜像启动的
• podman和容器的关系
– podman是完整的一套容器管理系统
– podman提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
• podman所需环境
关闭所有虚拟机的SELinux
[root@rhel8 ~]# vim /etc/selinux/config
SELINUX=disabled
设置虚拟机的防火墙
[root@rhel8 ~]# yum -y remove firewalld
安装容器软件:
[root@localhost ~]# yum -y module install container-tools
获取镜像
•镜像的名称标识
–每一个镜像都对应唯一的镜像 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 run –选项 镜像名称:镜像标签 启动命令
•查看容器
–podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]
•删除容器
–podman rm 容器id
•容器管理命令启动、停止、重启
–podman start|stop|restart 容器id
•进入容器
–podman exec -it 容器id 启动命令
•podman run 命令的选项
–选项 -i,交互式
–选项 -t,终端
–选项 -d,后台运行
–选项 --name 容器名字
三、对外发布容器服务
•容器可以与宿主机的端口进行绑定
•从而把宿主机变成对应的服务,不用关心容器的IP地址
•我们使用 -p 参数把容器端口和宿主机端口绑定
•同一宿主机端口只能绑定一个容器服务
•-p [可选IP]:宿主机端口:容器端口
•例如:把宿主机变成 nginx
podman run -d -p 80:80 myos:nginx
容器放入后台,端口绑定练习
]# podman run --name nsdweb -p 80:80 -d localhost/myos:httpd
[root@rhel8 ~]# podman ps -a
四、容器进阶-容器共享卷
•podman容器不适合保存任何数据
•podman可以映射宿主机文件或目录到容器中
–目标对象不存在就自动创建
–目标对象存在就直接覆盖掉
–多个容器可以映射同一个目标对象来达到数据共享的目的
•启动容器时,使用 -v 映射参数
podman run -d -v 宿主机对象:容器内对象 镜像名称:标签
]# podman run --name nsdweb -p 80:80 -v /webroot:/var/www/html -d localhost/myos:httpd
五、管理系统服务
•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