提到容器技术大家个别都会想到 Docker,Docker 的确是一种十分风行的容器技术。最近降级了
CentOS 8
,发现它内置了另一种容器技术 Podman,为什么官网会加持 Podman?其实 Podman 也是 RedHat 开发的,自家的操作系统天然要反对自家的容器技术了。明天咱们来体验一把 Podman,看看它有何神奇之处!
SpringBoot 实战电商我的项目 mall(50k+star)地址:https://github.com/macrozheng/mall
Podman 简介
Podman 是一个开源我的项目,在 Github 上已有 12k+Star
,可在大多数 Linux 平台上应用。Podman 是一个无守护过程的容器引擎,用于在 Linux 零碎上开发、治理和运行 OCI(Open Container Initiative) 容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行工具,能够简略地为 docker
命令取别名为 podman
即可应用,所以说如果你会 Docker 的话能够轻松上手 Podman。
装置启动
CentOS 8
曾经内置 Podman,CentOS 7
下须要自行装置。
CentOS 7
能够应用 yum 命令装置 Podman;
yum -y install podman
- 装置胜利后应用如下命令启动 podman 服务。
systemctl start podman
应用
接下来咱们将在 Podman 中运行 Nginx、MySQL 和 SpringBoot 利用,大家能够领会下它和 Docker 的不同之处。
- 应用如下命令下载 Nginx 镜像:
podman pull nginx:1.10
- 应用 Podman 下载镜像时,咱们能够抉择不同的镜像源,抉择从
docker.io
下载就是从 DockerHub 中下载了;
- 因为 Podman 容器默认状况下没有权限拜访宿主机的文件系统,当要进行目录挂载时,须要应用
--privileged
开启权限,可应用如下命令运行 nginx 容器,根本和 docker 统一;
podman run -p 80:80 --name nginx \
--privileged \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.10
- 运行胜利后,把咱们的
mall 学习教程
前端我的项目放入/mydata/nginx/html
即可失常拜访了;
- 运行 MySQL 容器也根本和应用 Docker 一样,应用如下命令即可运行;
podman run -p 3306:3306 --name mysql \
--privileged \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
- 通过如下命令能够进入到 mysql 容器,并查看数据库信息;
# 进入 mysql 容器
podman exec -it mysql /bin/bash
# 登录 mysql
mysql -proot -uroot
# 查看所有数据库
show databases;
- 感觉 Podman 应用起来根本和 Docker 没啥两样,就像是换了皮的 Docker;
- 上面咱们在 Podman 中运行一个 SpringBoot 利用试试,先下载 Docker 镜像,该镜像曾经上传到 DockerHub 中:
docker pull macrodocker/mall-tiny-boot:latest
- 运行 SpringBoot 利用,如果你想应用
--link
选项来连贯 mysql 容器的话,很遗憾 Podman 并不反对,那就只能应用 IP 来拜访 mysql 服务了;
podman run -p 8088:8088 --name mall-tiny-boot \
--privileged \
-e spring.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 \
-d macrodocker/mall-tiny-boot:latest
- 运行胜利后可拜访 SpringBoot 利用的 Swagger 页面,拜访地址:http://192.168.3.106:8088/swa…
- 应用
podman ps
命令能够查看所有运行中的容器;
- 应用
podman images
命令能够查看所有下载的镜像;
- 如果你没有装置 Docker 而输出 docker 命令的话,会提醒你装置
podman-docker
插件,该插件会间接把 docker 命令转成 podman,这是想彻底取代 docker?
可视化治理
CentOS 8
内置的可视化管理工具 Cockpit 曾经内置了 Podman 反对,间接应用它即可,具体能够参考 Cockpit 应用教程。
- 关上
podman 容器
治理,即可查看所有运行中的容器和曾经下载的镜像;
- 还能够实时查看容器日志,重启、进行或删除容器;
- 还能够间接进入容器执行命令,比方查看 mysql 容器中的数据库;
- 也能够间接进行镜像下载;
- 还能够通过镜像来运行容器,用起来还是挺不便的。
Podman VS Docker
Podman 和 Docker 的各方面比照能够参考下表。
Podman | Docker | |
---|---|---|
架构 | 无守护过程,能够在启动容器的用户下运行容器 | 应用守护过程来创立镜像和运行容器 |
平安 | 容许容器应用 Rootless 特权 | 守护过程领有 Root 权限 |
运行容器 | 须要另一个工具来治理服务并反对后盾容器的运行 | 应用守护过程治理和运行容器 |
构建镜像 | 须要容器镜像生成器 Buildah 的辅助 | 能够本人构建容器镜像 |
理念 | 采纳模块化的办法,依附专门的工具来实现特定的工作 | 一个独立的、弱小的工具 |
应用 | 兼容大部分 Docker 命令,有专门的 docker 兼容插件 | 应用本人的命令 |
总结
明天体验了一把 Podman,的确应用起来和 Docker 十分类似。感觉 Podman 和 Docker 次要区别在于是否应用守护过程来治理容器以及它们的理念。Docker 强调 all in one
,致力于成为一款功能强大的工具,而 Podman 则更强调 模块化
,通过其余工具的辅助来实现特定工作。Docker 和 Podman 都是十分优良的容器引擎,如果你的我的项目中曾经应用了 Docker,没必要换成 Podman,如果你我的项目才起步,技术选型的时候能够思考下 Podman。
我的项目地址
https://github.com/containers…
本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!