Podman下如何配置私有镜像仓库
=======================
当您在使用Podman时,您可能需要在本地运行一个私有的Registry镜像仓库来存储和管理您的镜像。在本文中,我们将介绍如何在Podman中配置并运行一个本地私有LocalRegistry镜像仓库。
配置Registry镜像仓库
首先,我们需要从Docker Hub拉取Registry映像并在本地运行它。创建的容器存储目录位于容器上的/var/lib/registry
下,为了持久化存储需要映射到在宿主机上挂载到目录/registry-data
下。
拉取Registry映像
要在Podman中配置Registry镜像仓库,我们首先需要从Docker Hub拉取Registry映像。可以使用以下命令来拉取Registry映像:
$ podman pull registry:2
禁用SELINUX
在默认情况下,Podman在运行时会启用SELINUX。如果您希望Registry容器能够正常工作,您需要禁用SELINUX。可以使用以下命令来禁用SELINUX:
$ sudo vi /etc/selinux/config
将SELINUX
的值从enforcing
更改为disabled
,然后保存并退出。
运行Registry容器
现在,我们可以运行Registry容器了。可以使用以下命令来运行Registry容器:
$ sudo podman run -d -p 5000:5000 -v /registry-data:/var/lib/registry --restart always --name localregistry registry:2
这里,我们使用-p
标志将Registry容器的5000端口映射到本地主机的5000端口上,使用-v
标志将容器的存储目录映射到本地主机上。这样,当Registry容器重新启动时,它会继续使用之前存储的镜像。
验证Registry容器
现在,我们可以验证Registry容器是否正常运行了。可以使用以下命令来查看正在运行的容器:
$ sudo podman ps
如果Registry容器已经正常运行,您将会看到一个类似于以下的输出:
[root@docker /]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55904ab9dd7a docker.io/library/registry:2 /etc/docker/regis... 3 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp localregistry
这里,我们可以看到Registry容器已经正在运行,并且已经映射到了本地主机的5000端口上。
配置本地防火墙
如果您的系统上运行着防火墙,您需要配置它以允许Registry容器的5000端口。可以使用以下命令来打开5000端口:
$ sudo firewall-cmd --add-port=5000/tcp
$ sudo firewall-cmd --runtime-to-permanent
这样,Registry容器的5000端口就已经可以被访问了。
推送镜像到Registry仓库
现在,我们已经成功地运行了Registry容器,我们可以开始推送镜像到Registry仓库了。可以使用以下命令来标记一个镜像:
$ sudo podman tag alpine localhost:5000/alpine
这里,我们将alpine
这个镜像标记为localhost:5000/alpine
,这样就能够将它推送到Registry仓库了。
然后,我们可以使用以下命令来推送镜像到Registry仓库:
[root@docker /]# podman push localhost:5000/alpine --tls-verify=false
Getting image source signatures
Copying blob 5af4f8f59b76 done |
Copying config f8c20f8bbc done |
Writing manifest to image destination
这样,alpine
新tag过的就会上传至私有仓库,通过以下命令可以查看
[root@docker /]# podman search localhost:5000/ --tls-verify=false
NAME DESCRIPTION
localhost:5000/alpine
从Registry仓库拉取镜像
现在,我们已经成功将镜像推送到了Registry仓库,我们可以从Registry仓库拉取镜像了。可以使用以下命令来拉取镜像:
[root@docker /]# podman pull localhost:5000/alpine --tls-verify=false
Trying to pull localhost:5000/alpine:latest...
Getting image source signatures
Copying blob 5da3e28c5c69 skipped: already exists
Copying config f8c20f8bbc done |
Writing manifest to image destination
f8c20f8bbcb684055b4fea470fdd169c86e87786940b3262335b12ec3adef418
这样,我们就可以使用在Registry仓库中存储的镜像了。
总结
在本文中,我们介绍了如何在Podman中配置并运行一个本地私有Registry镜像仓库,并且介绍了如何将镜像推送到私有Registry仓库以及如何从私有Registry仓库拉取镜像。