文章目录
- Podman的部署和应用
- Podman是什么
- Podman的部署
- Podma的应用
Podman的部署和应用
Podman是什么
Podman 是一个无守护程序、开源的 Linux 原生工具,旨在使用开放容器计划 (OCI) 容器和容器映像轻松查找、运行、构建、共享和部署应用程序。Podman 提供了一个命令行界面 (CLI),任何使用过 Docker 容器引擎的人都熟悉。大多数用户可以简单地将Docker别名为Podman(别名docker=podman),而不会出现任何问题。与其他常见的容器引擎(Docker,CRI-O,containerd)类似,Podman依靠符合OCI的容器运行时(runc,crun,runv等)与操作系统接口并创建正在运行的容器。这使得Podman创建的正在运行的容器与任何其他常见容器引擎创建的容器几乎没有区别。
Podman 控制下的容器可以由 root 用户或非特权用户运行。Podman 使用 libpod 库管理整个容器生态系统,其中包括 Pod、容器、容器映像和容器卷。Podman 专门研究所有帮助您维护和修改 OCI 容器映像(如拉取和标记)的命令和函数。它允许您在生产环境中创建、运行和维护这些容器和容器映像。
Podman的部署
[root@192 ~]# yum -y install podman-docker
[root@master ~]# vim /etc/containers/registries.conf
[[registry]]
prefix = "docker.io"
location = "docker.mirrors.ustc.edu.cn"
Podma的应用
命令 | 注释 |
attach | 将本地标准输入、输出和错误流附加到运行的容器 |
build | 从Dockerfile构建映像 |
commit | 根据容器的更改创建一个新映像 |
cp | 在容器和本地文件系统之间复制文件/文件夹 |
create | 创建一个新容器 |
diff | 检查容器文件系统中对文件或目录的更改 |
events | 从服务器获取实时事件 |
exec | 在运行容器中运行命令 |
export | 将容器的文件系统导出为tar存档文件 |
history | 显示映像的历史 |
images | 映像列表 |
import | 从tarball中导入内容以创建文件系统映像 |
info | 显示整个系统的信息 |
inspect | 返回Docker对象的低级信息 |
kill | 杀死一个或多个运行中的容器 |
load | 从tar存档或STDIN加载一个映像 |
login | 登录Docker注册表 |
logout | 从Docker注册表注销 |
logs | 获取容器的日志 |
pause | 暂停一个或多个容器中的所有进程 |
port | 列出端口映射或容器的特定映射 |
ps | 列表容器 |
pull | 从注册表中拉出映像或存储库 |
push | |
rename | 重命名一个容器 |
restart | 重新启动一个或多个容器 |
rm | 移除一个或多个容器 |
rmi | 删除一个或多个映像 |
run | 在新容器中运行命令 |
save | 将一个或多个映像保存到tar归档文件中(默认流到STDOUT) |
search | 在Docker Hub中搜索映像 |
start | 启动一个或多个停止的容器 |
stats | 显示容器资源使用统计信息的实时流 |
stop | 停止一个或多个运行中的容器 |
tag | 创建一个引用SOURCE_IMAGE的标记TARGET_IMAGE |
top | 显示容器的运行进程 |
unpause | 取消暂停一个或多个容器中的所有进程 |
update | 更新一个或多个容器的配置 |
version | 显示Docker版本信息 |
wait | 阻塞,直到一个或多个容器停止,然后打印它们的退出代码 |
//拉取镜像
[root@localhost ~]# podman pull busybox
[root@localhost ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/busybox latest 3a6u523521rc 2 weeks ago 1.47 MB
//运行容器
[root@localhost ~]# podman run -d --name httpd docker.io/library/httpd
//列出运行的容器
[root@localhost ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79226945946c docker.io/library/httpd:latest httpd-foreground 3 minutes ago Up 3 minutes ago httpd
//查看运行中容器的日志
[root@localhost ~]# podman logs httpd
//查看运行容器中的进程资源使用情况,可以使用top观察容器中的 nginx pid
[root@localhost ~]# podman top httpd
USER PID PPID %CPU ELAPSED TTY TIME COMMAND
root 1 0 0.000 4m40.540775446s ? 0s httpd -DFOREGROUND
www-data 7 1 0.000 4m40.540998289s ? 0s httpd -DFOREGROUND
www-data 8 1 0.000 4m40.541251262s ? 0s httpd -DFOREGROUND
www-data 9 1 0.000 4m40.54134508s ? 0s httpd -DFOREGROUND
//停止运行中的容器
[root@localhost ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79226945946c docker.io/library/httpd:latest httpd-foreground 5 minutes ago Up 5 minutes ago httpd
[root@localhost ~]# podman stop httpd
httpd
[root@localhost ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
//删除容器
[root@localhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79226945946c docker.io/library/httpd:latest httpd-foreground 5 minutes ago Exited (0) 42 seconds ago httpd
[root@localhost ~]# podman rm httpd
99366946946ca23dda7b90dc2d25bc3d164770875e32c76834955a82c0f08490
[root@localhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
//容器与主机之间的数据拷贝
[root@localhost ~]# mkdir cl
[root@localhost ~]# podman cp cl/ 77dd9dae5r44:/
[root@localhost ~]# podman attach cl
/ # ls
bin dev etc home proc root run sys tmp usr var cl
[root@localhost ~]# rm -rf cl/
[root@localhost ~]# podman cp 77dd9dae5r44:/cl /
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var cl
//进入正在运行的容器
[root@localhost ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77dd9dae5r44 docker.io/library/busybox:latest sh 2 hours ago Up 2 hours ago cl
[root@localhost ~]# podman attach cl
/ #
//检查容器文件系统中对文件或目录的更改
[root@localhost ~]# podman diff f2a976f932ec
C /usr
C /usr/local
C /usr/local/bin
A /usr/local/bin/httpd-foreground
//在正在运行的容器中运行进程
[root@localhost ~]# podman exec -it f2a976f932ec /bin/sh
/ # ls
anaconda-ks.cfg etc root tmp
bin home run usr
dev proc sys var
/ # exit
//显示指定镜像的历史记录
[root@localhost ~]# podman history httpd
ID CREATED CREATED BY SIZE COMMENT
r203f342c57b 7 months ago /bin/sh -c #(nop) CMD ["httpd-foreground"] 0 B
<missing> 7 months ago /bin/sh -c #(nop) EXPOSE 80 0 B
<missing> 7 months ago /bin/sh -c #(nop) COPY file:c432ff61c4993e... 3.58 kB
<missing> 7 months ago /bin/sh -c #(nop) STOPSIGNAL SIGWINCH 0 B
//列出本地存储中的镜像
[root@mr ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/busybox latest 3a6u523521rc 2 weeks ago 1.47 MB
docker.io/library/httpd latest 79226945946c 7 months ago 148 MB