「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像

手把手教你搭建镜像仓库

  • 一、选择镜像仓库
  • 二、使用 Docker 官方仓库
    • 1. 注册账号并登录
    • 2. 创建私有仓库
    • 3. 设置私有秘钥
    • 3. 登录 Docker 仓库
    • 4. 上传镜像到 Docker 仓库
      • 4.1 选择使用的镜像
      • 4.2 使用 `docker tag` 命令打 tag
      • 4.3 将镜像上传到远程仓库
      • 4.4 查看远程仓库
      • 4.5 删除本地镜像
      • 4.6 下载远程仓库镜像到本地
    • 5. 退出 Docker 仓库
  • 三、使用阿里云镜像仓库
    • 1. 注册账号并登录
    • 2. 登录 Docker 仓库
    • 3. 上传镜像到 Docker 仓库
      • 3.1 选择使用的镜像
      • 3.2 使用 `docker tag` 命令打 tag
      • 3.3 将镜像上传到远程仓库
      • 3.4 查看远程仓库
      • 3.5 删除本地镜像
      • 3.6 下载远程仓库镜像到本地
    • 4. 退出 Docker 仓库
  • 四. 搭建本地镜像仓库
    • 1 拉取 registry 镜像文件
    • 2 启动容器运行
    • 3 验证启动情况
    • 4. 打 TAG 上传镜像到仓库
    • 5. 验证是否上传成功
    • 6. 删除本地镜像下载远程镜像
    • 7. 仓库加密
  • 五、总结


一、选择镜像仓库

1. Docker 官方仓库:https://hub.docker.com/
2. 阿里云仓库:https://cr.console.aliyun.com/cn-beijing/instances
3. 搭建本地仓库

二、使用 Docker 官方仓库

1. 注册账号并登录

进入https://hub.docker.com/,注册账号并登录

2. 创建私有仓库

2.1 进入仓库管理页面,点击 Create Repository「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第1张图片
2.2 输入仓库信息,我们选择私有仓库(官方允许创建一个免费的私有仓库使用)
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第2张图片
2.3 创建完成,我们就拥有了一个私有的 Docker 仓库
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第3张图片

3. 设置私有秘钥

「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第4张图片
3.1 选择此秘钥的操作权限,我们使用全部权限 Read,Write,Delete
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第5张图片
3.2 点击Generate,生成自己的私有秘钥
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第6张图片

3. 登录 Docker 仓库

3.1 使用 docker login -u 用户名 进行登录,密码为我们上一节获取到的私有秘钥

[root@shangliang ~]# docker login -u 你的Docker仓库用户名
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

4. 上传镜像到 Docker 仓库

4.1 选择使用的镜像

本次直接使用 hello-world 镜像

[root@shangliang ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED        SIZE
hello-world       latest    feb5d9fea6a5   8 months ago   13.3kB

4.2 使用 docker tag 命令打 tag

docker tag 镜像ID或 名称:版本号
docker tag 名称:版本号 名称:版本号

[root@shangliang ~]# docker tag feb5d9fea6a5 hello-world:v1.0
[root@shangliang ~]# docker tag hello-world:latest hello-world:v2.0
[root@shangliang ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED        SIZE
hello-world       latest    feb5d9fea6a5   8 months ago   13.3kB
hello-world       v1.0      feb5d9fea6a5   8 months ago   13.3kB
hello-world       v2.0      feb5d9fea6a5   8 months ago   13.3kB

为远程仓库创建一个用户验证上传功能镜像
docker 默认使用 docker.io 仓库,使用该仓库不需要增加地址参数
docker tag 本地镜像名称:版本号 仓库账号/远程仓库名称:版本号

[root@shangliang ~]# docker tag hello-world:v1.0 shlycsd/hub_docker:v1.0
[root@shangliang ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED        SIZE
shlycsd/hub_docker   v1.0      feb5d9fea6a5   8 months ago   13.3kB

4.3 将镜像上传到远程仓库

使用 docker push 命令上传镜像到远程服务器

[root@shangliang ~]# docker push shlycsd/hub_docker:v1.0
The push refers to repository [docker.io/shlycsd/hub_docker]
e07ee1baac5f: Mounted from library/hello-world
v1.0: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525

4.4 查看远程仓库

远程仓库已经有我们上传的 hub_docker:v1.0 版本
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第7张图片

4.5 删除本地镜像

[root@shangliang ~]# docker rmi shlycsd/hub_docker:v1.0
Untagged: shlycsd/hub_docker:v1.0
Untagged: shlycsd/hub_docker@sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4

4.6 下载远程仓库镜像到本地

使用 docker pull 命令下载远程仓库的镜像

[root@shangliang ~]# docker pull shlycsd/hub_docker:v1.0
v1.0: Pulling from shlycsd/hub_docker
Digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4
Status: Downloaded newer image for shlycsd/hub_docker:v1.0
docker.io/shlycsd/hub_docker:v1.0
[root@shangliang ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED        SIZE
shlycsd/hub_docker   v1.0      feb5d9fea6a5   8 months ago   13.3kB

成功完成镜像的上传与下载

5. 退出 Docker 仓库

退出登录命令:docker logout

[root@shangliang ~]# docker logout
Removing login credentials for https://index.docker.io/v1/

三、使用阿里云镜像仓库

1. 注册账号并登录

1.1 进入https://cr.console.aliyun.com/cn-beijing/instances,注册账号并登录
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第8张图片
1.2 首先创建一个命名空间
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第9张图片
1.3 创建镜像仓库,选择我们刚创建的命名空间,输入仓库信息
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第10张图片
代码源使用本地仓库,后续我们通过命令行推送镜像到镜像仓库。
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第11张图片
1.4 获取镜像仓库信息
主要获取两个地址,一个是登录使用的地址,另一个是远程仓库地址
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第12张图片
1.5 设置登录密码
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第13张图片

2. 登录 Docker 仓库

2.1 使用 docker login --username=用户名 登录地址 进行登录

[root@shangliang ~]# docker login --username=账号 registry.cn-beijing.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

3. 上传镜像到 Docker 仓库

3.1 选择使用的镜像

本次直接使用 hello-world 镜像

[root@shangliang ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED        SIZE
hello-world       latest    feb5d9fea6a5   8 months ago   13.3kB

3.2 使用 docker tag 命令打 tag

Docker 默认使用 docker.io 仓库地址,如非默认地址,需要增加远程仓库地址信息
docker tag 镜像ID 远程仓库地址/命名空间/镜像名称:版本号

[root@shangliang ~]# docker tag hello-world:v2.0 registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1
[root@shangliang ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED        SIZE
registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker   v1.1      feb5d9fea6a5   8 months ago   13.3kB

3.3 将镜像上传到远程仓库

使用 docker push 命令上传镜像到远程服务器

[root@shangliang ~]# docker push registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1
The push refers to repository [registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker]
e07ee1baac5f: Pushed
v1.1: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525

3.4 查看远程仓库

远程仓库已经有我们上传的 ali_docker:v1.1 版本
「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像_第14张图片

3.5 删除本地镜像

[root@shangliang ~]# docker rmi registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1
Untagged: registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1

3.6 下载远程仓库镜像到本地

使用 docker pull 命令下载远程仓库的镜像

[root@shangliang ~]# docker pull registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1
v1.1: Pulling from sl_ali_docker/ali_docker
Digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4
Status: Downloaded newer image for registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1
registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker:v1.1
[root@shangliang ~]# docker images
REPOSITORY                                                  TAG       IMAGE ID       CREATED        SIZE
registry.cn-beijing.aliyuncs.com/sl_ali_docker/ali_docker   v1.1      feb5d9fea6a5   8 months ago   13.3kB
[root@shangliang ~]#

成功完成镜像的上传与下载

4. 退出 Docker 仓库

退出登录命令:docker logout

[root@shangliang ~]# docker logout registry.cn-beijing.aliyuncs.com
Removing login credentials for registry.cn-beijing.aliyuncs.com

四. 搭建本地镜像仓库

我们使用官方提供的工具docker-registry ,用于构建私有镜像仓库。

1 拉取 registry 镜像文件

当前最新版本为 2.0,默认拉取最新版本

[root@shangliang ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
2408cc74d12b: Pull complete
ea60b727a1ce: Pull complete
c87369050336: Pull complete
e69d20d3dd20: Pull complete
fc30d7061437: Pull complete
Digest: sha256:bedef0f1d248508fe0a16d2cacea1d2e68e899b2220e2258f1b604e1f327d475
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest

2 启动容器运行

默认端口 5000,可以通过参数 -e REGISTRY_HTTP_ADDR=0.0.0.0:8888 更改端口

[root@shangliang ~]# docker run -p 5000:5000 -d --restart=always --name registry2 registry:latest
3fcee330513345a49672e385e598c00f7b6bfad57221450c4bee522f62164a52

3 验证启动情况

启动成功,返回 json 串 {"repositories":[]}

[root@shangliang ~]# curl http://localhost:5000/v2/_catalog
{"repositories":[]}

4. 打 TAG 上传镜像到仓库

[root@shangliang ~]# docker tag hello-world:v1.0 localhost:5000/hello-world:v1.0
[root@shangliang ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/hello-world v1.0 feb5d9fea6a5 8 months ago 13.3kB

5. 验证是否上传成功

可以查询到我们上传的 hello-world

[root@shangliang ~]# curl http://localhost:5000/v2/_catalog
{"repositories":["hello-world"]}

使用 curl http://localhost:5000/v2/hello-world/manifests/v1.0 查询详细信息

6. 删除本地镜像下载远程镜像

成功删除本地镜像,重新下载了远程镜像

[root@shangliang ~]# docker rmi localhost:5000/hello-world:v1.0
Untagged: localhost:5000/hello-world:v1.0
Untagged: localhost:5000/hello-world@sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4
[root@shangliang ~]# docker pull localhost:5000/hello-world:v1.0
v1.0: Pulling from hello-world
Digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4
Status: Downloaded newer image for localhost:5000/hello-world:v1.0
localhost:5000/hello-world:v1.0
[root@shangliang ~]# docker images

7. 仓库加密

设置密码,前提是使用 TLS 证书在 HTTPS 环境,当前环境不具备相应条件。
有需要的请参考官方文档配置 https://docs.docker.com/registry/deploying/#restricting-access

五、总结

本文完成从 0 到 1 的镜像仓库搭建。使用 Docker 官方镜像仓库、阿里云仓库、本地仓库 三种方式进行了镜像仓库搭建。如有问题请留言反馈!

你可能感兴趣的:(云原生,Docker,docker,云原生,容器,镜像仓库)