一键创建docker 容器 指定ip,指定主机名,指定容器名称,指定镜像创建容器

#!/bin/bash
#
#date :Wed May  3 15:51:34 CST 2017
#author: gaogd 
#
## 说明: ip为容器的ip,hostname为容器主机名,已经容器识别名称,hostname=itemname-servername-owner-ip
## 可以自己选择镜像,如果参数中木有指定镜像名称,那么就在脚本中展示出来,让用户选择,
## 如果用户也不选择,就是默认的sshd进行          
## 用法: sh createcontainter.sh  IP  HOSTNAME [imagesname]
## ./createcontainter.sh 172.18.0.34 gaogd-influxdb-influxdb04 influxdb:latest
## 目前只开放 172.18.0.1-172.18.0.254

function printInfo ()
{
    echo  "sh $0 IP  HOSTNAME [imagesname] "
    exit -1
}

function chooseimages ()
{
    echo -e "num \t\t REPOSITORY:TAG \t\t IMAGE ID \t\t"
    docker images |egrep -v REPOSITORY|cat -n|awk ‘{print $1"\t\t" $2":"$3  "\t\t"   $4}‘
    read -p "Please input your choice(1|2|3 ...): " num
    image=`docker images |egrep -v REPOSITORY|cat -n |sed -n "${num}p"|awk ‘{print $2":"$3}‘`
}

function createcontainter ()
{
    endnum=`echo $ip |awk -F‘.‘ ‘{print $NF }‘`
    echo -e "创建容器中.... \n"
    docker run -d -P -p 1${endnum}:4201 --net shadownet --ip $ip --name $hostname  --hostname $hostname $image
    echo docker run -d -P -p 1${endnum}:4201 --net shadownet --ip $ip --name $hostname  --hostname $hostname $image
    echo -e "创建完成 .... \n" 
    echo ip:    $ip , 
    echo hostname:    $hostname , 
    echo image:        $image

}

function IsIP()
{
    IP=$1
    echo test------IP:  $IP 
    if [ `echo $IP | awk -F . ‘{print NF}‘` -ne 4 ];then
            echo "Wrong IP!"
            exit -1
    else
            a=`echo $IP | awk -F . ‘{print $1}‘`
            b=`echo $IP | awk -F . ‘{print $2}‘`
            c=`echo $IP | awk -F . ‘{print $3}‘`
            d=`echo $IP | awk -F . ‘{print $4}‘`
            #if [[ $a -gt 0 && $a -le 255 ]] && [[ $b -ge 0 && $b -le 255 ]] && [[ $c -ge 0 && $c -le 255 ]] && [[ $d -gt 0 && $d -lt 255 ]];then
            if [[ $a -eq 172 ]] && [[ $b -eq 18 ]] && [[ $c -eq 0 ]] && [[ $d -gt 0 && $d -lt 255 ]];then
                    echo "$IP Right IP!"
                    return 0
            else
                    echo "$IP Wrong IP!"
                    exit -1
            fi
    fi
    
}

function UsableIP()
{
    IP=$1
    echo test IP-----> $IP
    num=`ping  $IP  -c 3 |awk -F‘[% ]+‘ ‘/received/{print $(NF-4)}‘`
    echo test num-----> $num 
    if [ $num -gt 10 ]
    then
        echo "$IP Usable IP!"
        return 0
    else
        echo "$IP Not Usable IP!"
        exit -1
    fi
}

function UsableName()
{
    hostname=$1
    echo test hostname-----> $hostname
    for name in `docker ps -a |awk ‘NR>1{print $NF}‘`
    do
        if [ $name == $hostname ]
        then
            echo "$hostname Not Usable hostname!"
            exit -1
        fi
    done 
    echo "$hostname not same hostname!"
    
    if [ `echo $hostname|awk -F ‘-‘ ‘{print NF}‘` -ne 3 ];then
            echo "but $hostname  format is error .! "
            echo "right hostname example : user-item-servicexx or gaogd-influxdb-influxdb01 "
            exit -1
    fi
    return 0
}

function Checkimage()
{
    image=$1
    echo test image-----> $image
    for name in `docker ps |awk ‘NR>1{print $2}‘`
    do
        if [ $name == $image ]
        then
            echo "$image  Usable image!"
            return 0
        fi
    done 
    echo "$image Not  Usable image!"
    exit -1

}

ip=$1
hostname=$2

if [ $# -lt 2 ]
then
    printInfo
fi

IsIP $ip  && UsableIP $ip  &&UsableName $hostname &&if [ $# -eq 3 ]
then
    image=$3
    Checkimage $image
else
    chooseimages
fi

createcontainter
时间: 2024-12-27 12:41:04

一键创建docker 容器 指定ip,指定主机名,指定容器名称,指定镜像创建容器的相关文章

获取局域网中指定IP或是主机名称的所有文件夹及其搜索文件

最近做个功能在局域网中所有指定文件,于是花了点精力完成了部分功能,先贴上 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Syst

Oracle修改ip或主机名后重建em和监听

oracle数据库修改ip和主机名的详细操作 修改ip操作 1.修改hosts文件中主机名对应的ip地址. 2.重启服务器网络 service network restart 3.一定要先删除原来的监听 emca -deconfig dbcontrol db -repos drop (如果不记得sysman的密码,可以先修改下alter user sysman identified by oracle;) 4.修改 $ORACLE_HOME/network/admin/listener.ora

Linux下设置ip和主机名进行绑定

1:输入命令gedit   /etc/hosts 这样你就打开了一个文本,然后在文本的末尾进行添加如下: ip地址                主机名 192.168.0.125       hadoop 保存退出. Linux下设置ip和主机名进行绑定,布布扣,bubuko.com

Unix Study--Solaris 10修改主机IP和主机名

Unix Study--Solaris 10修改主机IP和主机名     对于Solaris系统,是通过一系列配置文件(文本)来存储和管理主机ip和主机名信息,通过编辑器修改这些配置文件就可以完成相关的配置. 一.修改主机ip 1.配置hosts文件 [[email protected]:/]# cat /etc/hosts # Internet host table ::1     localhost        127.0.0.1       localhost        192.16

c语言 c++ 实现查看本地ip,外网ip, 本地主机名,查看http网址对应的ip

/******************************************************************************* 作者 :邓中强 Email :[email protected] QQ :1246747572 博客 :http://www.cnblogs.com/dzqdzq/ 时间 :2014/01/01 功能 ********************************************************************

shell 批量获取ip 和主机名

[[email protected] li]$ cat jia.sh #!/bin/bash ip=`cat jia.ip` for i in $ip;do HostName=`ssh -t $i "hostname"` echo -e "$i \t $HostName" >>jia.jg done #打印ip 和 主机名 原文地址:https://www.cnblogs.com/lixinliang/p/10300129.html

Linux 网络编程之通过IP或者主机名获取信息

struct hostent { char *h_name; /* 主机的正式名称*/ char **h_aliases; /* 主机的别名列表*/ int h_addrtype; /* 主机的地址类型AF_INET */ int h_length; /* 主机的地址长度*/ char **h_addr_list; /* 主机的IP地址列表*/ } #define h_addr h_addr_list[0] /* 主机的第一个IP地址*/ struct hostent *gethostbynam

Linux初始化配置IP、主机名、防火墙

1.配置IP地址 #vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.2 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 #vim /etc/udev/rules.d/70-persistent-net.rules 2.配置主机名: # vim /etc/sysconfig/network NETWORKING=yes HOS

Linux更改IP和主机名的方法

更改网络ip的几种方法 ifconfig 网卡名称  192.168.100.100/24 #临时生效 用vi命令编辑 /etc/sysconfig/network-scripts/网卡名称 可以永久更改网络ip 更改主机名称 hostname   主机名称   #临时修改 hostnamectl set-hostname  主机名称  #永久修改 vi /etc/hostname   在里面写入主机名 #编辑配置也可更改为永久

Solaris - 修改IP和主机名

修改solarishostname只需修改以下三个位置 1. Vi /etc/hosts, 添加 "ip   yourhostname" 2. vi /etc/nodename, 写入yourhostname 3. vi /etc/hostname.e1000g0, 写入yourhostname 4. 重启机器 [注]:除了/etc/hosts之外,其他两个文件里只写主机名 一.说明    /etc/hostname.pcn0 记录的本机的机器名    /etc/hosts 是一个指向