什么是 Docker?
Docker 是一个开源的应用容器引擎,属于 Linux 容器的一种封装,Docker 提供简单易用的容器使用接口,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 是目前最流行的 Linux 容器解决方案,即使 Docker 是目前管理 Linux 容器的一个非常方便的工具,但它也有两个缺点:
Docker 需要在你的系统上运行一个守护进程。
Docker 是以 root 身份在你的系统上运行该守护程序。
这些缺点的存在可能有一定的安全隐患,为了解决这些问题,下一代容器化工具Podman 出现了 。
什么是 Podman?
Podman是一个由 RedHat 公司推出的无守护程序的容器引擎,用于在Linux系统上开发,管理和运行OCI容器,
Podman是一个无守护进程的开源 Linux 原生工具,旨在使用开放容器倡议 ( OCI )容器和容器映像轻松查找、运行、构建、共享和部署应用程序。
优点:可以由 非root用户运行
Podman 是一个开源的容器运行时项目
Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。
docker和podman启动方式不同
启动容器的方式不同:
docker cli 命令通过API跟 Docker Engine(引擎)交互告诉它我想创建一个container,然后docker Engine才会调用OCI container runtime(runc)来启动一个container。这代表container的process(进程)不会是Docker CLI的child process(子进程),而是Docker Engine的child process。
Podman是直接给OCI containner runtime(runc)进行交互来创建container的,所以container process直接是podman的child process。
因为docke有docker daemon,所以docker启动的容器支持--restart策略,但是podman不支持,如果在k8s中就不存在这个问题,我们可以设置pod的重启策略,在系统中我们可以采用编写systemd服务来完成自启动
安装 Podman
安装
[root@rzk ~]# sudo yum -y install podman
查看版本
[root@rzk opt]# podman -v
podman version 3.3.1
安装nginx
搜索nginx
[root@rzk opt]# podman search nginx
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/library/nginx Official build of Nginx. 16062 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker con... 2105 [OK]
docker.io docker.io/nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 56
docker.io docker.io/nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo... 59
docker.io docker.io/nginxdemos/hello NGINX webserver that serves a simple page co... 81 [OK]
docker.io docker.io/nginx/nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and NGIN... 22
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of... 819 [OK]
docker.io docker.io/privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al... 61 [OK]
docker.io docker.io/jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 148 [OK]
docker.io docker.io/mailu/nginx Mailu nginx frontend 10 [OK]
docker.io docker.io/jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho... 303
docker.io docker.io/linuxserver/nginx An Nginx container, brought to you by LinuxS... 161
docker.io docker.io/wodby/nginx Generic nginx 1 [OK]
docker.io docker.io/nginxproxy/nginx-proxy Automated Nginx reverse proxy for docker con... 33
docker.io docker.io/schmunk42/nginx-redirect A very simple container to redirect HTTP tra... 19 [OK]
docker.io docker.io/centos/nginx-112-centos7 Platform for running nginx 1.12 or building ... 16
docker.io docker.io/staticfloat/nginx-certbot Opinionated setup for automatic TLS certs lo... 25 [OK]
docker.io docker.io/ansibleplaybookbundle/nginx-apb An APB to deploy NGINX 3 [OK]
docker.io docker.io/tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp... 148 [OK]
docker.io docker.io/alfg/nginx-rtmp NGINX, nginx-rtmp-module and FFmpeg from sou... 112 [OK]
docker.io docker.io/centos/nginx-18-centos7 Platform for running nginx 1.8 or building n... 13
docker.io docker.io/sophos/nginx-vts-exporter Simple server that scrapes Nginx vts stats a... 7 [OK]
docker.io docker.io/flashspys/nginx-static Super Lightweight Nginx Image 11 [OK]
docker.io docker.io/bitwarden/nginx The Bitwarden nginx web server acting as a r... 12
docker.io docker.io/webdevops/nginx Nginx container 9 [OK]
拉取镜像
[root@rzk opt]# podman pull docker.io/library/nginx
运行nginx
--name "你要该什么名" "镜像名"
[root@rzk opt]# podman run -t -d -p 8221:80 --name nginx docker.io/library/nginx
4636fa10587ff273e0c66d5ff5404014799f22f765be8f3d58a67de86ba635