一、實(shí)驗(yàn)背景
我們使用nexus作為項(xiàng)目中docker鏡像庫粘姜,現(xiàn)在服務(wù)器要切ARM鬓照,但是nexus官方并不提供ARM版本的docker鏡像。
我們知道孤紧,nexus本質(zhì)上是一個(gè)java服務(wù)豺裆,只需要使用ARM架構(gòu)的基礎(chǔ)鏡像和ARM架構(gòu)的jre,然后將nexus的裝包打進(jìn)去号显,就能構(gòu)建一個(gè)ARM架構(gòu)的nexus 鏡像臭猜。
鑒于手頭沒有ARM架構(gòu)的服務(wù)器躺酒,我們有x86_64 的CentOS7.5? 模擬構(gòu)建,在ARM服務(wù)器上的實(shí)現(xiàn)思路是一樣蔑歌!
二羹应、實(shí)驗(yàn)環(huán)境
操作系統(tǒng): CentOS7.5
IP:192.168.1.100
nexus 安裝包:nexus-3.16.0-01-unix.tar.gz
jre安裝包:jre-8u212-linux-x64.tar.gz
三、生成鏡像構(gòu)建文件
在宿主機(jī)
# useradd? nexus
# java -version
#? tar? -zxf? ? nexus-3.16.0-01-unix.tar.gz?
#? vim nexus-3.16.0-01/bin/nexus.rc
# ./nexus-3.16.0-01/bin/nexus? start
#? ss -tan? | grep? 8081
瀏覽器訪問: http://xx.xx.xx.xx:8081
# ./nexus-3.16.0-01/bin/nexus stop
#? tar -zcf nexus.tar.gz? nexus-3.16.0-01? sonatype-work
# cat? Dockerfile
#####################################################
FROM centos:centos7.5.1804
ENV NEXUS_VERSION="3.16.0-01" \
? ? NEXUS_BASE="/opt/nexus" \
? ? JRE_VERSION="8u212"
RUN groupadd -g 1000? nexus && \
? ? useradd -r -u 1000 -g 1000 -m -c "Nexus Repository Manager" -d ${NEXUS_BASE} -s /bin/false nexus && \
? ? mkdir -p ${NEXUS_BASE}
ADD jre-${JRE_VERSION}-linux-x64.tar.gz /usr/local/
COPY nexus.tar.gz /opt
COPY start-nexus-repository-manager.sh? /opt
RUN chown -R nexus:nexus ${NEXUS_BASE} /opt/start-nexus-repository-manager.sh
VOLUME ${NEXUS_BASE}
EXPOSE? 8081 8443
USER nexus
CMD ["sh", "-c", "/opt/start-nexus-repository-manager.sh"]
###################################################################
# cat start-nexus-repository-manager.sh
###################################
#!/bin/bash
umask 0027
JAVA_HOME="/usr/local/jre1.8.0_212"
PATH=$JAVA_HOME/bin:$PATH
nexus_base="/opt/nexus"
if [ -z "$(ls -A ${nexus_base})" ]; then
? cd /opt
? tar -zxf nexus.tar.gz -C ${nexus_base}
? chown -R nexus:nexus ${nexus_base}
? rm -rf nexus.tar.gz
fi
cd ${nexus_base}/nexus-3.16.0-01/bin
exec ./nexus run
#######################################
四丐膝、構(gòu)建鏡像
#? docker build? -f Dockerfile? -t nexus:3.16.0-01 .
# mkdir? /opt/nexus?
# chown? -R? 1000:1000? /opt/nexus
#? docker run? -it? -d? ?--name? nexus? ? -v /opt/nexus:/opt/nexus? -p 8081:8081? ? nexus:3.16.0-01
# docker logs? -f? nexus?
# ss? -tan? | grep? 8081
#? docker? rm? -f? nexus?
五、將nexus服務(wù)注冊(cè)成系統(tǒng)服務(wù)
#? vim? /etc/systemd/system/nexus.service
#######################################################
[Unit]
Description=Nexus
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm -f nexus
ExecStart=/usr/bin/docker run \
? ? --name nexus \
? ? --ulimit nofile=65536:65536 \
? ? -p 8081:8081 \
? ? -p 2020:2020 \
? ? -v /opt/nexus:
/opt/nexus \
? ? nexus:3.16.0-01
ExecStop=/usr/bin/docker stop nexus
LimitNOFILE=65535
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
#######################################################
# systemctl? daemon-reload
# systemctl? start nexus
# systemctl? enable? nexus
# systemctl? status? nexus
瀏覽器訪問:http:/xx.xx.xx.xx:8081
六钾菊、參考?
nexus鏡像的安全加固
http://www.reibang.com/p/54b460724d95
用nexus3.5搭建docker私有倉庫
http://www.reibang.com/p/7a7db54a538f
用nexus3.x 官方鏡像搭建docker私有鏡像倉庫
http://www.reibang.com/p/86e573f18df3
Nexus 3.x的三種docker倉庫
http://www.reibang.com/p/ff8bd2505480