24

四、docker 仓库(让我们的镜像有处可存)

 4 years ago
source link: http://www.cnblogs.com/quellanan/p/11796252.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

前面讲完了docker 镜像和容器,以及通过Dockerfile 定制属于我们自己的镜像,那那现在就是需要将我们自己定制的镜像存放到仓库中供他们使用。这一套流程才算是正式走完了。从获取镜像,操作镜像容器,定制镜像,上传镜像。会了这些,也算是docker 正式入门了。

上传到共有仓库

docker 官网有一个共有的仓库,大家应该都知道,和github 类似。dockehub可以管理你自己的镜像。我们需要创建一个账号用来管理。

官网: https://hub.docker.com/

我们创建好账号后,就可以在我们本机的电脑上登录到官网了。

docker login 用户名 网址

网址可以不填,默认的就是去登录官网,登录官网之后就可以上传我们自己的镜像了

docker push [OPTIONS] NAME[:TAG]
 
 eg:
 docker push quellanan/hello:1.0.0

YnmmMvv.jpg!web

我这截图是上传过一次,再上传的时候提示已经存在,说明是上传成功的。

我们可以查看一下:

docker search quellanan

N7RJN36.jpg!web

私有仓库

docker 官方提供了一个私用仓库的镜像,我们可以直接使用。docker-registry.

下载

我们先下载registry 镜像

docker pull registry

N3UfYrY.jpg!web

容器运行

docker run -d -p 5000:5000 --restart=always --name registry registry

N7jaQ3u.jpg!web

到现在我们私有仓库已经有了,现在我们如何将自己本地镜像上传私有仓库呢?

上传

首先我们需要使用docker tag 将镜像重命名,前缀需要和私用仓库一致,才能上传成功。

docker tag java:8 127.0.0.1:5000/java:8
docker push 127.0.0.1:5000/java:8

IJBFzuE.jpg!web

通过下面命令查看是否成功

docker push 127.0.0.1:5000/java:8

nuUvYjq.jpg!web

上面证明我们已经将镜像上传到我们的私有仓库了。

下载

那现在我们先将本地的镜像删除掉,然后从私服上下载镜像,看是否能够下载下来。

docker image rm 127.0.0.1:5000/java:8
 
 docker pull 127.0.0.1:5000/java:8

MfE3Aza.jpg!web

证明我们创建的私服是可以用的,但是有没有感觉有点别扭,不能想dockerhub 那样直观的查看我们私有仓库的镜像,没有可视化界面。所以接下来我们用另一个镜像来搭建我们私有仓库。

Nexus3

Nexus 是管理maven 的jar 包工具,Nexus3 支持对镜像的管理。

下载

我们先下载nexus3的镜像

docker pull sonatype/nexus3

启动

下载成功后,我们来启动对应的容器。

docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 --mount src=nexus-data,target=/nexus-data sonatype/nexus3

这里说明一下为什么要启动三个端口。8082是私有仓库,不启动的话,好像我们本地根本连不上去,一直报超时。8083为后面代理dockerhub 做准备。

QNjYfuR.jpg!web

容器启动之后我们在页面上访问

192.168.252.53:8081

可以看到我们的 nexus3的镜像已经启动成了,我们需要登录才能进行配置。网上说的用户名为admin,密码为admin123 我试了发现登录不上去。

RfEZzum.jpg!web

然后看提示说密码存放在这个位置,所以我们进入到容器。查看我们的密码。

docker ps
docker exec  -it /bin/bash
cat /nexus-data/admin.password

VZRbYzy.jpg!web

找到密码后,我们在界面登录后,会让我们修改密码。

2maqYzZ.jpg!web

配置

登录成功后,我们开始配置我们docker的私有仓库。选择Create Repostory

IzENbmu.jpg!web

选择docker(hosted)

NNnyQfU.jpg!web

配置仓库名和端口

2URRzqB.jpg!web

这些都配置好了,现在我们怎么使用这个私有仓库呢,我们在/etc/docker/daemon.json 文件中加上私有仓库的地址。

{
        "registry-mirrors": [
                "https://registry.docker-cn.com",
                "https://dockerhub.azk8s.cn"
        ],
        "insecure-registries":["192.168.252.53:8082","192.168.252.53:8083"]
}

registry-mirrors 是配置国内镜像,不需要的可以不配置。insecure-registries 就是设置我们自己的私有仓库地址。

重启

systemctl daemon-reload
systemctl restart docker

测试

现在我们来登录上我们私有仓库(密码我改成了admin123)

docker login -u admin -p admin123 192.168.252.53:8282

F3EvEvU.jpg!web

一样的我们打标签。

docker tag java:8 192.168.252.53:8082/java:8

上传

docker push 192.168.252.53:8082/java:8

Mvaymuf.jpg!web

可以看到我们已经将镜像上传的nexus 上了,我们现在在界面上看下。整个的界面就是这样的。

Uz2mUnU.jpg!web

说明我们用 nexus3 搭建的私有仓库是没有问题的。

Nexus3 代理仓库

上面我们只是配置了docker(host),这个相当于我们的私有仓库,但是我们现在使用docker login 我们自己的仓库,如果我们需要的镜像我们仓库没有,就会很麻烦,需要重新登录到共有仓库上下载下来,再上传到我们的私有仓库,那有没有办法可以一步到位呢?

下面我们就来操作一波。

docker(proxy)

上面我们已经配置好了私有仓库的不用动,下面我们来配置代理仓库,

R7juaq7.jpg!web

选择docker(proxy),name 自定义。主要的Proxy 这里需要注意一下。

https://registry-1.docker.io

zI3QZbj.jpg!web

docker(group)

端口设置8083

muUnQfE.jpg!web

将代理的和个人仓库加到group中

aeAJf2E.jpg!web

这样上面就配置好了。

番外

这篇算是马马虎虎的写完了吧,但总感觉不经如意,又不知道怎么修改,就先这样发出来吧,后续调整。

好了,就说这么多啦

后续加油♡

欢迎大家关注个人公众号 "程序员爱酸奶"

分享各种学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。

如果大家喜欢记得关注和分享哟❤

7V3aaa3.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK