作者:雨水,日期:2016-04-09  CSDN博客: http://blog.csdn.net/gobitan
摘要:Docker容器运行的时候默认会自动分配一个默认网桥所在网段的IP地址。但很多时候我们可能需要让容器运行在预先指定的静态IP地址上,因为早期的版本不支持静态IP,因此网上大部分方法都是借助pipework等去实现,然而在最新的版本中,Docker已经内嵌支持在启动时指定静态IP了。
 
Docker守护进程启动以后会创建默认网桥docker0,其IP网段通常为172.17.0.1。在启动Container的时候,Docker将从这个网段自动分配一个IP地址作为容器的IP地址。最新版(1.10.3)的Docker内嵌支持在启动容器的时候为其指定静态的IP地址。这里分为三步:
 
第一步:安装最新版的Docker
备注:操作系统自带的docker的版本太低,不支持静态IP,因此需要自定义安装。
root@localhost:~# apt-get update
root@localhost:~# apt-get install curl
root@localhost:~# curl -fsSL https://get.docker.com/ | sh
root@localhost:~# docker -v
Docker version 1.10.3, build 20f81dd
 
第二步:创建自定义网络
备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段
docker network create --subnet=172.18.0.0/16 shadownet
注:shadown为自定义网桥的名字,可自己任意取名。
 
第三步:在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址
备注:这里在第二步中创建的网段中选取了172.18.0.10作为静态IP地址。这里以启动shadowsocks为例。
docker run -d -p 2001:2001 --net shadownet --ip 172.18.0.10 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 2001 -k 123456 -m aes-256-cfb
 
其他
备注1:这里是固定IP地址的一个应用场景的延续,仅作记录用,可忽略不看。
备注2:如果需要将指定IP地址的容器出去的请求的源地址改为宿主机上的其他可路由IP地址,可用iptables来实现。比如将静态IP地址172.18.0.10出去的请求的源地址改成公网IP104.232.36.109(前提是本机存在这个IP地址),可执行如下命令:
iptables -t nat -I POSTROUTING -o eth0 -d  0.0.0.0/0 -s 172.18.0.10  -j SNAT --to-source 104.232.36.109

(转帖) 为Docker容器指定自定义网段的固定IP/静态IP地址的更多相关文章

  1. 为Docker容器指定自定义网段的固定IP/静态IP地址

    第一步:创建自定义网络 备注:这里选取了172.172.0.0网段,也可以指定其他任意空闲的网段 docker network create --subnet=172.172.0.0/16 docke ...

  2. Zabbix-(五)监控Docker容器与自定义jvm监控项

    Zabbix-(五)监控Docker容器与自定义jvm监控项 一.前言 前文中讲述了Zabbix对服务器硬件方面的监控功能,本文将讲述利用Zabbix监控Docker容器中的Java Web服务,并通 ...

  3. Docker容器技术--自定义网桥后的默认网卡名称

    新建docker虚拟网络命令 这里以172.18.0.1为例,名字为clusterdocker network create --subnet=172.18.0.0/16 cluster 当我们想新建 ...

  4. 【转帖】一文看懂docker容器技术架构及其中的各个模块

    一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...

  5. docker容器的学习笔记

    目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...

  6. Docker容器跨主机通信之:直接路由方式

    一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker ...

  7. Docker容器技术-基础与架构

    一.什么是容器 容器是对应用程序及其依赖关系的封装. 1.容器的优点 容器与主机的操作系统共享资源,提高了效率,性能损耗低 容器具有可移植性 容器是轻量的,可同时运行数十个容器,模拟分布式系统 不必花 ...

  8. [转帖]图说Docker架构的各种信息

    图说Docker架构的各种信息 2018-07-18 15:16:04作者:linux人稿源:运维之美   https://ywnz.com/linuxyffq/2344.html 介绍Docker架 ...

  9. 6.Docker容器底层实现了解与安全机制

    原文地址: 点击直达 0x00 底层实现 我们以 Docker 基础架构来探究Docke底层的核心技术,简单的包括: Linux 上的命名空间(Namespaces) 控制组(Control grou ...

随机推荐

  1. 【react路由】react 路由被自动加了个#

    路由自动加#是由hashhistory造成: https://segmentfault.com/q/1010000012097148 单页面应用 前端跳转 or 服务器跳转: https://my.o ...

  2. 病毒侵袭持续中---hdu3065(AC自动机模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065 模板题,没什么好说的... #include<stdio.h> #include&l ...

  3. MySQL - 查询今天的数据(以及昨天、本月、上个月、今年...) 查询Datetime 时间的数据

    1,查询当天(今天)的数据 1 SELECT * FROM `order` WHERE TO_DAYS(order_time) = TO_DAYS(NOW()) 2,查询昨天的数据 1 SELECT  ...

  4. Saltstack之SSH简介

    安装 yum install -y salt-ssh 官方文档  https://docs.saltstack.com/en/latest/topics/ssh/index.html 配置 vi /e ...

  5. Flask使用mysql数据池

    helper.py import pymysql from settings import Config def connect(): conn = Config.POOL.connection() ...

  6. python迟邦定

    1.绑定 将函数体和函数调用关联起来,就叫绑定 2.迟绑定 在程序运行之前(也就是编译和链接时)执行的绑定是早绑定,迟绑定(late binding)是发生在运行时. 3.实例说明 def outer ...

  7. Singleton: this & instance

    public class Singleton{ private static final Singleton instance = new Singleton(); private String na ...

  8. gcc __attribute__

    GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute ).变量属性(Variable Attribute )和 ...

  9. yarn nodes label (yarn 划分子集群)

    yarn node labels 特性给节点打标签可以把特性类似的节点分成一组,这样可以指定特定的应用执行在特定的机器群上.现在我们只支持节点划分,1.一个节点仅能有一个节点划分,即一个节点只能打一个 ...

  10. Android 4.4 音量调节流程分析(一)

    最近在做Android Audio方面的工作,有需求是在调节Volume_Up_Key & Volume_Down_key时,Spearker or Headset每音阶的衰减变为3db左右. ...