Podman的概述与运用

目录

1.Podman的简介

2.安装前准备

3.安装podman

4.镜像的概述与命令管理

5.容器的管理命令

6.对外发布容器示例

7. 容器共享卷

8.管理系统服务


1.Podman的简介

  1. linux中的容器是装应用的

  1. 容器就是将软件打包成标准化单元,用于开发、交付和部署

  1. 容器技术已经成为应用程序封装和交付的核心技术

优点

– 相比于传统的虚拟化技术,容器更加简洁高效

– 传统虚拟机需要给每个VM安装操作系统

容器使用的共享公共库和程序

Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。

Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像

Podman有何特点:

  • 1.没有 Daemon (守护进程) 直接通过 OCI runtime(默认也是runc)来启动容器,所以容器的进程是 podman 的子进程;

  • 2.采用类似于Linux中"fork/exec模型"相比较于”C/S模型”有一定的优势。

  • 3.能够以非 root 用户的身份去运行容器

  • 4.引入注册表的概念其内部包括docker.io在内的多个容器镜像源,默认的有

Podman VS Docker

  • (1) 模型对比

    • Podman: fork/exec 模型

    • Docker: C/S 模型

  • (2) 启动模式:

    • 前者直接OCI containner runtime(runc)进行交互来创建container的

    • 后者通过API跟 Docker Engine(引擎)请求才会调用OCI container runtime(runc)来启动一个container

  • (3) 守护进程

    • 前者容器不支持–restart策略但是可以通过编写systemd服务来完成自启动

    • 后者因有docker daemon,所以docker启动的容器支持–restart策略

  • (4) 权限对比

    • 前者可以非root用户创建容器

    • 后者必须使用root用户来创建容器

注:Podman 在 CentOS 7 的默认 Extras 存储库中可用,在 CentOS 8 和 Stream 的 AppStream 存储库中可用。

虚拟化与容器的区别

• 镜像是启动容器的核心,镜像由镜像仓库提供

• 在podman中容器是基于镜像启动的

• podman和容器的关系

– podman是完整的一套容器管理系统

– podman提供了一组命令,让用户更加方便直接地

使用容器技术,而不需要过多关心底层内核技术

podman所需软件

– 系统软件,位于 rhel-8.2-x86_64-dvd 源中

– 利用系统光盘,构建Yum仓库

2.安装前准备

# 禁用selinux
~]# vim /etc/selinux/config
....
SELINUX=disabled
.....
# 关闭翻火墙
~]# systemctl stop firewalld && systemctl disable firewalld
​
## 搭建yum
# 网络tencent,yum
~]# /etc/yum.repos.d
[AppStream]
name=centos8
baseurl=https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/
enabled=1
gpgcheck=0
[BaseoS]
name=centos8
baseurl=https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
​
# 搭建本地yum
# 挂载光盘并创建挂载点,挂载
~]# mkdir /dvd && mount /dev/cdrom /dvd
# 搭建本地yum
~]# vim /etc/yum.repos.d/dvd.repo 
[AppStream]
name=AppStream
baseurl=file:///dvd/AppStream
enabled=1
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=file:///dvd/BaseOS
enabled=1
gpgcheck=0
​
# 检查
~]# yum repolist -v
....
Loading mirror speeds from cached hostfile
Setting up Package Sacks
pkgsack time: 0.010
Repo-id      : AppStream
Repo-name    : AppStream
Repo-revision: 8.5.2111
Repo-distro-tags: [cpe:/o:centos:centos:8]: CentOS 8
Repo-updated : Fri Dec 31 14:06:52 2021
Repo-pkgs    : 6,533
Repo-size    : 11 G
Repo-baseurl : https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/
Repo-expire  : 21,600 second(s) (last: Sun Jan  9 13:17:57 2022)
  Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/dvd.repo
​
Repo-id      : BaseoS
Repo-name    : BaseoS
Repo-revision: 8.5.2111
Repo-distro-tags: [cpe:/o:centos:centos:8]: CentOS 8
Repo-updated : Fri Dec 31 14:06:31 2021
Repo-pkgs    : 1,898
Repo-size    : 2.0 G
Repo-baseurl : https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/
Repo-expire  : 21,600 second(s) (last: Sun Jan  9 13:17:57 2022)
  Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/dvd.repo
......

3.安装podman

注:centos7安装之前要安装docker,而8系列则可以直接按装

# 8系列有专门的模块
# 查看module并安装
~]# yum module list
~]# yum -y module install container-tools

4.镜像的概述与命令管理

1)镜像的名称标识

– 每一个镜像都对应唯一的镜像 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查看镜像查看出镜像id
podman rmi 镜像名称:镜像标签删除镜像podman rmi 2f5 #按照镜像的ID值,删除镜像 podman rmi localhost/myos:nginx #删除镜像

示例

# 镜像管理
~]# podman  load   -i   /root/httpd.tar.gz       #导入镜像
~]# podman images     #查看当前有哪些镜像
​
# 镜像删除(镜像id可以简写但要唯一性))
~]# podman  images           #查看当前有哪些镜像
~]# podman   rmi   2f5        #按照镜像的ID值,删除镜像

5.容器的管理命令

命令作用说明示例
podman run -选项 镜像名称:镜像标签 启动命令创建容器
podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]查看容器
podman rm 容器id删除容器podman rm -f nsdweb #强制删除容器,或者先停止容器在删除
podman start/stop/restart 容器id容器管理命令启动、停止、重启
podman exec -it 容器id 启动命令进入容器

run 的选项

– podman help run

– man podman-run

• run = 创建 + 启动 + 进入

podman run 命令的选项

– 选项 -i,交互式

– 选项 -t,终端

– 选项 -d,后台运行

– 选项 -p,端口(本地端口:容器端口)

– 选项 -v,映射文件(本地:/容器文件位置)

– 选项 --name 容器名字

• 启动容器,并进入容器

podman run -it myos:latest /bin/bash

• 可以通过命令行提示符,判定自己是否进入容器了

容器管理命令示例(字段意思我所写的docker容器有写)

# 创建容器
~]# podman run -it  localhost/myos:httpd  /bin/bash
# 如果创建不了容器则需要创建/etc/resolv.conf文件
~]# touch /etc/resolv.conf
​
# 查看当前系统容器
~]# podman ps -a
​
# 利用容器id开启容器(容器id可以简写但要唯一性)
~]# podman  start  2b
​
#进入容器
~]# podman exec -it  2b /bin/bash
​
# 利用容器id停止容器(容器id可以简写但要唯一性)
~]# podman stop  2b 
​
# 利用容器id删除容器(容器id可以简写但要唯一性)
 ~]# podman  rm  2b 
​
# 创建放入后台
~]# podman run --name abc01 -itd localhost/myos:httpd /bin/bash

6.对外发布容器示例

• 容器可以与宿主机的端口进行绑定

• 从而把宿主机变成对应的服务,不用关心容器的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/myos:httpd   /bin/bash

7. 容器共享卷

• podman容器不适合保存任何数据

• podman可以映射宿主机文件或目录到容器中

– 目标对象不存在就自动创建

– 目标对象存在就直接覆盖掉

– 多个容器可以映射同一个目标对象来达到数据共享的目的

• 启动容器时,使用 -v 映射参数

# 格式
~]# podman run -itd  -v  宿主机对象:容器内对象   镜像名称:标签
# 示例
# 创建一个容器放入后台,并映射端口与映射文件
~]# podman run --name rqweb  -p 80:80 -v /opt:/var/www/html -itd  localhost/myos:httpd /bin/bash

8.管理系统服务

systemd一个更高效的系统&服务管理器

– 开机服务并行启动,各系统服务间的精确依赖

– 服务目录:/usr/lib/systemd/system/

– 主要管理工具:systemctl

• 管理员服务文件默认路径

– /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
# 注:容器必须是启动状态,且有名字(-name)
​
# 自动生成container-rqweb.service
~]# podman generate systemd --name rqweb --files
~]# ls container-rqweb.service(其他名字就是  container-(名字).service)
container-rqweb.service
​
# 重新加载服务配置文件
~]# systemctl  daemon-reload
​
# 测试
~]# systemctl stop container-rqweb
~]# systemctl start container-rqweb
#设置开机自启
~]# systemctl enable container-rqweb   

注:当前是centos8.2版本系统不完善有可能不成功

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值