sos-ci bootstrap-jenkins-container.sh脚本分析

1    #!/bin/bash
     2    #
     3    # Description:
     4    # This script is for setup the jenkins dashboard.
     5    #
     6    #------------------------------
     7    # GLOBAL VARIABLES
     8    #------------------------------
     9    if [ "$EUID" -ne 0 ]    //
    10      then echo "Please run as root"
    11      exit 1
    12    else
    13        if [ "$#" -eq 0 ]; then
    14            echo "enter tar volume path"
    15            exit 1
    16        fi
    17    
    18        VOLUMES_DIR=/var/lib/docker/volumes
    19        VOLUME_NAME=jenkins-sos-ci-volume
    20    
    21        #----------------------------------------------------
    22        # Installing docker package and pulling jenkins image
    23        #----------------------------------------------------
    24    
    25        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    26        sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    27        sudo apt-get update
    28        apt-cache policy docker-ce
    29        sudo apt-get install -y docker-ce
    30    
    31        #---------------------------------------------
    32        # Creating a new volume and untar given volume
    33        #---------------------------------------------
    34    
    35        if [ $? -eq 0 ]; then
    36            sudo docker volume create jenkins-sos-ci-volume  //创建一个卷,容器可以存储数据。man docker-volume-create
    37        fi
    38        sudo docker pull jenkins/jenkins                          //拉镜像或者仓库从registry. man docker-pull
    39    
    40        cp $1 $VOLUMES_DIR/$VOLUME_NAME    //拷贝文件
    41        cd $VOLUMES_DIR/$VOLUME_NAME         //切换目录
    42        tar -xvzf $1                                                     //解压文件
    43    
    44        #------------------------------------------
    45        # Move _data folder to newly created volume
    46        #------------------------------------------
    47    
    48        mv jenkins-ci-setup/_data/* _data/
    49    fi

第九行说明:

if [ "$EUID" -ne 0 ]  //root的id为0, 当执行进程的有效用户ID不等于0时。

$EUID :

effective user ID (euid): 有效用户ID,指进程执行时对文件的访问权限

$0: 脚本本身文件名称

$1: 命令行第一个参数,$2为第二个,以此类推

$*: 所有参数列表

$@: 所有参数列表

$#: 参数个数

$$: 脚本运行时的PID

$?: 脚本退出码

∗与@的区别 当命令行为test.sh 1 2 3 "$*“表示"1 2 3"$@“表示"1” “2” “3” 二者没有被引号括起来时是一样的都为"1 2 3",只有当被引号括起来后才表现出差异

 

第25 ~ 29行,安装docker-ce

posted @ 2019-07-24 11:45  kissrule  阅读(174)  评论(0编辑  收藏  举报