【玩转Docker容器 4】基于Docker搭建Docker私服,以及如何使用Docker私服详解
@TOC
推荐个人Docker文章,讲的非常详细
【玩转Docker容器 1】Dockerd的详解及安装【玩转Docker容器 2】基于Docker一分钟搭建完 Jdk、Mysql、Nginx、Redis、Tomcat环境
【玩转Docker容器 3】基于Docker部署SpringBoot项目
【玩转Docker容器 4】基于Docker搭建Docker私服,以及如何使用Docker私服详解
【玩转Docker容器 5】基于Docker搭建Maven私服,以及项目如何使用Maven私服详解
【玩转Docker容器 6】基于Docker构建GitLab管理代码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目
1.Nexus是什么
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。我们可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理。
2.为什么要用Docker私服私服呢?
自定义的Docker的镜像,比如你部署微服务项目,你把你的环境搭好,项目配好打包成镜像,丢到私有仓库中去,部署集群的时候直接pull下来直接使用,不需要任何配置,岂不快活,安全又快捷,一般的企业不允许将镜像放到外网,为了安全
3.基于Docker搭建Nexus构建Docker私服
1.下载nexus3的镜像
一定要是搭建了Docker的Linux环境哟,不知道的可以看我之前文章
输入:
docker pull sonatype/nexus3
复制代码
2.使用镜像启动一个容器
docker run -d --name nexus --restart=always -p 5000:5000 -p 8081:8081 sonatype/nexus3
复制代码
注:5000端口是用于镜像仓库的服务端口 8081 端口是nexus的服务端口
3.登录Nexus私服
关闭防火墙,访问http://ip:8081
Nexus启动容器稍微比较慢,等待一会即可。
注:默认账号密码为admin/admin123
妈耶,进不去,算了改密码吧
4.修改初始密码,登录Nexus私服
用户名或密码不正确,这个时候我们可以去admin.password文件中去看初始密码。
输入:(找到密码文件)
find / -name 'admin.password'
复制代码
输入:
cat 输入上面查找的文件位置获取密码
复制代码
那一串乱七八糟的就是密码。那他的登陆进去修改密码 再次登录,登录进去后他会默认让你修改用户名密码,注意俩个都是打新密码 一直下一步就好了
5.创建Docker仓库
1.创建Docker总库
默认进入了仓库配置界面,选择Blob Stores开始创建存储空间
点击蓝色的创建就ok啦
2.创建Docker存储库
点击设置界面,选择Repositories,点击Create repository,如下图所示: 选择仓库类型,这里Docker有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择docker(hosted),如下图: 注:Docker镜像仓库类型含义解释如下: hosted : 本地存储,即同docker官方仓库一样提供本地私服功能 proxy : 提供代理其他仓库的类型,如docker中央仓库 group : 组类型,实质作用是组合多个仓库为一个地址
在指定docker仓库的名称、指定一个端口用来通过http的方式进行访问仓库、勾选是否支持docker API V1,然后create repository;如图
这里就告别一段落了
6.使用当前Linux指定连接Docker私库
因为我们测试的时候不是使用加密的HTTPS进行访问,所以这里需要增加一个docker的启动参数,给他指定私库的地址,如下:
使用命令: (增加如下内容,当然也可通过启动参数增加,注意:底下是俩条命令)
vi /etc/docker/daemon.json
{
"insecure-registries":["http://120.77.0.58:5000"]
}
复制代码
注:上面的ip地址为自己linux的ip地址。另外linux命令中,vi是编辑文件,之后输入i是进入编辑模式,在添加完上面的代码后,输入esc退出编辑模式,再输入:wq保存并退出。切记5000端口要是外网可以访问的
重启docker进程:
systemctl restart docker
复制代码
查看docker信息:
docker info ,有如下输出即正常
复制代码
7.使用当前Linux登录私库
1配置仓库Realms(不配置此项无法进行login、pull、push)
需要把这俩个移动到右边去,在点击 save 保存
2.Docker输入地址进行登录
要使用私库进行上传下载需要进行登录连接到Nexus:(本机登录不需要密码)
输入地址登录:
docker login http://120.77.0.58:5000/repository/dockertest/
还有一种登录方式
docker login -u admin -p admin123 120.77.0.58:5000/repository/dockertest/
复制代码
注:上面的IP地址是自己Docker容器的linux的ip地址,另外一个为仓库名称。
登录成功
8.使用其他Linux系统连接私有Docker仓库
我这里换了一台Linux,是搭建好Docker的Linux系统
注意:也要执行第6部操作才可以,因为没有配置Https
1.指定连接私库的地址
使用命令: (增加如下内容,当然也可通过启动参数增加,注意:底下是俩条命令)
vi /etc/docker/daemon.json
{
"insecure-registries":["http://120.77.0.58:5000"]
}
复制代码
2.重启docker进程
systemctl restart docker
复制代码
3.Docker输入地址进行登录
输入地址:
docker login http://120.77.0.58:5000/repository/dockertest/
还有一种登录方式
docker login -u admin -p admin123 120.77.0.58:5000/repository/dockertest/
复制代码
9.使用当前或者其他Linux上传镜像到Docker私服
1.查看有哪些镜像
输入查看镜像命令:
docker images
复制代码
上传镜像分四步
1:登录:
docker login -u admin -p admin123 120.77.0.58:5000/repository/dockertest/
2.为镜像打标签(这里使用容器ID打标签)
docker tag 容器id 120.77.0.58:5000/redis
3.上传镜像
docker push 120.77.0.58:5000/redis
4.退出登录
docker logout 120.77.0.58:5000
复制代码
成功
10.Docker从私服下载镜像
我这里换了一台服务器,其实也可以不换,直接删除来下载可以 记住也要第六步的操作,因为没有事情ssl证书,使用http就要这样
登录:
docker login -u admin -p admin123 120.77.0.58:5000/repository/dockertest/
下载:
docker pull 120.77.0.58:5000/redis
查看镜像:
docker images
复制代码
成功