搭建docker私有镜像仓库

醉酒当歌 提交于 2019-12-26 16:08:42

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

下面我们用官方提供的registry镜像来搭建私有镜像仓库。

一、环境准备

CentOS7,安装docker

二、下载镜像registry并运行

1、下载registry镜像
[root@st-113 ~]# docker pull registry
2、运行registry容器
[root@st-113 ~]# docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name myregistry registry
f6ab085dc3f31a3e7d278581398adbbd7b575164aa2b089e7200eb0631406cb3
  • -d:表示容器在后台运行
  • -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化
  • -p:映射端口,访问宿主机的5000端口就访问到registry容器的服务了
  • --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器
  • --name myregistry:创建容器命名为myregistry,可以任意命名
  • registry:要运行的镜像
3、测试

打开本地浏览器,输入10.3.2.113:5000/v2/_catalog,即可打开刚才创建的仓库:

可以看到,目前我们的仓库是一个空仓库。

三、测试镜像仓库

1、上传镜像到私人仓库
1.1下载busybox镜像
[root@st-113 ~]# docker pull busybox
1.2 为busybox镜像打标签
[root@st-113 ~]# docker tag busybox 10.3.2.113:5000/busybox:v1
1.3 上传到镜像服务器(私人仓库)
[root@st-113 ~]# docker push 10.3.2.113:5000/busybox:v1
The push refers to repository [10.3.2.113:5000/busybox]
Get https://10.3.2.113:5000/v2/: http: server gave HTTP response to HTTPS client

可以看到,报错了,这是因为需要https的方法才能上传。

解决方法是,修改下/etc/docker/daemon.json文件来解决:

{
"registry-mirrors": ["https://qrel1k8y.mirror.aliyuncs.com"],
"insecure-registries":["10.3.2.113:5000"]
}

保存后退出,并重启docker

[root@st-113 ~]# systemctl restart docker

然后再上传

[root@st-113 ~]# docker push 10.3.2.113:5000/busybox:v1
The push refers to repository [10.3.2.113:5000/busybox]
eac247cb7af5: Pushed
v1: digest: sha256:24fd20af232ca4ab5efbf1aeae7510252e2b60b15e9a78947467340607cd2ea2 size: 527

上传成功,刷新浏览器,也可以看到刚才上传的镜像:

再上传一个镜像:

[root@st-113 ~]# docker push 10.3.2.113:5000/registry:v1
The push refers to repository [10.3.2.113:5000/registry]
73d61bf022fd: Pushed
5bbc5831d696: Pushed
d5974ddb5a45: Pushed
f641ef7a37ad: Pushed
d9ff549177a9: Pushed
v1: digest: sha256:b1165286043f2745f45ea637873d61939bff6d9a59f76539d6228abf79f87774 size

浏览器查看:

用另一台主机作为客户端,再上传另一个镜像

[root@st-53 ~]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
centos                     latest              0f3e07c0138f        2 months ago        220MB
[root@st-53 ~]# docker tag centos 10.3.2.113:5000/centos:v1
[root@st-53 ~]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
10.3.2.113:5000/centos     v1                  0f3e07c0138f        2 months ago        220MB
centos                     latest              0f3e07c0138f        2 months ago        220MB
[root@st-53 ~]# docker push 10.3.2.113:5000/centos:v1
The push refers to repository [10.3.2.113:5000/centos]
9e607bb861a7: Pushed
v1: digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf size: 529

刷新浏览器,可以看到,客户端也是可以正常上传到私人镜像仓库的

2、下载私人仓库里的镜像到本地

我们准备另一台服务器,当作客户端使用。

修改下/etc/docker/daemon.json文件,内容如下:

{
"registry-mirrors": ["https://qrel1k8y.mirror.aliyuncs.com"],
"insecure-registries":["10.3.2.113:5000"]
}

2.1 先查看本地有哪些镜像
[root@st-53 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0f3e07c0138f        2 months ago        220MB


可以看到,我们本地只有一个centos镜像。

2.2 下载镜像
[root@st-53 ~]# docker pull 10.3.2.113:5000/busybox:v1
v1: Pulling from busybox
322973677ef5: Pull complete
Digest: sha256:24fd20af232ca4ab5efbf1aeae7510252e2b60b15e9a78947467340607cd2ea2
Status: Downloaded newer image for 10.3.2.113:5000/busybox:v1
10.3.2.113:5000/busybox:v1
[root@st-53 ~]# docker pull 10.3.2.113:5000/registry:v1
v1: Pulling from registry
c87736221ed0: Pull complete
1cc8e0bb44df: Pull complete
54d33bcb37f5: Pull complete
e8afc091c171: Pull complete
b4541f6d3db6: Pull complete
Digest: sha256:b1165286043f2745f45ea637873d61939bff6d9a59f76539d6228abf79f87774
Status: Downloaded newer image for 10.3.2.113:5000/registry:v1
10.3.2.113:5000/registry:v1

2.3 列出下载的镜像
[root@st-53 ~]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
10.3.2.113:5000/busybox    v1                  b534869c81f0        2 weeks ago         1.22MB
centos                     latest              0f3e07c0138f        2 months ago        220MB
10.3.2.113:5000/registry   v1                  f32a97de94e1        9 months ago        25.8MB


可以看到,在本地已经存在我们刚才下载的两个镜像。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!