Nexus3:
version: "3"
services:
nexus:
image: sonatype/nexus3:3.33.0
volumes:
- /home/nexus-data:/nexus-data
restart: always
ports:
- "8081:8081"
# 这两个个端口给docker私有仓库使用,在创建仓库时指定,并且在Dockers中需要添加配置 "insecure-registries": ["172.18.0.1:8082"]
- "5000:5000"
- "8082:8082"
启动Nexus3
docker-compose -f nexus3_dockerfile up -d
配置docker仓库
新建docker仓库存储
新建仓库
添加权限
配置docker
在daemon.json中添加如下配置
{
"insecure-registries": [
"local.docker.repo:8082","local.docker.repo:5000"
],
"registry-mirrors": [
"http://local.docker.repo:8082"
]
}
在本地host中添加IP映射
192.168.142.128 这个是Nexus3安装机器的IP
192.168.142.128 local.docker.repo
测试使用
登录本地docker仓库
docker login local.docker.repo:8082
Login Succeeded
查看本地镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 604d80444252 39 hours ago 117MB
将redis镜像打Tag
docker tag redis local.docker.repo:8082/reids:myreids
#查看
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 604d80444252 39 hours ago 117MB
local.docker.repo:8082/reids myreids 604d80444252 39 hours ago 117MB
仔细查看会发现,上面的两个镜像的IMAGE ID是一模一样的,这表示这两个实际上是一个镜像,打Tag只是将这个Image添加了一个远程仓库地址。
## docker inspect 604d80444252
[
{
"Id": "sha256:604d80444252dd46a4b4d35bb0226fc16e1022efcd18bf5980650f72d1cf29e5",
"RepoTags": [
"redis:latest",
"local.docker.repo:8082/reids:myreids"
],
"RepoDigests": [
"redis@sha256:cfda0458239615720cc16d6edf6bae7905c31265f218d2033c43cdb40cd59792",
"local.docker.repo:8082/reids@sha256:724ea5177e7d07426eea81233896eee4ff37f594097fcb317fac0b67508036ed"
],
"Created": "2022-06-13T20:08:18.293162564Z",
"Container": "6d8faf114f3b7db70e1440ac6969c969cbcdbf46ab2d51c718d34539cd7ce1a3",
"Config": {
"Image": "sha256:67bda0239af475f3fd8fd6d9d7d51dcb47a116600f4be2c47897280800ae1cc2",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Metadata": {
"LastTagTime": "2022-06-15T10:58:51.3346662Z"
}
}
]
通过命令docker inspect imageId查看到镜像中的RepoTags多了一行数据 “local.docker.repo:8082/reids:myreids”,这个就是本地的docker仓库,而 “redis:latest”则是默认的官方远程仓库。
将打过Tag的镜像推送到Nexus的Docker仓库
docker push local.docker.repo:8082/reids:myreids
The push refers to repository [local.docker.repo:8082/reids]
2e30f92c5d54: Pushed
6f263637b351: Pushed
6278b061fc42: Pushed
309498e524b3: Pushed
49cba0f0997b: Pushed
ad6562704f37: Pushed
myreids: digest: sha256:724ea5177e7d07426eea81233896eee4ff37f594097fcb317fac0b67508036ed size: 1573
创建自己的镜像
FROM redis:latest
构建一个自定义的tomcat镜像,需要的jdk和tomcat自行下载
WORKDIR /home
ENV CATALINA_HOME /home/tomcat/apache-tomcat-8.5.40
ENV JAVA_HOME /home/jdk/jdk1.8.0_144
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $PATH:${JAVA_HOME}/bin:${CATALINA_HOME}/bin
CMD [ "catalina.sh", "run" ]
使用上面的Dockerfile创建两个镜像
docker build -t cus:my -f Dockerfile .
[+] Building 0.1s (6/6) FINISHED
=> [internal] load build definition from Dockerfile
=> => writing image sha256:75518b6aca2c4e1cd22bec2e9815a8d851b4a7686f5c17066bd1f273077dd4a8 0.0s
=> => naming to docker.io/library/cus:my
docker build -t local.docker.repo:8082/cus:my -f Dockerfile .
[+] Building 0.1s (6/6) FINISHED
=> [internal] load build definition from Dockerfile
=> => writing image sha256:75518b6aca2c4e1cd22bec2e9815a8d851b4a7686f5c17066bd1f273077dd4a8
=> => naming to local.docker.repo:8082/cus:my
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cus my 75518b6aca2c 21 hours ago 117MB
local.docker.repo:8082/cus my 75518b6aca2c 21 hours ago 117MB
redis latest 604d80444252 39 hours ago 117MB
local.docker.repo:8082/reids myreids 604d80444252 39 hours ago 117MB
docker inspect 75518b6aca2c
从上面结果可以看到,两个镜像实际还是同一个,只是有两个不同的远程仓库地址
推送镜像
docker push local.docker.repo:8082/cus:my
The push refers to repository [local.docker.repo:8082/cus]
5f70bf18a086: Pushed
2e30f92c5d54: Layer already exists
6f263637b351: Layer already exists
6278b061fc42: Layer already exists
309498e524b3: Layer already exists
49cba0f0997b: Layer already exists
ad6562704f37: Layer already exists
my: digest: sha256:eaef54ee0c7eebc47c2bdb8cab81c33909f7c110c9e93ec94f1c1de8054eca36 size: 1779
docker push cus:my
The push refers to repository [docker.io/library/cus]
5f70bf18a086: Preparing
2e30f92c5d54: Preparing
6f263637b351: Preparing
6278b061fc42: Preparing
309498e524b3: Preparing
49cba0f0997b: Waiting
ad6562704f37: Waiting
denied: requested access to the resource is denied
官方的仓库地址推送失败了,这个是正常的,因为我没有登录且也没有权限
Original: https://www.cnblogs.com/xysgo/p/16379577.html
Author: 菜阿
Title: nexus3搭建私有Docker仓库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590911/
转载文章受原作者版权保护。转载请注明原作者出处!