自动部署之Docker容器配置ip映射

#!/usr/bin/env bash

###################################
#  在单机部署docker容器的时候,经常会遇到docker容器重启,ip发生变化
#  主机访问容器,如果通过ip访问,经常性需要修改
#  因此,写了个脚本来查询当前所有容器的ip地址,并根据容器名Name来添加到hosts映射
######## Querying           #######
######## 2018-4-16          #######
##
###################################

container_name=''
RESULT=''
HOSTS_FILE="/etc/hosts"
# 获取当前文件所在的文件夹名
# 预定义变量为小写字符串
typeset -l parent_folder_name
# 由于已经预定义类型,所以parent_folder_name是纯小写字符串
parent_folder_name=`basename $PWD`

#PROJECT_NAME="${parent_folder_name}_default"


for container_id in `docker ps -q`
do
    networkMode=`docker inspect ${container_id} -f="{{.HostConfig.NetworkMode}}"`

    echo "获取到NetworkMode:${networkMode}"

    # echo `docker inspect ${container_id} -f="{{.NetworkSettings.Networks}}"`
    # exit
    container_ip=`docker inspect ${container_id} -f="{{.NetworkSettings.Networks.${networkMode}.IPAddress}}"`

    container_name=`docker inspect ${container_id} -f='{{.Name}}' | sed 's/\///g'`
    echo -e "
    容器name: ${container_name}\n
    容器id:   ${container_id}\n
    容器ip:   ${container_ip}
    "

    ALIAS_RESULT=`cat ${HOSTS_FILE} | grep ${container_name}`

    if [ "${ALIAS_RESULT}" != "" ] ; then
        sed -i "s/ ${container_name}//g" "${HOSTS_FILE}"
    fi
    
    IP_RESULT=`cat /etc/hosts | grep ${container_ip}`
    IP_RESULT=${IP_RESULT%%\#*}
    
    if [ "${IP_RESULT}" != "" ] ; then
        #已经存在当前ip映射,那么在后面追加别名
        
        #执行覆盖操作
        replace_str="${IP_RESULT} ${container_name}"
        # -i 直接修改并保存
        sed -i "s/${IP_RESULT}/${replace_str}/g" "${HOSTS_FILE}"
    else
       
        echo "${container_ip} ${container_name}" >> "${HOSTS_FILE}"
       
    fi

    
done







转载于:https://my.oschina.net/querying/blog/1924798

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值