`
haiouc
  • 浏览: 118884 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用pipework为配置Docker容器固定ip

阅读更多

docker的四种网络模式

    1. host模式
        docker run 使用 --net=host指定, docker使用的网络实际上和宿主机一样

    2. container模式
        使用 --net=container:container_id/container_name, 多个容器使用共同的网络,看到的ip是一样的。    
    3. none 模式
        使用 --net=none指定,这种模式下,不会配置任何网络。

    4. bridge模式
        使用 --net=bridge指定,默认模式,此模式会为每个容器分配一个独立的network namespace
        默认选择bridge的情况下,容器启动后会通过DHCP获取一个地址
================================================================


首先讲一下docker的网络模式:

我们使用docker run创建容器时,可以使用--net选项指定容器的网络模式,docker一共有4中网络模式:

   

1:bridge模式,--net=bridge(默认)。
这是dokcer网络的默认设置。安装完docker,系统会自动添加一个供docker使用的网桥docker0,我们创建一个新的容器时,容器通过DHCP获取一个与docker0同网段的IP地址。并默认连接到docker0网桥,以此实现容器与宿主机的网络互通。如下:
docker inspect --format={{.NetworkSettings.IPAddress}} test
 

 

2:host模式,--net=host。
  这个模式下创建出来的容器,将不拥有自己独立的Network Namespace,即没有独立的网络环境。它使用宿主机的ip和端口。

 

3:container模式,--net=container:NAME_or_ID。
这个模式就是指定一个已有的容器,共享该容器的IP和端口。除了网络方面两个容器共享,其他的如文件系统,进程等还是隔离开的。

 

4:none模式,--net=none。
这个模式下,dokcer不为容器进行任何网络配置。需要我们自己为容器添加网卡,配置IP。


因此,若想使用pipework配置docker容器的ip地址,必须要在none模式下才可以。

pipework安装:  https://github.com/jpetazzo/pipework/archive/master.tar.gz

# wget https://github.com/jpetazzo/pipework/archive/master.zip
# unzip pipework-master.zip
# cp pipework-master/pipework  /usr/local/bin/
# chmod +x /usr/local/bin/pipework
创建none模式的容器,为其分配IP。
#docker run -idt --name test --net=none resin
#pipework docker0 test 172.17.0.100/24@172.17.0.1
#docker-enter test
#ip a   (centos7)    or   ifconfig
 

 
以上操作给新建的test容器分配了一个172.17.0.100的IP地址。


Pipework有个缺陷,容器重启后IP设置会自动消失,需要重新设置。

 

 

  • 大小: 20.5 KB
  • 大小: 40.5 KB
分享到:
评论

相关推荐

    pipework-master给docker容器分配ip

    总的来说,`pipework`为Docker容器提供了灵活的网络配置,允许你在不依赖Docker网络驱动(如Bridge、overlay等)的情况下,为容器分配静态IP地址。这对于需要精细控制网络环境的场景,如多租户环境、服务网格或复杂...

    Docker容器固定IP分配详解

    我们在使用docker run创建Docker容器...默认选择bridge的情况下,容器启动后会通过DHCP获取一个地址,这可能不是我们想要的,本文介绍在centos7 docker环境下使用pipework脚本对容器分配固定IP。 # brctl show # docke

    Docker实现同Ip网段联通的实现

    最近解决docker与宿主机同网段通信的问题,写此文章记录一下整个过程。 例如 宿主机A 和宿主机B是网络联通关系,在宿主机A上面创建了多个容器组成集群,但是我希望...2、 使用pipework为docker容器配置独立IP 安装p

    Docker 配置固定IP及桥接的实现方法

    为了配置固定IP,你可以选择自定义网络,或者使用第三方工具如Pipework、Flannel、Kubernetes、Weave和OpenContrail等。这些工具提供了更高级的网络解决方案,如overlay网络,能够为每个容器分配静态IP。 下面我们...

    CentOS7下Docker桥接网络配置

    - 使用Pipework为容器分配IP地址。 ```bash pipework br0 lamp 192.168.240.11/24 @192.168.240.136 ``` **10. 进入容器查看IP** ```bash docker exec -it lamp /bin/bash ``` #### 四、总结 通过上述步骤...

    pipework docker无法使用ip netns命令解决办法

    在通过pipework 给docker容器分配IP的时候, 系统报出以下错误: Object “netns” is unknown, try “ip help”. 该错误是由于系统版本暂时不支持namespaces, 可通过更新内核或者iproute的方法获取对namespaces的支持...

    安装docker和桥接网卡容器和局域网同网段上网

    2. 在容器启动时,使用Pipework为其分配IP地址: ```bash sudo ./pipework.sh -i eth1 -c <container_name> -a <ip_address> ``` 这里的`eth1`是桥接接口的名称,`<container_name>`是你的Docker容器的名称,`<ip_...

    Docker网络详解及pipework源码解读与实践1

    2. **主机网络(Host Network)**:在这种模式下,Docker容器直接使用宿主机的网络堆栈,容器进程与宿主机进程共享同一网络命名空间,容器内的应用可以直接使用宿主机的IP和端口,避免了端口映射的复杂性。...

    docker 指定IP地址、与主机同网段IP

    3. Docker容器IP的分配方式 Docker容器的IP地址可以通过DHCP获取,也可以通过手动设置静态IP地址。在bridge模式下,Docker会自动为容器分配与宿主机同一网段的IP地址。但在某些特殊需求下,如测试或特定的网络隔离...

    CentOS7下Docker桥接网络配置.pdf

    8. 安装pipework,这是一个用于自动化Docker容器网络配置的工具。 9. 使用pipework启动一个新的容器,并将其连接到br0网桥上,为容器分配一个与宿主机同一网段的IP地址。 10. 最后,我们可以进入容器确认其IP地址...

    pipework-master.zip

    2. **静态IP分配**:在Docker默认的桥接网络模式下,容器的IP地址由Docker自动分配,但pipework允许我们为容器指定静态IP地址,这对于需要固定IP的场景非常有用。 3. **容器间连接**:pipework的一个核心功能就是...

    CentOS7下Docker桥接网络配置.docx

    pipework 是一个用于为 Docker 容器分配 IP 地址和配置网络的工具。你可以通过 `git clone https://github.com/jpetazzo/pipework` 下载,然后将 `pipework` 文件复制到 `/usr/local/bin/` 目录。 8. **启动容器并...

    Pipework、Weave、Flannel各自的优势和区别 - DockOne1

    Pipework利用Linux内核的桥接技术(brctl)和iptables规则,动态地为Docker容器创建网络接口并连接到自定义的网络桥上。它的优势在于简单易用,无需额外的依赖或服务,可以直接通过脚本进行网络配置。然而,由于...

    Docker不能绑定静态的外网固定ip的问题及解决办法

    1. 使用`-p`参数:在启动Docker容器时,可以通过`-p`参数指定端口映射,例如`docker run -p 192.168.1.200:9200:9200`。这会使用iptables的NAT规则将外部请求重定向到指定的IP和端口。但这种方法并不能为容器分配...

Global site tag (gtag.js) - Google Analytics