乐趣区

关于java:Podman-已成-Linux-官方标配Docker-没戏了

提到容器技术大家个别都会想到 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!

退出移动版