搭建容器的私有库
文章目录
我们在使用容器的时候,一般都是从公有库比如:
-
docker.io
-
registry.fedoraproject.org
-
quay.io
-
registry.access.redhat.com
-
registry.centos.org 等地方进行拉取镜像的,如果有相应库的账号,也可以自己创建容器镜像推送到公有库中。 如果是不想推送到公有库中,比如公司内部使用的容器,想推送到公司自己的私有库中,那就需要自行搭建私有库。
笔者以Ubuntun 21.10下的podman为例,介绍如何搭建容器的私有库。
一、拉取registry容器
1、使用cockpit来拉取
如果系统安装了cockpit来管理容器,可以很方便地拉取,如下图所示:
Ubuntu系统可能没有公有库地址,可以参考: 配置与管理Ubuntu 21.10一文中“Podman容器”部分。
2、使用命令拉取
使用下面的命令来拉取registry镜像
1sudo podman pull registry
如果是docker就换成docker命令即可,格式是一样的
1sudo docker pull registry
podman的输出如下所示:
1witton@witton:~$ sudo podman pull registry
2Trying to pull docker.io/library/registry:latest...
3Getting image source signatures
4Copying config b8604a3fe8 done
5Writing manifest to image destination
6Storing signatures
7b8604a3fe8543c9e6afc29550de05b36cd162a97aa9b2833864ea8a5be11f3e2
使用命令
1sudo podman images
查看拉取的镜像:
1witton@witton:~$ sudo podman images
2REPOSITORY TAG IMAGE ID CREATED SIZE
3docker.io/library/registry latest b8604a3fe854 1 minutes ago 26.8 MB
3、生成密码:
生成密码时需要使用到htpasswd命令,如果没有,可以使用下面的命令来安装:
1sudo apt install apache2-utils
使用下面的命令来生成验证文件:
1htpasswd -Bbn witton 123456 >/con_registry/auth
这里直接存储到/con_registry目录,方便后面使用。
二、 运行registry镜像
1、使用cockpit运行registry
使用cockpit运行容器非常方便,如下图所示,命令一行默认就填写好了,名称会自动随机一个名字,其它的都可以不用管,直接点“运行”就好。这样运行的registry是只能在宿主机上使用容器的IP地址进行访问,如果容器IP地址发生变化,相应地使用时也需要跟着变化。同时registry存储的镜像也是保存在容器内部的,如果容器被删除,相应的镜像也会一同被删除。
所以为了使用方便,需要映射容器的端口到宿主机;同时为了安全起见需要把容器中存储镜像的地址映射到主机。
registry容器的配置文件为容器中的/etc/docker/registry/config.yml 可以在容器(名字为registry)运行起来后,使用下面的命令复制到宿主机上来查看:
1sudo podman cp registry:/etc/docker/registry/config.yml ~/
内容如下:
1version: 0.1
2log:
3 fields:
4 service: registry
5storage:
6 cache:
7 blobdescriptor: inmemory
8 filesystem:
9 rootdirectory: /var/lib/registry
10http:
11 addr: :5000
12 headers:
13 X-Content-Type-Options: [nosniff]
14health:
15 storagedriver:
16 enabled: true
17 interval: 10s
18 threshold: 3
从中可以看到镜像存储的路径为/var/lib/registry,监听的端口为5000,我们需要映射到宿主机,所以如下图所示进行填写,然后运行。
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2021/2021-11-26-搭建容器的私有库/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。