提到容器技术,大家一般都会想到Docker。Docker确实是一种非常流行的容器技术。最近升级了CentOS8,发现内置了另一种容器技术Podman。为什么官方支持Podman?其实Podman也是由RedHat开发的,自家的操作系统自然要支持自家的容器技术。今天就来体验一下Podman,看看它到底有多神奇!SpringBoot实战电商项目商城(50k+star)地址:https://github.com/macrozheng/mallPodman介绍Podman是一个开源项目,在Github上有12k+Star,可以在大多数Linux平台上使用。Podman是一个无守护进程的容器引擎,用于在Linux系统上开发、管理和运行OCI(开放容器倡议)容器和容器镜像。Podman提供了一个兼容Docker的命令行工具,只需将docker命令别名为podman即可使用,所以如果你了解Docker,就可以轻松上手Podman。安装与启动CentOS8已经内置了Podman,在CentOS7下需要自己安装,CentOS7可以使用yum命令安装Podman;yum-yinstallpodman安装成功后,使用如下命令启动podman服务。systemctlstartpodmanuse接下来我们将在Podman中运行Nginx、MySQL和SpringBoot应用,大家可以体验一下它和Docker的区别。使用如下命令下载Nginx镜像:podmanpullnginx:1.10使用Podman下载镜像时,我们可以选择不同的镜像源。如果你选择从docker.io下载,你会从DockerHub下载;由于Podman容器默认没有访问宿主机文件系统的权限,所以当你想挂载目录时,需要使用--privileged开启权限,可以使用如下命令运行nginx容器,即与docker基本相同;podmanrun-p80:80--namenginx\--privileged\-v/mydata/nginx/html:/usr/share/nginx/html\-v/mydata/nginx/logs:/var/log/nginx\-dnginx:1.10运行成功后,把我们的商城学习教程前端项目放到/mydata/nginx/html中,就可以正常访问了;运行MySQL容器与使用Docker基本相同,您可以使用以下命令运行它;podmanrun-p3306:3306--namemysql\--privileged\-v/mydata/mysql/log:/var/log/mysql\-v/mydata/mysql/data:/var/lib/mysql\-v/mydata/mysql/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7可以通过以下命令进入mysql容器,查看数据库信息;#进入mysql容器podmanexec-itmysql/bin/bash#登录mysqlmysql-proot-uroot#查看所有数据库showdatabases;感觉Podman基本上和Docker没什么区别,就像换了新皮的Docker一样;让我们尝试在Podman中运行一个SpringBoot应用程序,首先下载Docker镜像,该镜像已经上传到DockerHub:dockerpullmacrodocker/mall-tiny-boot:latest运行SpringBoot应用程序。如果想使用--link选项连接mysql容器,可惜Podman不支持,只能用IP访问mysql送达;podmanrun-p8088:8088--namemall-tiny-boot\--privileged\-espring.datasource.url='jdbc:mysql://192.168.3.106:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai'\-v/etc/localtime:/etc/localtime\-v/mydata/app/mall-tiny/logs:/var/logs\-dmacrodocker/mall-tiny-boot:latest运行成功后,可以访问SpringBoot应用的Swagger页面。访问地址为:http://192.168.3.106:8088/swa...使用podmanps命令查看所有运行的容器;使用podmanimages命令查看所有下载的镜像;如果在没有安装Docker的情况下输入docker命令,会提示安装podman-docker插件,该插件会直接将docker命令转换成podman。这是要完全取代docker吗?可视化管理CentOS8内置可视化管理工具Cockpit,内置Podman支持,直接使用即可。具体可以参考Cockpit教程打开podman容器管理,可以查看所有运行的容器和下载的镜像;还可以实时查看容器日志,重启、停止或删除容器;也可以直接进入容器执行命令,比如查看mysql容器中的数据库;也可以直接下载图片;也可以通过镜像来运行容器,使用起来还是挺方便的。PodmanVSDockerPodman和Docker的对比可以参考下表。PodmanDocker架构没有守护进程,可以在启动容器的用户下运行容器。使用守护进程来创建图像和运行容器。安全性允许容器使用无根权限。使用守护进程管理和运行容器来构建镜像,需要借助容器镜像生成器Buildah。您可以自己构建容器镜像。该概念采用模块化方法,并依靠专门的工具来完成特定的任务。一个独立的、强大的工具与大多数Dockers兼容。命令,有特殊的docker兼容插件使用它们自己的命令。总结今天体验了一个Podman,确实和Docker很像。我觉得Podman和Docker的主要区别在于是否使用守护进程来管理容器以及它们的概念。Docker强调allinone,致力于成为一个强大的工具,而Podman强调模块化,在其他工具的辅助下完成特定的任务。Docker和Podman都是优秀的容器引擎。如果您已经在项目中使用了Docker,则无需切换到Podman。如果你的项目刚刚起步,在选择技术时可以考虑Podman。项目地址https://github.com/containers...本文GitHubhttps://github.com/macrozheng/mall-learning已收录,欢迎大家Star!
