基于Linux—搭建属于自己的Docker仓库

1.依赖

        首先,你需要安装docker环境。可参考:Linux不同发行版的Docker安装

        其次,你需要准备一台自己的Linux服务器,这样可以方便你的镜像拉取和上传。


2.正文

2.1 创建文件夹

        用于存储你的仓库数据

sudo mkdir -p /opt/docker-registry/data

2.2 运行Docker仓库容器

        此命令将从Docker Hub上拉取最新的registry:2镜像,并在后台运行容器,将本地的5000端口映射到容器内的5000端口,以便其他主机可以访问该仓库

sudo docker run -d -p 5000:5000 --name registry -v /opt/docker-registry/data:/var/lib/registry registry:2

2.3 配置Docker客户端

        编辑Docker配置文件/etc/docker/daemon.json,如果该文件不存在,则创建一个新文件,并将以下内容添加到该文件中。

        此命令将允许Docker客户端向你的仓库发送未加密的HTTP请求

        注意:记得将“my-registry-domain.com”替换为你远端仓库的IP地址或域名

{
  "insecure-registries" : ["my-registry-domain.com:5000"]
}

2.4 重启Docker服务 

sudo systemctl restart docker

2.5 本地镜像推送仓库

        注意:记得将“my-registry-domain.com”替换为你的仓库的IP地址或域名

sudo docker tag <image-name> my-registry-domain.com:5000/你的镜像名称
sudo docker push my-registry-domain.com:5000/你的镜像名称

2.6 本地拉取仓库镜像

sudo docker pull 你的仓库IP或域名:5000/你的镜像名称

        注意:如果你的仓库需要身份验证,你需要先进行登录 

sudo docker login 你的仓库IP或域名:5000

3.扩展

        Docker仓库支持两种认证机制:基于HTTP基本认证(Basic Authentication)的认证和基于Token的认证(Token Authentication)。

        如果你在创建仓库时没有设置账号密码,那么默认情况下,Docker仓库将启用基于Token的认证机制。这种机制允许你在未使用用户名和密码的情况下访问仓库,而使用令牌来代替身份验证。

        如果你需要禁用令牌认证,可以按照以下步骤在仓库中启用基本认证:

        1.在Docker仓库容器中创建一个密码文件

sudo mkdir -p /opt/docker-registry/auth
sudo docker run --entrypoint htpasswd registry:2 -Bbn <username> <password> > /opt/docker-registry/auth/htpasswd

        此命令将使用registry:2镜像创建一个密码文件,并将其保存到/opt/docker-registry/auth/htpasswd。记得替换“<username>”和“<password>”


        2.停止并删除原来的Docker仓库容器,并创建一个新的容器,以启用基本认证

sudo docker stop registry
sudo docker rm registry
sudo docker run -d \
  -p 5000:5000 \
  --name registry \
  --restart always \
  -v /opt/docker-registry/data:/var/lib/registry \
  -v /opt/docker-registry/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  registry:2

猜你喜欢

转载自blog.csdn.net/qq_33351639/article/details/129819131