zoukankan      html  css  js  c++  java
  • docker容器之设置固定ip起容器

    有时候我们在起docker容器的时候,并不想用docker默认的ip,而是自己划分网络,起特定的ip地址,有没有办法呢?

    docker的强大之处就是,很多功能都是可以自己定制。通过docker network命令轻松实现固定ip启动容器。

    下面介绍下如何使用命令。

    我们先来看看docker network命令:

    root@ubuntu:~# docker network
    
    Usage:	docker network COMMAND
    
    Manage networks
    
    Commands:
      connect     Connect a container to a network
      create      Create a network # 新建网络
      disconnect  Disconnect a container from a network
      inspect     Display detailed information on one or more networks
      ls          List networks
      prune       Remove all unused networks
      rm          Remove one or more networks
    
    Run 'docker network COMMAND --help' for more information on a command.
    

    通过帮助文档可以看出,我们可以通过docker network create命令新建网络。

    接下来看看具体如何新建:

    oot@ubuntu:~# docker network create --help
    
    Usage:	docker network create [OPTIONS] NETWORK
    
    Create a network
    
    Options:
          --attachable           Enable manual container attachment
          --aux-address map      Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
          --config-from string   The network from which copying the configuration
          --config-only          Create a configuration only network
      -d, --driver string        Driver to manage the Network (default "bridge")
          --gateway strings      IPv4 or IPv6 Gateway for the master subnet
          --ingress              Create swarm routing-mesh network
          --internal             Restrict external access to the network
          --ip-range strings     Allocate container ip from a sub-range
          --ipam-driver string   IP Address Management Driver (default "default")
          --ipam-opt map         Set IPAM driver specific options (default map[])
          --ipv6                 Enable IPv6 networking
          --label list           Set metadata on a network
      -o, --opt map              Set driver specific options (default map[])
          --scope string         Control the network's scope
          --subnet strings       Subnet in CIDR format that represents a network segment # 创建网络常用到的选项
    

    接下来新建网络:

    # 新建网络,命名为“test”
    root@ubuntu:~# docker network create --subnet 172.238.238.0/24 test 
    71ed50127be75d9621c239b9466a62a75f8f408664cf356eacf4bd442a613f95
    
    # 查看`docker`网桥列表
    root@ubuntu:~# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    044fd8fce62e        bridge              bridge              local # docker默认
    57617203eaf6        host                host                local
    f96e1770874a        none                null                local
    71ed50127be7        test                bridge              local # 新建
    
    # 查看刚新建的网桥`ip`
    root@ubuntu:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 # 系统默认
        link/ether 00:0c:29:0b:77:11 brd ff:ff:ff:ff:ff:ff
        inet 192.168.255.140/24 brd 192.168.255.255 scope global ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fe0b:7711/64 scope link 
           valid_lft forever preferred_lft forever
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default  # docker默认
        link/ether 02:42:86:51:43:9d brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
        inet6 fe80::42:86ff:fe51:439d/64 scope link 
           valid_lft forever preferred_lft forever
    33: br-71ed50127be7: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
        link/ether 02:42:1b:d7:5f:4d brd ff:ff:ff:ff:ff:ff
        inet 172.238.238.1/24 brd 172.238.238.255 scope global br-71ed50127be7   # 刚刚创建的网络
           valid_lft forever preferred_lft forever
    

    再接下来,我们就可以根据新建的docker 网桥在起容器的时候固定ip了:

    docker run -td --name container_name --net test --ip 172.238.238.100 imageID[image_name:tag] bash
    # 指定容器名称,指定网桥,指定ip,后台运行
    

    再次确认容器的ip:

    docker inspect container_name[container_id] | tail -20
    

    当然也可以通过docker-compose.yaml文件进行设置,这里不做讲解,上述介绍适合于docker run 单独起容器的设置。

  • 相关阅读:
    迈步从头越
    C 语言中用bsearch()实现查找操作
    ASP.NET 远程调试
    JsonHelper
    json数据中包含html代码的解决方法
    js对url的常见操作
    jquery中ajax中get和post的用法
    图片和文件合成为图片的方法(黑客)
    数据库分库知识
    长链接转短链接的方法(百度、新浪、腾讯)
  • 原文地址:https://www.cnblogs.com/davis12/p/14518691.html
Copyright © 2011-2022 走看看