docker安装nexus3并创建三种私库
一、nexus3安装
1.下载nexus3的镜像
$ docker pull sonatype/nexus3
2.使用镜像启动一个容器
$ docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus3 -v /home/nexus/nexus-data:/nexus-data --restart=always sonatype/nexus3
- 8082端口是用于host镜像仓库的服务端口
- 8083端口用户group镜像仓库的服务端口
- 8081 端口是nexus的服务端口
- --name nexus3
- -v /home/nexus/nexus-data:/nexus-data 将容器内nexus-data数据文件夹挂载到宿主机/home/nexus/nexus-data目录下
- sonatype/nexus3 镜像名,如果后面不加版本号,则默认启动latest版本
这里单独说一下 --restart=always:
意思是不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
- no :容器退出时不要自动重启。这个是默认值。
- on-failure[:max-retries] : 只在容器以非0状态码退出时重启。可选的,可以退出docker daemon尝试重启容器的次数。
- always :不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
- unless-stopped :不管退出状态码是什么始终重启容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它。
启动之后我们就可以通过http://服务器IP:8081访问。默认账号密码为admin/admin123
二、Nexus3创建Docker私有仓库
1.通过浏览器访问Nexus
http://服务器IP:8081
2.登录nexus
点击右上角进行登录,通过初始用户名和密码进行登录(admin/admin123):
3.Create repository
点击设置界面,选择Repositories,点击Create repository,如下图所示:
4.选择仓库类型
这里Docker有三种类型,分别是group、hosted、proxy。选择docker(hosted),如下图:
注:Docker镜像仓库类型含义解释如下:
- hosted : 本地存储,即同docker官方仓库一样提供本地私服功能
- proxy : 提供代理其他仓库的类型,如docker中央仓库
- group : 组类型,实质作用是组合多个仓库为一个地址
4.1 创建host仓库
指定docker仓库的名称、指定一个端口用来通过http的方式进行访问仓库、勾选是否支持docker API V1,然后create repository;
4.2 创建proxy仓库
4.3 创建group仓库
5.docker服务的设定
Docker的私库可以使用http或者https,Nexus 3都予以支持,本文的方式采用http方式,因此需要设定docker,在docker启动前设定如下信息是需要的
编辑/etc/docker/daemon.json;增加如下内容,当然也可通过启动参数增加
$ vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["192.168.80.129:8082","192.168.80.129:8083"],
"disable-legacy-registry": true
}
6.重启docker进程
# 使daemon生效
$ systemctl daemon-reload
# 重启docker
$ systemctl restart docker
7.验证登录
要使用私库进行上传下载需要进行登录连接到Nexus
$ docker login http://192.168.1.111:8082
$ docker login http://192.168.1.111:8083
8.docker-proxy验证
$ docker pull 192.168.1.111:8083/redis
Using default tag: latest
latest: Pulling from redis
b0568b191983: Pulling fs layer
6637dc5b29fe: Download complete
7b4314315f15: Pulling fs layer
2fd86759b5ff: Waiting
0f04862b5a3b: Waiting
2db0056aa977: Waiting
查了一下nexus的一些问题,发现有不少都是跟blob相关,看起来相关的小的问题还有一些在不断的收拾中,但是不影响结果。 确认proxy仓库,发现pull的alpine的3.5版本已然在proxy仓库中保存完毕,所以上面的unknown blob也确实没有影响结果。
9 docker-hosted验证
查看镜像
$ docker images
tag镜像
$ docker tag hello-world:latest 192.168.1.111:8082/docker:latest
push镜像
$ docker push 192.168.1.111:8082/docker:latest