手把手教学-Docker Registry 搭建

1,765 阅读1分钟

前言

通过本文你将学习到以下技能:

  • 如何创建Docker本地私有镜像仓库
  • 如何推送镜像到私有仓库

非认证方式

[root@k8s-master ~]$ docker run -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry --name registry registry:2.4.1

认证方式

# opt下创建文件夹
[root@k8s-master ~]$ cd /opt && mkdir registry && mkdir /opt/registry/auth

# 创建账号密码
[root@k8s-master ~]$ docker run --entrypoint htpasswd registry:2.4.1 -Bbn owater 123456  >> /opt/registry/auth/htpasswd

# 运行
[root@k8s-master ~]$ docker run -d -p 5000:5000 --restart=always \
  --name registry \
  -v /opt/registry/auth/:/auth/ \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v /opt/registry/:/var/lib/registry/ \
  registry:2.4.1
配置信息
# 开启远程访问
[root@k8s-master ~]$ vi /usr/lib/systemd/system/docker.service

# 将以下内容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 修改成如下
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock


# 让Docker支持http上传镜像
[root@k8s-master ~]$ echo '{ "insecure-registries":["http://10.8.135.104:5000"] }' > /etc/docker/daemon.json

# 使配置生效
[root@k8s-master ~]$ systemctl daemon-reload

# 重新启动Docker服务
[root@k8s-master ~]$ systemctl restart docker

# 开启防火墙的Docker构建端口
[root@k8s-master ~]$ firewall-cmd --zone=public --add-port=2375/tcp --permanent
[root@k8s-master ~]$ firewall-cmd --reload
查看仓库镜像

非认证方式可以通过命令查看

[root@k8s-master ~]$ curl http://IP:5000/v2/_catalog

认证方式,需要界面登录 http://IP:5000/v2/_catalog

推送镜像到私有仓库

# 登录私有库
[root@k8s-master ~]$ docker login --username=[用户名] IP:5000

# 给镜像打标签,docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
[root@k8s-master ~]$ docker tag k8s-owater/kubedocker:0.0.1-SNAPSHOT 10.8.135.104:5000/k8s-owater/kubedocker:0.0.1-SNAPSHOT

# 推送私有镜像
[root@k8s-master ~]$ docker push k8s-owater/kubedocker:0.0.1-SNAPSHOT

删除镜像

# docker exec <Registry-容器名> rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名>
[root@k8s-master ~]$ docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/k8s-owater/kubedocker

# docker exec <Registry-容器名> bin/registry garbage-collect /etc/docker/registry/config.yml
[root@k8s-master ~]$ docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

本文使用 mdnice 排版