Podman和Docker

Podman和Docker

概念

Podman和Docker都是管理镜像、容器的工具,可以帮我们在虚拟机中快速部署好一个项目

使用Docker,我通常会先在VMware中创建一个Centos虚拟机,然后在该虚拟机中安装好docker,再给docker配置国内镜像源后续直接拉取镜像,运行成容器即可

使用Podman,我的理解中,可以直接下载Podman Desktop,然后会指引我们安装VM环境、WSL2、Podman Machine等

WLS2在这里其实就相当于Centos,Podman运行在WLS2中,Docker运行在Centos中(当然Centos中也可以安装Podman,WLS2中也可以安装docker,只是这样更方便顺手)

Podman Machine让我们可以通过Windows控制WLS2(包括Podman Desktop关联WLS2中的Podman,直接在Windows终端控制WSL2)

使用Podman Desktop,可以帮我们快速启动镜像成容器,而不需要关心docker run后面的一大段内容

Docker环境部署

在已有linux虚拟机基础上:

安装docker

bash 复制代码
# 1.1 卸载旧版本(可选)
sudo yum remove -y docker \
    docker-client docker-client-latest \
    docker-common docker-latest \
    docker-latest-logrotate docker-logrotate docker-engine

# 1.2 安装依赖 & 官方 yum 源
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 1.3 安装并启动
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker

# 1.4 验证
docker version          # 能看到 Server 信息即安装成功

配置镜像源

bash 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub-mirrors.c.163.com",
    "https://mirror.baidubce.com"
  ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

拉取镜像

bash 复制代码
docker pull rabbitmq:3.12-management   # 标签可换成最新版本
docker images | grep rabbitmq          # 确认已拉取

运行成容器

bash 复制代码
docker run -d --name rabbitmq \
  -p 5672:5672 -p 15672:15672 \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=123456 \
  --restart=always \
  rabbitmq:3.12-management

# 查看状态
docker ps | grep rabbitmq

浏览器访问 http://<主机IP>:15672,用户名/密码即为上面设置的 admin / 123456

Podman环境部署

确保安装好了Podman Desktop,并且已经装好了Podman Machine、WSL2、Podman

在安装Podman Desktop时,按照引导逐步安装就好了

可以打开Podman Desktop来查看:

能看到Podman Machine正在运行即可

然后就已经可以尝试拉取镜像了,但因为我们的初始注册表(镜像源)都是国外的:

因此很大概率无法拉取到镜像,此时就需要配置国内镜像源

配置国内镜像源两种方法:

  1. 图形化界面配置

    注意!!!我个人在使用图形化界面配置时,一直没用,包括在图形化界面中直接添加阿里云的国内镜像源,也都无法使用

    具体原因貌似是权限的问题,总而言之下面的图形化界面的配置,请直接跳过到在WSL终端来配置

    直接点击Add register,然后配置阿里云镜像源路径

    但这要求一定要填写账号密码

    需要到:https://cr.console.aliyun.com/

    然后拿阿里云账户全名 + 密码就可以在Podman Desktop中配置好了

    阿里云镜像源地址:https://registry.cn-hangzhou.aliyuncs.com

    然后就配置好了:

  2. 第二种方法就是在WSL终端来配置

    怎么打开WSL终端:

    先win + x打开windows终端再打开WLS终端(或者win + r输入wsl)

    需要注意:

    WSL有系统级镜像源配置文件:/etc/containers/registries.conf

    还有用户级镜像源配置文件:~/.config/containers/registries.conf

    且优先使用用户级,最好是两个都配置国内镜像源:

    复制代码
    [registries.search]
    registries = ['swr.cn-north-4.myhuaweicloud.com', 'registry.aliyuncs.com', 'hub-mirror.c.163.com', 'docker.mirrors.ustc.edu.cn', 'docker.io']

    但是很不可思议的是,当我这样配置后,我是可以直接找到我想要的镜像的

    例如使用命令:podman pull rabbitmq:management

    但是!!!如果你选择第一个,尝试拉取华为云的这个镜像,包括乃至下面阿里云的镜像等都是不行的

    因为华为云实际存放镜像的位置是:swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/rabbitmq:3.12-management

    所以选了第一个以后,根本就找不到

    这时候你可能想,那我把配置文件改为:

    复制代码
    [registries.search]
    registries = ['swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io', 'registry.aliyuncs.com', 'hub-mirror.c.163.com', 'docker.mirrors.ustc.edu.cn', 'docker.io']

    这样就能找到了吧,然而如果这样写,podman会直接报错,根本无法处理这个配置文件。。。

    所以我很困惑,到底怎么办才能拉取到我想要的镜像呢?

    如果我直接执行podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/rabbitmq:3.12-management

    确实是能拉到的

    我们可以执行podman search swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/rabbitmq --list-tags

    直接就能看到有哪些版本

    但下次呢?如果我要其他镜像呢?例如nacos

    执行podman search swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos --list-tags

    又找不到了(因为没权限),这不炸钢了吗。。。

    那我就又要去找登入、注册、找密钥等等,和阿里云一样,很麻烦

    但是我直接一拉,运行podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v2.2.3

    又成功了。。。问Ai,他说是拉取要的权限比查询的要低?那我没辙了

    然后我又尝试拉取seata的镜像,先试试podman search,是不行的,那我就试试直接拉,也要登入(这次直接拉也要权限了)

    那我去问ai,得知和阿里云一样,登入后应该就好了,然后确定是使用华为云的账号密码

    但是我登入,账号密码错误,但是ai又说就是用这个账号密码

总而言之:

当我使用podman时,遇到的问题有很多,包括镜像路径填写格式、国内一定要权限、外网连接不上等等

下面列出我能直接拉取的镜像:

podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v2.2.3

podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/rabbitmq:3.12-management

podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.1.4

然后就这样吧

但是当我拉取到这三个镜像后,在podman Desktop点两下,也确实就启动好容器,可以直接localhost访问了

r.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/rabbitmq:3.12-management

podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.1.4

然后就这样吧

但是当我拉取到这三个镜像后,在podman Desktop点两下,也确实就启动好容器,可以直接localhost访问了

所以问题就是在podman拉取镜像这里,目前我没有解决。

相关推荐
斯普信云原生组1 天前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪1 天前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人1 天前
docker compose部署kafka集群搭建
docker·容器·kafka
开心码农1号1 天前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
L1624761 天前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes
sbjdhjd1 天前
Docker | 核心概念科普 + 保姆级部署
linux·运维·服务器·docker·云原生·面试·eureka
摇滚侠1 天前
Vmvare 虚拟机安装 Linux CentOS 7 操作系统 一键安装 Docker 1Panel 一键安装 MySQL Redis OpenClaw
linux·docker·centos
comedate1 天前
【OpenClaw】 Open-WebUI Docker 部署连接本地 Ollama 技术文档
docker·ollama·openwebui·openclaw
川trans1 天前
基于 Docker & K8s 的 MySQL 容器化部署与应用关联实践
mysql·docker·kubernetes
BullSmall1 天前
Prometheus 可以监控docker 部署的Nginx 吗?
nginx·docker·prometheus