# Docker跑官网镜像仓库Registry2

作者:Odboy (opens new window)

本站地址:https://blog.odboy.cn (opens new window)

# 什么是 Docker Registry

镜像仓库 (Docker Registry) 负责存储、管理和分发镜像, 并且提供了登录认证能力, 建立了仓库的索引。镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一 个或多个镜像, 镜像通过镜像名称和标签 (Tag)来区分

  • 镜像仓库(Registry):要从哪一个镜像仓库拉取镜像, 通常通过 DNS 或 IP 地址来确定一个镜像仓库如 hub.docker.com;一个 Registry 中可以存在多个Repository·Repository 可分为“顶层仓库”和“用户仓库”;·用户仓库名称格式为“用户名/仓库名”·每个仓库可以包含多个 Tag(标签), 每个标签对应一个镜像
  • Repository: ·由某特定的 docker 镜像的所有迭代版本组成的镜像仓库
  • 镜像名称(name) +标签(tag):如 nginx:latest
  • 认证能力:提供用户注册, 登录、登出能力
  • 索引:提供镜像的索引信息, 方便检索
  • 一个容器镜像包含了两个部分, 一个是元数据, 其实就是由 dockerfile 构建出来的描述文件, 这个描述文件会说这个容器镜像有多少层, 每一层里面有什么内容, 它的checksum 这些信息都会记录下来, 还有最终的可执行文件在哪就是在存储数据里面, 就是在一个一个的 blob 里面, 真正占有空间的就是这些 blob

# 拉取镜像

docker pull registry:2.8.3
1

# 创建用户密码

yum install -y httpd-tools
htpasswd -Bbn admin WUYPF5pB2nDGKsauLJ67 > ./htpasswd
mv ./htpasswd /root/myapps/registry/auth/
1
2
3

# 运行容器

docker run --detach  \
--name registry  \
--volume /root/myapps/registry/data/:/data  \
--volume /root/myapps/registry/auth/:/auth/  \
--volume /root/myapps/registry/registry/:/var/lib/registry/  \
-e "REGISTRY_AUTH=htpasswd"  \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Resistry Realm"  \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  \
-p 5000:5000  \
--restart always  \
--privileged=true  \
registry:2.8.3
1
2
3
4
5
6
7
8
9
10
11
12

# 常用接口(GET)

# 查看私服上有哪些镜像(免密)
http://127.0.0.1:5000/v2/_catalog
# 查看私服上有哪些镜像(登录校验)
http://127.0.0.1:5000/v2/_catalog -u admin
# 查看image_name下的tag列表
127.0.0.1:5000/v2/image_name/tags/list
1
2
3
4
5
6

# 修改配置文件以支持 Docker 受信私有仓库

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://j6dalcd1.mirror.aliyuncs.com",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries":[
    "127.0.0.1:5000",
    "registry.odboy.cn"
  ]
}
EOF

systemctl daemon-reload
systemctl restart docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 常用命令

# 一般不建议使用明文密码
docker login -u 用户名 -p 密码 127.0.0.1:5000
# 不输入密码, 回车后, 使用交互式输入密码(输入的密码不会显示)
docker login -u 用户名 -p 127.0.0.1:5000
# 不输入密码和用户名, 回车后, 使用交互式输入用户名和密码(输入的密码不会显示)
docker login 127.0.0.1:5000

# 给镜像打上 Docker Registry 的仓库标签
docker tag 镜像名称:镜像tag 127.0.0.1:5000/镜像名称:镜像tag
# 将新打标签的镜像上传镜像到仓库
docker push 127.0.0.1:5000/镜像名称:镜像tag

# 拉取镜像
docker pull 127.0.0.1:5000/镜像名称:镜像tag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
最近更新: 2024-10-11
2017 - 武林秘籍   |