前言
- 搭着玩一下
流程
docker pull sonatype/nexus3
mkdir /home/nexus && chown -R 200 /home/nexus
- 启动容器,要2个端口,如果端口冲突,改冒号前面那个,那个是映射到宿主哪个。
docker run -d -p 8081:8081 -p 8082:8082 \
--name nexus \
-v /home/nexus:/nexus-data \
--restart always \
sonatype/nexus3
- 无防火墙忽略
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8082/tcp --permanent
- 查看密码
cat /home/nexus/admin.password
-
进入前面配置端口点登录。用户是 admin
-
为了测试,可以先允许开启匿名访问。选择 Enable anonymous access ,点击下一步。
-
我们使用有权限的账号登录后,点击页面头部导航栏的 齿轮 图标,选择左侧菜单中的 Repositories ,点击 Create repository 。
-
在Nexus中,无论什么制品库,一般分为以下三种类型:
• proxy: 此类型制品库原则上 “只下载,不允许用户推送”。可以理解为缓存外网制品的制品库。例如,我们在拉取nginx镜像时,如果通过proxy类型的制品库,则它会去创建时配置好的外网docker镜像源拉取(有点像cnpm)到自己的制品库,然后给你。第二次拉取,则不会下载。起到 缓存 的作用。
• hosted:此类型制品库和proxy相反,原则上 ”只允许用户推送,不允许缓存“ 。这是私有库的核心,只存放自己的私有镜像或制品。
• group:此类型制品库用作以上两种类型的 “集合” ,将上面两个库集合为一个使用。 -
在这里,我们其实不需要缓存外网镜像,那么我们只需要 hosted类型 即可。选择 docker(hosted)。
我们将启动Nexus镜像时,配置好的 Docker 端口填入HTTP 内,可以先允许匿名拉取镜像。 -
写完成后,点击最下方的 Create repository,保存创建。
-
私服建设完成后,还需要在客户端配置一下才可以使用。
找到 daemon.json 文件,该文件描述了当前docker配置的镜像加速地址,和配置过的私服地址。
vim /etc/docker/daemon.json
- 增加字段:
{
"insecure-registries" : [
"xxxx.xxxx.xxx.xx:8082"
]
}
- nexus里有个realms 激活docker bearer token realms
systemctl restart docker
docker login 服务IP:端口
- docker在推送一个镜像时,镜像的 Tag (名称:版本号) 必须开头带着镜像库的地址,才可以推送。
# docker tag <镜像ID> 新镜像名称[:版本]
docker tag bd695e3e4317 xxx.xxx.xxx.xx:8082/local/jenkins
- push推送
docker push xxx.xxx.xxxx.xx:8082/local/jenkins