test-definitions/blob/master/auto-test/docker/docker.sh

#!/bin/bash
#-x 会回显命令执行的语句和参数
set -x
#相对路径执行脚本,并通过cd - 返回当前目录
cd ../../utils
. ./sys_info.sh
. ./sh-test-lib
cd -
#要支持docker ,可以看出不同发行版安装的包有所不同
case $distro in
    centos)
		pkgs="make wget docker"
    ;;
    ubuntu)
		pkgs="make wget docker docker.io"
    ;;
    *)
        echo "[$PKG_NAME] do not support install hhvm on $HOST system"
    ;;
esac
#安装docker相关的包,并打印返回的值以检查是否安装成功
install_deps "${pkgs}"
print_info $? install-docker
#启动docker service
if [ "$start_service"x = ""x ]; then
    service docker start
else
    groupadd docker
    $start_service docker.service
fi
print_info $? docker-start-service
#查询docker 进程是否已经起来
if [ "`ps -aux | grep docker`"x != ""x ]; then
    print_info 0 docker-status-service
else
    print_info 1 docker-status-service
fi
#不存在docker 目录的话,就下载
if [ ! -d docker ]; then
    download_file http://htsat.vicp.cc:804/docker/docker.tar.gz
    [[ $? -eq 0 ]] && tar -xvf docker.tar.gz
	print_info $? download-docker-image
fi
#docker 的load子命令解释如下  load      Load an image from a tar archive or STDIN

docker load --input docker/openestuary_apache.tar.gz
print_info $? docker-load-apache

docker load --input docker/openestuary_mysql.tar.gz
print_info $? docker-load-mysql

#images    List images
images=$(docker images| grep -v 'REPOSITORY' | awk '{print $1}')
docker_images=$(echo $images | grep mysql | grep apache)
#不存在这个目录
if [ ! -d docker/Discuz ]; then
	#将当前目录下docker这个目录压栈
    pushd ./docker
	#解包
    tar -xf Discuz.tgz
	print_info $? unzip-discuz-file
	#返回到./docker 目录
    popd
fi
#sed 替换ip地址,并通过grep 检查特定文件中ip是否替换成功
sed -i "s/192.168.1.246/${local_ip}/g" `grep -rl 192.168.1.246 ./docker/Discuz`
print_info $? replace-discuz-ip

cp -rf ./docker/Discuz ./docker/mysql_data  /root/
print_info $? prepare-lamp-file
#运行镜像
docker run -d -p 32768:80 --name apache -v /root/Discuz:/var/www/html openestuary/apache
print_info $? docker-run-apache


docker run -d -p 32769:3306 --name mysql -v /root/mysql_data:/u01/my3306/data openestuary/mysql
print_info $? docker-run-mysql

#通过docker ps 得到目前运行的docker id
container_id=$(docker ps | grep -v IMAGE | awk '{print $1}')
if [ "$container_id"x != ""x ]; then
    print_info 0 docker-ps
else
    print_info 1 docker-ps
fi

#declare -a 声明两个数组
declare -A id_service_dic
declare -a image_id
#根据docker ps得到两个数组
ids=$(docker ps | grep -v IMAGE | awk '{print $1}')
services=$(docker ps | grep -v IMAGE | awk '{print $NF}')
#ids包含一个数组,将这个数组值读入到image_id 这个数组中
read -a image_id <<< $(echo $ids)
declare -a service
read -a service <<< $(echo $services)
#得到数组的长度
len_ids=${#service[@]}
i=0
while [ $i -lt $len_ids ]
do
    id_service_dic[${image_id[$i]}]=${service[$i]}
    i=$(( $i + 1 ))
done
#判断当前目录下这个目录是否存在
if [ ! -f "upload" ]; then
	echo "upload file not exist!!"
fi
#下载文件
wget http://${local_ip}:32768/upload
#print_info $? docker-run-LAMP
#modify by liucaili 20170606
if [ -f "upload" ]; then
	print_info 0 docker-run-LAMP
else
	print_info 1 docker-run-LAMP
fi

#针对container_id 中每个docker 执行restart 命令
for i in $container_id
do
    docker restart $i
    print_info $? docker-restart-${id_service_dic[$i]}
done

#执行stop命令
for i in $container_id
do
    docker stop $i
    print_info $? docker-stop-${id_service_dic[$i]}
done

#删除每个docker
for i in $container_id
do
    docker rm $i
    print_info $? docker-rm-${id_service_dic[$i]}
done
#删除镜像
for i in ${images}
do
    docker rmi $i
    print_info $? docker-rmi-$i
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值