Linux Podman容器介绍

news2024/9/22 3:57:45

目录

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)

yum module list | grep tools                查找此模块

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

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

podman -v                              查看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      查看是否配置成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jetpack Compose之线性布局和帧布局

概述 Compose 中的线性布局对应的是Android传统视图中的LinearLayout,不一样的地方是,Compose根据Orientation的不同又将布局分为Column和Row, Column对应传统视图LinearLayout中orientation “vertical”的情况,Row对应传统视图LinearLayout中orienta…

Redis入门学习笔记【二】Redis缓存

目录 一、Redis缓存 二、Redis使用缓存遇到的问题 2.1 数据一致性 2.2缓存雪崩 2.3 缓存穿透 2.4 缓存击穿 一、Redis缓存 数据缓存是Redis最重要的一个场景,为缓存而生,在springboot中,一般有两种使用方式: 直接通过RedisT…

helm部署相关服务过程中问题记录

在学习helm部署相关服务过程中出现一些相关问题,自己记录并供大家一起学习!!! 【问题1】部署helm 获取软件包失败 在通过wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz文件过程发现无法…

消息中间件的定义

中间件(middleware)是基础软件的一大类,属于可复用的软件范畴。中间件在操作系统软件,网络和数据库之上,应用软件之下,总的作用是为处于自己上层的应用软件提供运行于开发的环境,帮助用户灵活、高效的开发和集成复杂的…

【软考数据库】第二章 程序语言基础知识

目录 2.1 程序设计语言的基本概念2.2 程序设计语言的基本成分2.3 编译程序基本原理 前言: 笔记来自《文老师软考数据库》教材精讲,精讲视频在b站,某宝都可以找到,个人感觉通俗易懂。 2.1 程序设计语言的基本概念 程序设计语言是…

Nginx中的location规则与rewrite重写

location与rewrite的区别 rewrite :对访问的域名或者域名内的URL路径地址重写 location:对访问的路径做访问控制或者代理转发 从功能看 rewrite 和 location 似乎有点像,都能实现跳转,主要区别在于 rewrite 是在同一域名内更改获…

常见的3d bounding box标注工具

0. 简介 对于3d bounding box而言,近几年随着自动驾驶的火热,其标注工具也日渐多了起来,本篇文章不讲具体的算法,这里主要聚焦于这些开源的3d bounding box标注工具,以及他们是怎么使用的。这里借鉴了我想静静&#x…

牛客前端编程语言错题2

【语法】 名为“ctx”的变量是某个HTML5画布对象的上下文。以下代码绘制的是什么() Ctx.arc(x,y,r,0,Math.PI,true); 在给定点绘制一个矩形 从一个点到另一个点绘制一条直线 在给定点绘制一个半圆 在给定点绘制一个圆 链接:https://www.now…

分布式系统反向代理设计与正向代理

反向代理与正向代理分析 代理服务器:位于发起请求的客户端与原始服务器端之间的一台跳板服务器,代理服务器分为正向代理服务器和反向代理服务器 正向代理 :代理客户端,隐藏了真实的请求客户端,服务端不知道真实的客户…

安全响应中心 — 垃圾邮件事件报告(4.18)

天空卫士安全响应中心邮件安全小组是成都研发中心的核心部门之一。在日常工作中,对大量样本进行分析并提取规则,实现对包含垃圾内容、钓鱼内容的邮件进行检测和隔离,从而抵御对业务电子邮件的入侵,防止钓鱼邮件等隐蔽邮件威胁。其…

9. 树的进阶

9. 树的进阶 ​ 之前我们学习过二叉查找树,发现它的查询效率比单纯的链表和数组的查询效率要高很多,大部分情况下,确实是这样的,但不幸的是,在最坏情况下,二叉查找树的性能还是很糟糕。 例如我们依次往二叉…

基于tensorflow2.x的多GPU并行训练

由于最近训练transformer,在单卡上显存不够,另外一块卡上也无法加载,故尝试使用双卡并行的策略。将基本的流程、遇见的难题汇总在这里。分布策略解释 使用官方给出的tf.distribute.MirroredStrategy作为分布策略。这个策略通过如下的方式运行…

Echarts渲染行政区划,实现聚焦高亮交互

首先需要准备行政区划的JSON数据&#xff0c;可以在DataV获取省市区的JSON数据。 最终效果图 渲染地图 建立一个地图容器&#xff0c;注意要给宽高 <!-- 地图容器 --> <div id"map"></div>请求JSON数据&#xff0c;渲染地图 $(function() {var …

Ubuntu 20版本将动态ip修改为静态ip时,ping 不通网络

问题描述&#xff1a; 在对Ubuntu 20版本将动态ip修改为静态ip时&#xff0c;ping www.baidu.com ping不通了 火狐浏览器没有了网路&#xff0c;下载不了东西 一直卡在这里不动 问题出在哪里还是配置ip dns 网关的问题 如果我们在当初安装ubuntu 时&#xff0c;将网络设置成…

24年专转本想要成功我们一个怎样做

23年转本报名人数创造高峰&#xff0c; 24年转本的同学们 如何脱颖而出&#xff0c;成功转本呢&#xff1f;一、明确转本目的 转本是一场重要的考试&#xff0c;有人把转本比喻为第二次高考。面对这唯一的进入本科院校学习的机会&#xff0c;考还是不考&#xff1f; 很多同…

小六壬学习笔记

小六壬学习笔记 简介前置知识:十二地支和十二时辰适用范围起课&#xff1a;月令日时卦象 疑问&#xff1a;遇到闰月怎么办&#xff1f;禁忌数字起课法手机计算器取余数 简单解卦 简介 马前课&#xff0c;又名&#xff1a;小六壬。 小六壬历史渊源&#xff1a;https://m.sohu.c…

RXJava2的基本概念与常见操作符使用实例解析

RXJava2是什么&#xff1f;可以简单介绍一下其特点和应用场景吗&#xff1f; RXJava2是基于观察者模式和链式编程思想的异步编程库&#xff0c;它可以用来优雅地处理异步操作&#xff0c;比如网络请求、数据库查询、文件I/O等操作&#xff0c;减少了回调嵌套&#xff0c;提高了…

【LeetCode】剑指 Offer 68. 二叉树中两个节点的最低公共祖先 p326 -- Java Version

1. 题目介绍&#xff08;68. 二叉树中两个节点的最低公共祖先&#xff09; 面试题68&#xff1a;二叉树中两个节点的最低公共祖先&#xff0c; 一共分为两小题&#xff1a; 题目一&#xff1a;二叉搜索树的最近公共祖先题目二&#xff1a;二叉树的最近公共祖先 2. 题目1&#x…

目标检测 pytorch复现SSD目标检测项目

目标检测 pytorch复现SSD目标检测项目 0、简介1、模型整体框架&#xff08;以VGG16为特征提取网络&#xff09;3、默认框&#xff08;default box&#xff09;的生成--相当于Faster-RCNN中生成的anchor4、预测层的实现原理&#xff1a;5、正负样本的选取6、损失的计算原理6、以…

SpringCloud-9、Sleuth+Zipkin

先吐槽下csdn&#xff0c;编辑器不知道怎么回事&#xff0c;快捷键一下就没有&#xff0c;现在用起来糟心 --- - 这些都用不了&#xff0c;求帮助。 基本介绍 Sleuth:分布式服务跟踪组件 /ZipKin Sleuth/ZipKin-搭建链路监控实例 官网&#xff1a;GitHub - spring-cloud/s…