【推荐】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
可以看到,在本地已经存在我们刚才下载的两个镜像。
来源:oschina
链接:https://my.oschina.net/u/3992198/blog/3147706