📜  Docker – 私有注册表(1)

📅  最后修改于: 2023-12-03 15:00:29.805000             🧑  作者: Mango

Docker - 私有注册表

什么是Docker注册表?

Docker注册表是一个存储Docker镜像的中心位置。它使得Docker镜像可以分享和重用,以及大小更小、更高效地分发。

Docker Hub是一个公共的注册表,其中包含了很多Docker镜像。但是,在某些情况下,你可能需要使用自建的私有注册表。这可以让你存储和分享自己的Docker镜像,而不必将它们上传到互联网上。

如何配置一个私有注册表?

Docker引擎自带一个开源实现的私有注册表——Docker Registry。但是,一个完整的私有注册表系统应该包括以下组件:

  • Registry:存储和管理Docker镜像的服务
  • Web UI:提供一个Docker镜像的浏览器界面
  • Proxy Cache:缓存从远端注册表下载的镜像
  • Authentication:提供用户认证和授权服务

幸运的是,有一些第三方的开源工具可以帮助你搭建一个完整的私有注册表系统,如下所示:

  • Docker Registry
  • Harbor
  • GitLab Container Registry

为了方便本文描述采用Docker Registry实现。

安装Docker Registry

Python是唯一的外部依赖,所以,你需要先安装Python。

sudo apt-get install python

然后,使用以下命令下载Docker Registry并安装它:

git clone https://github.com/docker/docker-registry.git
cd docker-registry
sudo pip install -r requirements.txt
配置Docker Registry

继续在"dockcer-registry"目录下,创建"config.yml"配置文件。

cd config
cp config_sample.yml config.yml

现在我们需要编辑"config.yml":

version: 0.1
log:
  level: debug
  formatter: text
storage:
  filesystem:
    rootdirectory: /var/lib/docker-registry
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/docker-registry.htpasswd

在以上的配置中,我们使用"filesystem"存储方案,它将所有Docker镜像存储在本地文件系统中。如果需要使用云存储(如Amazon S3),可以根据官方文档配置。

另外,我们也配置了用户认证和授权服务。它将使用Apache htpasswd格式的文件存储用户。

创建htpasswd文件

使用以下命令创建一个新的Apache htpasswd文件,并添加用户。

sudo htpasswd -c /etc/docker-registry.htpasswd user
  • "-c"表示创建一个新的文件。
  • "/etc/docker-registry.htpasswd"是文件路径。
  • "user"是用户名。稍后将使用用户名登录Docker注册表。
运行Docker Registry

现在,我们已经完成了基本的配置,可以启动注册表了!

sudo gunicorn --access-logfile - --debug -k gevent -b 0.0.0.0:5000 -w 1 docker_registry.wsgi:application

现在可以打开浏览器,输入"http://localhost:5000/v1/search"来查看注册表是否运行成功。将看到一个类似于以下的JSON输出:

{"num_results": 0, "query": "", "results": []}
如何使用私有注册表

如果您正在使用Docker命令行界面,您可以使用以下命令将本地构建的Docker镜像上传到私有注册表中:

docker tag <image-name> localhost:5000/<image-name>
docker push localhost:5000/<image-name>

现在,您可以在私有注册表中找到您刚刚上传的镜像。

curl -X GET http://localhost:5000/v1/search?q=<image-name>
总结

私有注册表是一个有用的工具,可以让你存储和分享自己的Docker镜像,而不必将它们上传到互联网上。

在本文中,我们了解了如何使用第三方工具指南配置Docker Registry并使用私有注册表。

希望该指南对你有所帮助!