
商业公司的Docker 镜像, 不能完全依赖于Docker 公司的DockerHub 镜像库, 一定要搭建自己公司的镜像库,公司这里使用Nexus3 搭建了自己的私有库, 目前可以存储Java、NodeJs、Docker的build产品以及依赖库。本篇主要讲述如何在Docker 中配置公司的Nexus3 私有仓库。
在公司层面的Docker 使用方面, Docker 镜像管理(Image) 是一个重要的方面, 公司的产品,如果打包成Docker 镜像, 就一定不能发布到公司的私有Docker 镜像仓库中, 目前公司的私有镜像仓库采用的是Nexus3 OSS 版, 请参照本文档配置开发、运维人员的Docker 环境
说明:
以下文档中提到的xde***c.com,以及ip 1x.xx.xx.xx, 这两个是对应的关系, 域名xde***c已经指向了ip 1x.xx.xx.xx。
一、安装Nexus,并初次启动Nexus这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包。下载地址:http://www.sonatype.org/nexus/go。

这里选择War, 然后放到Tomcat 容器即可。
初次启动之后,你可以在浏览器上访问nexus这个maven管理器
地址:http://localhost:8081/
当然,你可以使用默认的用户登录。
用户名:admin
密码:admin123

此时,观看命令窗口,会有记录相关的操作记录。

正式环境下, 需要安装到Linux 环境中, 这里不再详述。
二、Nexus库信息目前公司已经安装和配置了私有Nexus3, 地址为:http://devops.xde***c.com.cn:8081
目前,已经配置完Nexus Docker 库,有两个公司自建库:

具体信息如下:
名称
地址
类型
端口
dteDockerHubProxy
http://devops.xde***c.com.cn:8081/repository/dteDockerHubProxy/
Proxy
dteHostedDocker
http://devops.xde***c.com.cn:8081/repository/dteHostedDocker/
Hosted
8083
dteDockerGroup
http://devops.xde***c.com.cn:8081/repository/dteMavenGroup/
Group
8082
后续就可以在每个开发者电脑上配置Docker集成, 以及在每个Docker项目中添加此Nexus信息,本文档系统说明如何进行配置。
三、Docker配置文件中设置私有Nexus库
配置Docker 注册信息Docker的私库能够使用HTTP或者HTTPS。Nexus 3都予以支持。本文的方式採用HTTP方式。因此须要设定docker。在docker启动前设定例如以下信息是须要的
项目
具体说明
设定对象文件
/etc/docker/daemon.json
设定内容
insecure-registries
具体配置内容:
"insecure-registries": [
"1x.xx.xx.xx:8082",
"1x.xx.xx.xx:8083"
]
在Mac中,点击Docker Desktop,选择设置,然后添加上面的内容:

配置之后,重启Docker Engine。
命令行中登录在命令行中,登录Nexus,为后续的登录生成相应的Authentication key:
# docker login -u develop 1x.xx.xx.xx:8082

注意:
登录信息保存在~/.docker/config.json中。
验证Docker 镜像从Nexus3 私有库中:
# docker pull 1x.xx.xx.xx/httpd:2.4-alpine
结果如下:

同时,可以登录Nexus3 的管理端页面的Docker 组(http://devops.xde***c.com.cn:8081/#browse/browse:dteDockerGroup),确认httpd的Docker镜像已经下载:

对于已有的Docker 镜像,也可以推送到Nexus私有库中。 例如,对于admin/lcpmodel镜像,docker hub 地址为:https://hub.docker.com/repository/docker/admin/lcpurbancarbonmodel
首先,拉取:
# docker pull admin/lcpmodel:v0.0.1
然后,使用docker tag设置一个别名,注意这里是用8083端口:
# docker tag admin/lcpmodel:v0.0.1 1x.xx.xx.xx:8083/lcpmodel:v0.0.1然后,执行push 操作:
# docker push 1x.xx.xx.xx:8083/lcpmodel:v0.0.1导入中:

最后导入的结果:

验证:

从私有库下载:
# docker pull 1x.xx.xx.xx:8083/lcpmodel:v0.0.1