podman 容器操作(下)

简介: podman 容器操作(下)

由于清明回老家了,服务器在租房那里没带回来,所以我在自己家里的centos上安装了一个podman 3.4.4

image.png



显示容器元数据


使用 podman inspect可以显示对象的元数据

可操作的对象包括 容器(container) 、镜像(image)、网络(network)、pod、存储卷(volume)

命令分别为

podman container inspect

podman image inspect

podman network inspect

podman pod inspect

podman volume inspect



获取容器的ip地址


我们启动nginx容器

命令podman run -d --name mynginx -p 9090:80 nginx

意思为启动一个容器,并且将容器名称命名为 mynginx且将宿主机9090映射至容器的80端口


image.png


我们使用 podman container mynginx查看一下 容器的元数据信息


image.png


使用 -f可以获取指定的信息

例如: 获取名称 和 ip地址

podman container inspect -f '{{.Name}}' mynginx

podman container inspect -f '{{.NetworkSettings.IPAddress}}' mynginx



如何获取指定的信息


-f {{}}格式化输出,中编写变量,其逻辑为直接定义inspect中的信息,例如: 上述获取ip地址的逻辑为

查询 inspect 中的 NetworkSettings 中的 IPAddress , 我们将数据格式化后可得


image.png


比如,我们想获取Mac地址,-f 为: '{{.NetworkSettings.MacAddress}}'

其他资源类似,甚至你可以省略资源,只用写名称,因为podman名称是唯一的

例如:

创建一个卷命名为 mydisk,并且查看 mydisk 的元数据 和 mynginxMac 地址

image.png



挂载

之前我们使用 -v挂载卷(volume) ,其实它还可以挂载宿主机目录

我们还可以使用mount来映射整个容器的目录


挂载nginx html目录

命令

mkdir -p /root/html/
echo  'juejin pdudo test' > /root/html/index.html 
podman run -d --name mynginx2 -v /root/html:/usr/share/nginx/html -p 9091:80 nginx 
a88e38a954130f24010693cbd9867eabcd4a1de7a63612b810ef2f6edf47aa30
podman container inspect -f '{{.NetworkSettings.IPAddress}}' mynginx2


image.png

挂载成果,访问网站,成功输出 juejin pdudo test


注意事项

-v 前面参数是宿主机目录 后面参数是容器中的目录

宿主机目录需要使用绝对路径,否则podman会随机将容器中的目录给映射到宿主机上

查看挂载信息

podman inspect -f '{{.Mounts}}' mynginx2

image.png


使用 -f输出的不太好看,我们直接使用 inspect往上翻翻看

image.png


宿主机必须要绝对路径


挂载文件

这次我们将 /dev/log 挂载到 容器中,并且在容器中输出log,我们观察宿主机是否出现日志

命令

podman run --name myalpine -v /dev/log:/dev/log alpine logger 'juejin pdudo test'
journalctl | grep juejin

image.png


宿主机日志果然出现了 juejin pdudo test

所以,-v不仅能够挂载目录,还能够挂载文件(linux 一切皆文件)



将整个容器根系统映射出来

我们使用podman mount可以将整个容器文件系统挂载到宿主机上

例如如下,我们启动一个nginx容器,并且将该容器的文件系统挂载出来,我们更具挂载出来的路径,我们成功修改了容器的内文件的内容。


image.png


指定容器的IP地址

在创建容器时,可以使用--ip指定ip地址


设置nginx容器ip地址

运行nginx容器,将其地址设置为10.88.0.99


image.png




导入和导出容器


在日常工作中,我们经常有容器不经常使用,但是又必须存在的时候,为避免误操作(podman rm),我们可以打包放在本地,在需要容器的时候,我们在导入到镜像中即可。


导出容器

我们将nginx5容器给导出来

命令 podman export -o tarball名称 容器ID

我们查看容器信息


image.png



我们导出mynginx5容器

image.png


导入镜像

我们将上次导出的容器,导入到镜像中


image.png


我们可以看到,导入成功后,名称为: localhost/mynginx,我们需要的时候,直接运行就可以了。



心得体会


获取元数据

获取元数据,在日常工作中,作为排查问题非常有效,例如 之前测试 -v挂载,我宿主机忘记了写绝对路径了,导致实验结果不对,通过查询元数据才发现的。

当我们挂载了相对路径的目录后


image.png


我们查询元数据,就可以发现异常

image.png


我们挂载的宿主机的html名称,而挂载点变为了/var/lib/containers/storage/volumes/html/_data

通过这2天的学习,简而言之,如果会docker,那么入手podman简直得心应手,我使用了一圈下来,发现 podman不能说很像docker,简直是一模一样,之所以可以豪气的定义别名alias docker=podman,原来是有底气的,不得不说,运维也在卷了,说不定再过一段时间,你会看到这道面试题: "你认为Podman和Docker有什么区别? Podman优势在哪里? "。








相关文章
|
1月前
|
存储 C++ 容器
c++vector容器-赋直操作讲解
c++vector容器-赋直操作讲解
33 0
|
2月前
|
存储 安全 Java
容器【基本使用、索引操作、并集、交集、差集】(二)-全面详解(学习总结---从入门到深化)
容器【基本使用、索引操作、并集、交集、差集】(二)-全面详解(学习总结---从入门到深化)
34 0
|
1月前
|
存储 C++ 容器
list容器-大小操作讲解
list容器-大小操作讲解
16 0
|
1月前
|
C++ 索引 容器
deque容器-赋值操作讲解
deque容器-赋值操作讲解
9 0
|
1月前
|
存储 C++ 索引
C++中的string容器及字符串拼接操作讲解
C++中的string容器及字符串拼接操作讲解
19 3
|
1月前
|
Linux Shell Docker
Docker容器操作
Docker容器操作
|
1月前
|
NoSQL 应用服务中间件 nginx
【Docker】3、Docker 基本操作【容器操作】
【Docker】3、Docker 基本操作【容器操作】
26 0
|
2月前
|
存储 Python 容器
python数据容器之字典相关的操作
python数据容器之字典相关的操作
17 2
python数据容器之字典相关的操作
|
2月前
|
存储 Python 容器
python数据容器之集合相关的操作
python数据容器之集合相关的操作
19 1
|
2月前
|
存储 索引 Python
python数据容器之列表相关的操作
python数据容器之列表相关的操作
24 1

热门文章

最新文章