Linux Podman容器介绍

2023-12-17 12:20
文章标签 linux 介绍 容器 podman

本文主要是介绍Linux Podman容器介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

Podman讲解

Container 和 Container Images 的关系

安装Podman

配置root的容器管理

国内镜像源

配置Podman的镜像源

创建容器相关命令

配置rootless的容器管理

配置Podman镜像源

管理容器镜像

管理容器

将容器作为systemd服务运行

配置普通用户来创建systemd管理的容器


Podman讲解

Podman是一个无守护程序、开源的Linux原生工具,指在使用Open Containers Initiative标准轻松查找、运行、构建、共享和部署Container(容器) 和 Container Images(容器镜像)

Podman是一款集合了命令集的工具,设计初衷是为了处理容器化进程的不同任务,可以作为一个模块化框架工作。它的工具集包括:

Podman:Pod和容器镜像管理器

Buildah:容器镜像生成器

Skopeo:容器镜像检查管理器

Runc:容器运行器和特性构建器,并传递给Podman和Buildah

Crun:可选运行时,为Rootless容器提供更大的灵活性、控制和安全性

Podman与Docker的区别

Podman不需要守护进程,Podman控制下的容器既可以由超级用户运行,也可以由非特权用户运行

Docker需要守护进程,并且需要以root权限运行

注意事项

不同用户的Podman操作都是隔离的(用户A有httpd镜像,切换到用户B时就得重新下载httpd镜像)

后续介绍的使用systemd来管理容器也有类似的情况

Container 和 Container Images 的关系

容器镜像是文件,容器是进程

镜像的概念更多偏向于一个环境包,可以移动到任意的操作平台中去运行

容器就是运行环境包的实例,是镜像的一种具体表现形式

可以针对某个环境包运行多个实例(即一个镜像可以启动多个容器)

可以理解为镜像就是系统装载的IOS镜像,容器为镜像启动的操作系统

一个镜像可以装载多个操作系统


安装Podman

安装container-tools模块(包括工具podman和skopeo) RHEL命令

yum module list | grep tools                            查找此模块

yum module info container-tools                    查看此模块流信息

yum -y module install container-tools             查看安装的版本号

podman -v                                                      查看podman版本号

CentOS命令

yum -y install podman


配置root的容器管理

国内镜像源

常用Docker国内镜像源

网易镜像中心:           http://hub-mirror.c.163.com

阿里镜像中心:         https://dev.aliyun.com

Docker 官方中国区:  https://registry.docker-cn.com

ustc:                      https://docker.mirrors.ustc.edu.cn

daocloud:                 https://hub.daocloud.io/

Docker国内免费加速器

daocloud:                 https://***(自己注册的私有账号).m.daocloud.io

aliyun:                     https://***(自己注册的私有账号).mirror.aliyuncs.com

配置Podman的镜像源

通过配置podman的配置文件配置镜像源(镜像源有私有镜像源、国内镜像源、国外镜像源)

Podman全局配置文件存放在/etc/containers/registries.conf文件中(安装Podman后自动生成)

Podman用户单独的配置文件存放在~/.config/containers/registries.conf文件中(需要手工创建并编写)

并且~/.config/containers/registries.conf文件的优先级高于/etc/containers/registries.conf

配置docker中国区的源(镜像源-用于存储和检索容器镜像的存储器,从注册表中将容器镜像下载或提取到本地镜像,用于运行容器)

vim /etc/containers/registries.conf#unqualified-search-registries =["registry.fedoraproject.org","registry.access.redhat.com", "registry.centos.org", "docker.io"]  注释掉此行
unqualified-search-registries = ["docker.io"]  指定镜像源域名(前缀),也可以指定指定镜像源[[registry]]prefix = "docker.io"                        定义镜像源的前缀location = " registry.docker-cn.com"        配置镜像加速器(Docker中国官方镜像源)insecure = true                             允许未加密的HTTP以及使用不受信任的证书的TLS连接
  1. prefix是拉取镜像的时候指定的镜像前缀,location是获取镜像的地址(真正的镜像源)
  2. 如果不指定prefix,则prefix默认和location一致
  3. prefix的所对应的值需要在unqualified-search-registries中存在
  4. 允许通过http协议获取镜像一般用于私有化部署/内网测试环境下
  5. 通过registry配置镜像源时只可以配置一个镜像源

配置多个中国区的源

vim /etc/containers/registries.conf#unqualified-search-registries =["registry.fedoraproject.org","registry.access.redhat.com", "registry.centos.org", "docker.io"]  注释掉此行
unqualified-search-registries = ["docker.io"][[registry]]
prefix = "docker.io"
location = " registry.docker-cn.com "  配置Docker中国官方镜像源
insecure = true[[registry.mirror]]
location = "hub-mirror.c.163.com"      配置阿里镜像源
insecure = true
[[registry.mirror]
location = " https://dev.aliyun.com "  配置网易镜像源
insecure = true
  1. 配置多个镜像地址是通过registry.mirror配置多个镜像地址,前提是至少有一个[[registry]]配置
  2. 拉取镜像时无论选用哪个镜像前缀,都会按照[[registry.mirror]]的上下顺序去拉取镜像,最后才会匹配上[[registry]]里的prefix对应的location位置去拉取镜像

查看padman信息

podman info

创建容器相关命令

podman login registry.docker-cn.com     登录容器镜像源

podman search registry.docker-cn.com/   搜索整个镜像源有哪些镜像(拉取镜像时先查看镜像)
podman search nginx                   搜索镜像源是否有nginx镜像

podman pull nginx                        拉取nginx镜像
podman pull镜像ID:latest           通过指定镜像源拉取最新镜像


podman images                         查看已经下载的镜像
podman inspect 镜像ID            查看镜像的详细信息


podman rmi 镜像ID                  删除镜像

podman create                         基于已经下载的镜像创建容器(并没有启用)
podman start 容器ID                启用容器
podman run                              基于已经下载的镜像直接创建并使用容器

podman ps -a                            查看所有容器

podman exec -it 容器ID /bin/bash  交互式进入到容器中执行命令
podman exec -it 容器ID cat /var/www/html/index.html  直接向容器中执行命令

podman stop 容器ID  停止容器
podman rm 容器ID   删除容器


配置rootless的容器管理

rootless的操作和root的操作是一样的,是指编写配置文件时,rootless必须要在家目录下创建相关的文件,并进行编译

配置Podman镜像源

此处我们配置私有的镜像源

通过ssh方式登录到普通用户(编写的内容同root)

mkdir – p ~/.config/containers

vim  ~/.config/containers/ registries.conf(可以直接编写,也可以从全局配置文件复制过来进行修改)
 unqualified-search-registries = ['registry.domain250.example.com']

 [[registry]]
 location = "registry.domain250.example.com"
 insecure = true
 blocked = false

管理容器镜像

登录镜像源

podman login registry.lab.example.com

搜索镜像

podman search registry.domain250.example.com/

拉取最新镜像

podman pull registry.domain250.example.com/rhel8/httpd-24:latest

查看已经下载的镜像

podman images

查看镜像的详细信息

podman inspect registry.domain250.example.com/rhel8/httpd-24

删除镜像

podman rmi registry.domain250.example.com/rhel8/httpd-24

管理容器

创建容器并启用
podman run -d --name  httpd-test -p 8081:8080 registry.domain250.example.com/rhel8/httpd-24
       -d            后台运行
       --name   容器名称
       -p        主机端口:容器端口(将容器的8080端口映射为主机的8081端口)
       registry.lab.example.com/rhel8/httpd-24  镜像名称

查看容器
podman ps  查看正在运行的容器
               -a 查看所有容器

查看容器端口
podman port -a

停止容器
podman stop httpd-test
删除容器
podman rm httpd-test

通过交互式进入到容器中执行命令
podman exec -it httpd-test /bin/bash


将容器作为systemd服务运行

并不是通过systemd来管理podman这个程序的start、stop等;而是让systemd管理某个容器的启动、停止等

可以通过systemctl start | status | stop 管理Podman容器,可以实现某个容器在开机时自启动

运行systemctl的两种模式

--system       系统级别(默认的级别)

--user          用户级别

用户级别的systemd目录(通过systemd目录下的unit文件来管理容器)

~/.config/systemd/user/ 优先级高

/usr/lib/systemd/user/   优先级低

配置普通用户来创建systemd管理的容器

直接通过ssh登录普通用户

创建systemd目录

mkdir -p .config/systemd/user/

cd  .config/systemd/user/

在目录下生成unit文件(根据正在运行的容器生成unit文件)

查看容器,并将容器运行

podman ps -a

podman start 容器ID (此处为httpd-test)

然后基于普通用户按照systemctl的服务方式创建unit文件

podman generate systemd --name httpd-test --files  --new

 podman generate system 将某个容器加入到systemd的管理范围

 --name                        要加入的应容器名称,并用此名称来命名unit文件

 --files                         在当前目录生成unit文件(即:container-httpd-test.service文件,服务名就为container-httpd-test.service)

 --new                          新生成

设置容器通过systemd方式自启动

停止并删除之前安装的容器(保证重启之前container-httpd-test.service 能够自动拉取并启用)

podman stop httpd-test

podman rm httpd-test

设置systemd服务方式的容器自启动

systemctl --user daemon-reload  重新加载systemd管理器配置

systemctl --user enable container-httpd-test.service –now  给容器设置开机自启动,并且现在也启用

查看systemd服务方式的容器状态

systemctl --user status container-httpd-test.service  查看容器服务状态

systemctl --user list-unit-files    查看systemd启动列表中关于container-httpd-test.service是否enabled状态

强制让普通用户的服务在服务器启动时启动

loginctl enable-linger wallah   强制让普通用户的服务在服务器启动时启动

loginctl show-user wallah      查看是否配置成功

这篇关于Linux Podman容器介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/504349

相关文章

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.