docker和pod的关系 docker与podman

发布时间:2025-08-19 15:50

文章目录

1.Podman的简介

2.安装前准备

3.安装podman

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

5.容器的管理命令

6.对外发布容器示例

7. 容器共享卷

8.管理系统服务

转载

亚马逊云科技新用户福利!注册即抽机械键盘、无线鼠标、50元京东卡,100%有奖!名额有限,马上领取→

 https://blog.51cto.com/51ctoblog/14114129

目录

1.Podman的简介

2.安装前准备

3.安装podman

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

5.容器的管理命令

6.对外发布容器示例

7. 容器共享卷

8.管理系统服务

1.Podman的简介

linux中的容器是装应用的容器就是将软件打包成标准化单元,用于开发、交付和部署容器技术已经成为应用程序封装和交付的核心技术

优点

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

– 传统虚拟机需要给每个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.引入注册表的概念其内部包括在内的多个容器镜像源,默认的有

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 存储库中可用。

虚拟化与容器的区别

docker和pod的关系 docker与podman_docker

docker和pod的关系 docker与podman_linux_02

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

• 在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 ......1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.

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/bash1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.

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/bash1.2.3.4.5.6.7.8.9.10.11.12.

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-rqweb1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.

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

亚马逊云科技新用户福利!注册即抽机械键盘、无线鼠标、50元京东卡,100%有奖!名额有限,马上领取→

 https://blog.51cto.com/51ctoblog/14114129

本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

收藏 评论 举报

相关文章

网址:docker和pod的关系 docker与podman https://mxgxt.com/news/view/1694761

相关内容

在华为云上通过Docker容器部署Elasticsearch并进行性能评测
使用docker部署单机测试版starrocks
揭秘Kubernetes:揭秘容器编排界的明星与竞争对手的较量
小雅 Alist:影视资源合集
3.6k star, 免费开源跨平台的数据库管理工具 dbgate
社交网站的数据挖掘与分析 (原书第3 版)
2K star!三分钟搭建企业级后台系统,这款开源Java框架绝了!
数字化转型的5个关键
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
38k Star!颠覆传统BI,Metabase新一代智能数据分析工具

随便看看