Docker-Nexus的安装使用
我们构建服务的镜像,或者是个人生成的惊险,需要仓库的管理,作为docker常用的私服镜像仓库Nexus很友好的兼容。这里个人操作了一边,用起来还是很舒服的,所以做了一下个人的笔记。
前提:
docker开启远程访问
默认情况下,docker使用守护进程Unix socket(var/run/docker.socket)来进行本地通信,而不会监听任何一个端口,因此只能在本地使用docker客户端或者使用docker API进行操作。如果想在其他主机上操作docker主机,就需要让docker守护进程开启一个Http Socket 通道,这样才能实现远程通信
$ vi /lib/systemd/system/docker.service
修改ExecStart这行参数信息
ExecStart=/usr/bin/dockerd-H tcp://0.0.0.0:2377 -H unix:///var/run/docker.sock
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service
$ sudo netstat -nptl
$ sudo curlhttp://127.0.0.1:2377/info
Nexus安装
Nexus安装依赖的JDK1.8以上版本
$ sudo tar –zxvf jdk1.8.0_171.tar.gz
$ vi /etc/profile
参数如下:
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
$ source /etc/profile
$ java –version
官网下载地址:
https://www.sonatype.com/download-oss-sonatype
下载界面Nexus使用以及安装说明文档地址:
https://help.sonatype.com/repomanager3
下载版本以及安装版本
nexus-3.16.1-02-unix.tar.gz
解压
$ tar –zxvf nexus-3.16.1-02-unix.tar.gz
配置nexux文件
$ cd /opt/nexus-3.16.1-02/bin
$ vi nexus.rc
编辑参数如下:
run_as_user="root"
nexus 设置JDK路径
$ vi nexus
编辑参数如下
INSTALL4J_JAVA_HOME_OVERRIDE=/data/jdk1.8. 0_91
不可查看日志方式启动nexus
$ ./nexus start
可查看日志方式启动,退出后进程会断掉
$ ./nexus run
配置基础信息
访问http:ip+8081
Neux默认的开启端口为8081
Nexus默认的admin用户权限为
Amdin/amdin123
Amdin权限登录界面显示:
启动界面设置Nexus信赖的http请求调用,修改docker的daemon.json配置文件
$ cd /etc
$ sudo chmod 777 –R docker 修改docker默认的文件访问权限
$ cd /etc/docker
$ vi daemon.json daemon.json文件需要手动创建,
参数配置如下
{
"insecure-registries":["192.168.57.133:8082","192.168.57.133:8081"]
}
设置maven的setting.xml配置文件信息
设置客户端连接的用户信息
maven的setting.xml配置文件信息此处的ID信息和pom.xml文件的 ${releases }的引用相互映射
releases nexus发布仓库用户名密码信息
<id>snapshots</id> nexus快照仓库用户名密码信息
docker-hub nexusd Docker仓库用户名密码信息
Nexus仓库下docker仓库的创建说明
如上所示:
各个种类的nexus仓库信息。
Docker 仓库的创建信息
Nexus用户和权限信息的配置
设置nexus用户的鉴权领域
Realems设置,不然maven或者docker的上传会报错,告诉用户权限不足。
<server>
<id>docker-hub</id>
<username>zhaieryuan</username>
<password>123456</password>
<configuration>
<email>m18761601598@163.com</email>
</configuration>
</server>
<properties>
<dockerHostIP>192.168.57.133</dockerHostIP>
<dockerRegistry>192.168.57.133:8082</dockerRegistry>
</properties>
$ sudo docker login
$ username
$ password
此处的登录时官网docker的账号信息,也可制定登录私服nexus的账号信息
<!-- Docker 镜像 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
</goals>
</execution>
</executions>
<configuration>
<dockerHost>http://${dockerHostIP}:2377</dockerHost> <imageName>${dockerRegistry}/platform/${project.artifactId}:${project.version}</imageName> <dockerDirectory>${project.basedir}/config</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include> </resource> </resources> <serverId>docker-hub</serverId>
<pushImage>true</pushImage>
<registryUrl>${dockerRegistry}</registryUrl>
</configuration>
</plugin>
imageName=仓库地址信息,构建的镜像名称和镜像的tag
tag= ${project.version}
FROM java:8
VOLUME /tmp
WORKDIR /opt/letsiot/
ADD ./agw-adapter-coap.jar ./application.jar
COPY ./gen_header /opt/letsiot COPY ./gen_ota_image.sh /opt/letsiot
COPY ./ota_config /opt/letsiot
ENV JAVA_OPTS "-Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08-Djava.net.preferIPv6Stack=true -Djava.net.preferIPv6Addresses=true -Dspring.profiles.active=product"
ENTRYPOINT java $JAVA_OPTS -jar /opt/letsiot/application.jar
$ mvn clean package –DskipTests docker:build -X
$ mvn clean package –DskipTestsdocker:build