我們構(gòu)建服務(wù)的鏡像攘轩,或者是個人生成的驚險,需要倉庫的管理蜻势,作為docker常用的私服鏡像倉庫Nexus很友好的兼容撑刺。這里個人操作了一邊,用起來還是很舒服的握玛,所以做了一下個人的筆記够傍。
前提:
docker開啟遠(yuǎn)程訪問
默認(rèn)情況下,docker使用守護(hù)進(jìn)程Unix socket(var/run/docker.socket)來進(jìn)行本地通信挠铲,而不會監(jiān)聽任何一個端口冕屯,因此只能在本地使用docker客戶端或者使用docker API進(jìn)行操作。如果想在其他主機(jī)上操作docker主機(jī)拂苹,就需要讓docker守護(hù)進(jìn)程開啟一個Http Socket 通道安聘,這樣才能實現(xiàn)遠(yuǎn)程通信
$ vi /lib/systemd/system/docker.service
修改ExecStart這行參數(shù)信息
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
參數(shù)如下:
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
官網(wǎng)下載地址:
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
?編輯參數(shù)如下:
?run_as_user="root"
nexus 設(shè)置JDK路徑
$ vi nexus
?編輯參數(shù)如下
INSTALL4J_JAVA_HOME_OVERRIDE=/data/jdk1.8. 0_91
不可查看日志方式啟動nexus
$ ./nexus start
可查看日志方式啟動,退出后進(jìn)程會斷掉
$ ./nexus run
配置基礎(chǔ)信息
訪問http:ip+8081
Neux默認(rèn)的開啟端口為8081
Nexus默認(rèn)的admin用戶權(quán)限為
Amdin/amdin123
Amdin權(quán)限登錄界面顯示:
設(shè)置Nexus信賴的http請求調(diào)用,修改docker的daemon.json配置文件
$ cd /etc
$ sudo chmod 777 –R docker 修改docker默認(rèn)的文件訪問權(quán)限
$ cd /etc/docker
$ vi daemon.json?daemon.json文件需要手動創(chuàng)建瓢棒,
參數(shù)配置如下
{
?"insecure-registries":["192.168.57.133:8082","192.168.57.133:8081"]
}
設(shè)置maven的setting.xml配置文件信息
設(shè)置客戶端連接的用戶信息
此處的ID信息和pom.xml文件的 ${releases }的引用相互映射
releases???????????? nexus發(fā)布倉庫用戶名密碼信息
<id>snapshots</id>?????????????????? nexus快照倉庫用戶名密碼信息
docker-hub????????????? nexusd Docker倉庫用戶名密碼信息
Nexus倉庫下docker倉庫的創(chuàng)建說明
如上所示:
各個種類的nexus倉庫信息浴韭。
Docker 倉庫的創(chuàng)建信息
Nexus用戶和權(quán)限信息的配置
設(shè)置nexus用戶的鑒權(quán)領(lǐng)域
Realems設(shè)置,不然maven或者docker的上傳會報錯脯宿,告訴用戶權(quán)限不足念颈。
<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
此處的登錄時官網(wǎng)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=倉庫地址信息连霉,構(gòu)建的鏡像名稱和鏡像的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