123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/bin/bash
- # check input
- if [ -z "$1" ]; then
- echo "*************************************************************************************"
- echo
- echo " Usage: ./pushToRemote.sh registry.svicloud.com/powercloud/oms/server:V01R01B18-3043"
- echo
- echo "*************************************************************************************"
- echo
- exit 1
- fi
- # if has another process
- retry=30
- while true; do
- ps_count=`ps -ef | grep -v grep | grep ${0#./*} | wc -l`
- retry_count=`expr $retry_count + 1`
- # 30 times
- if [ "$retry_count" -ge $retry ]; then
- echo "timeout after 90 seconds, exit."
- echo
- exit 1
- fi
- # has other process
- if [ $ps_count -ge 3 ] ; then
- echo "another process \"${0#./*}\" is running, retry after 3 seconds."
- sleep 3
- else
- break
- fi
- done
- # make a hosts entry
- sed -i '/registry.svicloud.com/d' /etc/hosts
- echo "192.168.100.23 registry.svicloud.com" >>/etc/hosts
- # local repository, so no proxy allowed
- if systemctl show --property=Environment docker | grep -q HTTP_PROXY; then
- mkdir -p /etc/systemd/system/docker.service.d/
- echo > /etc/systemd/system/docker.service.d/proxy.conf
- systemctl daemon-reload
- systemctl restart docker
- fi
- # login local repo
- docker login -u admin -p Changeme_123 registry.svicloud.com &>/dev/null || \
- { echo "docker login to local repo failed" && echo && exit 1; }
- # pull the image
- if docker pull $1; then
- echo
- sed -i '/registry.svicloud.com/d' /etc/hosts
- echo "151.106.8.135 registry.svicloud.com" >>/etc/hosts
-
- # add proxy
- if ! systemctl show --property=Environment docker | grep -q HTTP_PROXY; then
- mkdir -p /etc/systemd/system/docker.service.d/
- echo "[Service]" > /etc/systemd/system/docker.service.d/proxy.conf
- echo "Environment=\"HTTP_PROXY=http://pc.dongcj.com:1080/\" \"HTTPS_PROXY=http://pc.dongcj.com:1080\"" >> \
- /etc/systemd/system/docker.service.d/proxy.conf
- systemctl daemon-reload
- systemctl restart docker
- fi
-
- echo -n "checking remote registry status.."
- sleep 1
- ping registry.svicloud.com -c 2 &>/dev/null && echo ".ok" || { echo ".failed"; exit 3; }
-
- retry=5
- retry_count=0
- while true; do
- retry_count=`expr $retry_count + 1`
- # 5 times
- if [ "$retry_count" -ge $retry ]; then
- echo "login failed for 5 times, exit."
- echo
- exit 1
- fi
- # login
- if docker login -u admin -p "Gocm5]WeqaSufg" registry.svicloud.com &>/dev/null; then
- break
- else
- echo "login to remote registry.svicloud.com $retry_count"
- fi
- done
-
- if docker push $1; then
- echo "push success"
- else
- echo "push $1 to remote repo failed"
- echo
- exit 1
- fi
- else
- echo "pull local image $1 to local failed"
- echo
- exit 1
- fi
-
|