栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Podman介绍 & 常用命令

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Podman介绍 & 常用命令

  1. 所属概念?容器工具
  2. 概念的目的?创建,运行,管理容器
  3. 工具是如何实现所属概念的?Podman的创建旨在完全替代Docker。用Docker能完成的东西,Podman和它的兄dei儿姐妹们都能完成。对Podman的介绍和与Docker的对比见下文:

Podman介绍
  • Podman背景
  • Podman vs Docker
  • Podman常用命令锦集
    • 初始化
    • 登入登出
    • 新建容器相关
    • 运行相关
    • 挂载相关
    • 镜像相关

Podman背景

Podman是红帽公司提供并维护的容器工具集合的其中一个。Podman的官方文档原话 What is Podman? Simply put: alias docker=podman

红帽提供的容器工具集

  • Podman:Pod和容器管理器 --> 用来代替docker(因为docker需要docker daemon才能跑)。通常执行tag,push,pull镜像
  • Buildah:镜像生成器
  • Skopeo:使用远程镜像数据库 - 检索信息、图像、签署内容。通常执行copy,delete,review镜像
  • Runc:容器运行器和特性构建器,并传递给Podman和Buildah
  • Crun:可选Runtime,为Rootless容器提供更大的灵活性、控制和安全性

Podman是在Linux系统运行的。Mac和Windows用户可以通过podman machine init去初始化一个Linux的虚拟机,然后通过ssh使用Podman的服务。


Podman vs Docker
PodmanDocker
Daemon不需要需要Docker Daemon才能运行容器,一旦Docker Daemon死亡,所有容器都会被停掉
权限可选,可以用root或者非root的用户进行Podman的操作不用所有都用root,因此也更安全,所有Docker的操作都必须由root用户执行
构建镜像需要它的兄dei儿Buildah帮忙自己可以解决
小结:Podman 模块化的工具集中的一种,和他的兄dei儿各自负责不同的工作Docker整合了所有功能的大型工具


图片来自这里


Podman常用命令锦集 初始化
CommandDescription
podman machine init初始化初始化一个可以运行容器的Linux 虚拟机。
podman machine start启动虚拟机
podman system connection list列出 Podman 服务的目的地
登入登出
CommandDescription
podman login quay.io登入镜像数据库quay.io
podman logout --alllogout for alle
新建容器相关
CommandDescription
podman search ubi查找含有 "ubi"的镜像(前提是已经成功登入镜像数据库quay.io)
podman pull quay.io/ubi下载镜像
podman images查看所有本地镜像
podman run ubi --name MyContainer echo "hello world"从镜像ubi中新建一个名为myContainer的容器。并在容器中执行命令 echo (默认工具是 /bin/bash)。该容器在你用Ctrl+C终止命令的时候也会同时停掉
-d: 分离模式。即就算命令被中柱,容器还是在跑
-it: 交互模式,即直接进入容器的命令行工具
-p 8080: 将容器暴露到本地的8080端口
-e: 在创建容器时使用环境变量,注意每个环境变量之前都要有一个单独的-e。举例:-e DB_NAME=test_db -e DB_USER=user -e DB_PW=mypa55
podman port MyContainer查看容器myContainer的端口
podman port -a查看所有端口
podman ps查看所有在运行的容器
--format "{{.ID}} {{.Image}} {{.Names}}": 定义输出格式.
运行相关
CommandDescription
podman exec -it MyContainer /bin/bash进入容器的命令行工具(前提是容器正在运行)
除了 /bin/bash, 我们也可以跑其他的,比如mysql, echo "xx",print $ENV_VAR等,举例:
mysql items -e "SELECT * FROM Item"
mysql -uuser1 -h127.0.0.1 -pmypa55 -P13306 items -e "SELECt * FROM Item"
podman logs MyContainer打印容器myContainer的日志
podman cp /user/chuying/document/db.sql mysql://将文件db.sql从本地复制到容器内
podman container prune删除没有在运行的容器
podman stop MyContainer暂停容器myContainer的运行
podman restart MyContainer重新运行容器myContainer
podman rm MyContainer删除容器myContainer(前提是该容器已经停止运行)
挂载相关
CommandDescription
sudo semanage fcontext -a -t container_file_t '/home/student/local/mysql(/.*)?'使用正确的 SELinux 上下文和权限设置目录
semanage: 用于配制SElinux元素
fcontext: file-context mapping definition
-a: 添加fcontext-type
-t: SELinux type
sudo restorecon -Rv /home/student/local/mysql应用SELinux 政策
restorecon: 恢复 SELinux Context
-r: 目录递归
ls -ldZ /home/student/local/mysql查看context_type
podman unshare chown -R 27:27 /home/student/local/mysql修改文件所有权, UID=217
podman run -v /home/student/dbfiles:/var/lib/mysql rhmap47/mysql将本地文件挂载到容器上
镜像相关
CommandDescription
podman save -o ubi.tar quay.io/ubi将quay.io下的 ubi镜像保存成本地文件ubi.tar(前提是已经成功登入镜像数据库quay.io)
podman load -i ubi.tar从本地文件ubi.tar加载镜像ubi
podman rmi ubi删除镜像 ubi(前提是所有使用该镜像的容器都已经停止运行,并已删除)
podman rmi -a删除所有镜像
--force: 强制删除(就算还有在使用该镜像的容器,也可以删除,但不建议这么做)
podman image prune删除没有被使用的镜像
podman diff MyContainer查看容器修改了什么
podman commit MyContainer MyImage基于容器MyContainer创建映像MyImage
-a: 作者信息
--message: 添加commit的信息
podman build --layers=false -t MyImage ./container-folder用Containerfile创建镜像MyImage
podman tag MyImage quay.io/${QUAY_USER}/MyImage将MyImage重命名为 quay.io/${QUAY_USER}/MyImage
podman push quay.io/${QUAY_USER}/MyImage将镜像quay.io/${QUAY_USER}/MyImage发布到镜像数据库quay.io中
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号