自建docker镜像发布到nexus

自建docker镜像发布到nexus

1. 搭建nexus

取之于人用之余人 , 此篇教程就用docker搭建一个nexus

进入docker hub 搜索 nexus3, 执行

docker run -d -p 8088:8081 -p 8089:8089 --name nexus sonatype/nexus3

第一个端口是nexus的默认开启端口 ,第二个用于之后docker push 发布的端口

稍等大约一分钟左右,访问 : http://192.168.0.11:8088 ,应该是可以进入nexus的首页的,第一次会提示修改一下admin用户的密码 ,这里我们就省略了~

设置完密码后,登录.右上角有一个齿轮的图标,

点击进入选择Repositories->Create Repositories -> docker (hosted)

勾选http填写8089(上面之所以开启8089端口就是因为这里,如果你不是使用docker安装的nexus 这里可以随便填),勾选完这个之后勾选下面的Enable Docker V1 API:Allow clients to use the V1 API to interact with this Repository

这样nexus的配置就完成了

2. 配置docker

输入 :  vim /lib/systemd/system/docker.service 

ExecStart后面增加 : --insecure-registry 192.168.0.11:8089\

下面是我配置的docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin

ExecStart=/usr/bin/dockerd-current --insecure-registry 192.168.0.11:8089\
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process

[Install]
WantedBy=multi-user.target

然后重启docker:

 systemctl daemon-reload
 systemctl restart docker

第一次登陆所以我们登陆增加一次缓存 (以后push pull 就不需要登陆了!)

docker login 192.168.0.11:8089

3. 推送docker镜像到nexus测试

新建一个目录专门用来测试 ,更加专业~哈哈哈

mkdir docker-files

建立一个java测试类

class Hello{
	public static void main(String[] args){
	System.out.println("This is java app \n by using Docker");
	}
}

在建立一个dockerfile

FROM java:8
COPY . /var/www/java
WORKDIR /var/www/java
RUN javac Hello.java
CMD ["java", "Hello"]

执行docker 构建命令

docker build -t java-app dockerfile .  # 一定要加上后面的`.` , 表示当前目录

给打好包的镜像增加tag

docker tag 1a8bef772ee4 192.168.0.11:8089/java-app:v1

推送到nexus

docker push 192.168.0.11:8089/java-app:v1

此时此刻 ,打开nexus查看刚才构建的仓库里面,如果增加了java-app,那么恭喜你~ 私有docker仓库已属于你


自建docker镜像发布到nexus
https://www.blaaair.com/archives/zi-jian-docker-jing-xiang-fa-bu-dao-nexus
作者
Glo6f
发布于
2022年02月11日
许可协议