Docker配置指定IP(Ubuntu 16.04)

应用场景

  • 为了局域网内用户方便访问docker实例中服务
  • Docker每次重启,IP地址不会消失

1. Docker网络模式概览

junli@ubuntu16:~$ docker network list
NETWORK ID     NAME      DRIVER    SCOPE
c53fad18e45b   bridge    bridge    local
944636e5a53e   host      host      local
ade481fd388f   none      null      local

说明:

  • bridge 桥接网络 默认网络类型,容器内不特殊指定,就用此类型。不特殊指定的话,分配的ip为172.17.0.x
  • none 无指定网络 容器内不指定局域网ip
  • host 主机网络 和主机共用一个ip,会出现和宿主机争抢端口情况,非特殊需要尽量少用

最常用的就是利用bridge,自定义虚拟网桥来固定IP。默认情况下,docker的容器重启之后,会自动分配IP,导致一次重启IP变化。所以需要对docker容器指定IP。由于docker默认的网络不能固定ip地址,我们创建自定义虚拟网桥,进行固定IP的分配

2. 创建自定义网络

junli@ubuntu16:~$ docker network create --subnet=192.168.120.0/24 DockerNetBridge

3. 查看网络信息

junli@ubuntu16:~$ docker network inspect DockerNetBridge
junli@ubuntu16:~$ docker network list
NETWORK ID     NAME                 DRIVER    SCOPE
f27f780cc924   DockerNetBridge      bridge    local
c53fad18e45b   bridge               bridge    local
944636e5a53e   host                 host      local
ade481fd388f   none                 null      local

创建网桥之后,使用ifconfig查看会多出一个网桥,该网桥在docker启动或者重启之后,会自动显示出来。

junli@ubuntu16:~$ ifconfig
br-f27f780cc924 Link encap:以太网  硬件地址 02:42:57:f8:de:1d  
          inet 地址:192.168.120.1  广播:192.168.120.255  掩码:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  跃点数:1
          接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:0 (0.0 B)  发送字节:0 (0.0 B)

docker0   Link encap:以太网  硬件地址 02:42:7b:33:b2:35  
          inet 地址:172.17.0.1  广播:172.17.255.255  掩码:255.255.0.0
          inet6 地址: fe80::42:7bff:fe33:b235/64 Scope:Link
......

4. 创建容器并指定容器IP,在自定义的网段选取任意IP作为启动容器的IP

junli@ubuntu16:~$ docker run --runtime=nvidia -i -d --net GJLDockerNetBridge --ip 192.168.120.10 --name test -v /home/junli/GJLImages/test/:/GJL/data/ nvidia/cuda:8.0-devel /bin/bash
junli@ubuntu16:~$ docker ps -a
CONTAINER ID   IMAGE                   COMMAND       CREATED         STATUS         PORTS     NAMES
6a16c4565832   nvidia/cuda:8.0-devel   "/bin/bash"   2 minutes ago   Up 2 minutes             test

参数说明

docker run -i -d --net NetBridgeName --ip 192.168.120.x --name test -v 本地主机文件位置:容器文件位置 REPOSITORY:TAG /bin/bash

--runtime=nvidia   使用显卡就添加,不用可以不添加
--net   网桥名字 
--ip    分配各容器的IP 
--name  容器名字
-v      本地工作目录:docker工作目录

5. 运行容器,测试本机和容器是否ping通

junli@ubuntu16:~$ docker exec -it test /bin/bash
root@6a16c4565832:/# apt-get update
root@6a16c4565832:/# apt install iputils-ping
root@6a16c4565832:/# ping 192.168.1.116
PING 192.168.1.116 (192.168.1.116) 56(84) bytes of data.
64 bytes from 192.168.1.116: icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from 192.168.1.116: icmp_seq=2 ttl=64 time=0.108 ms
64 bytes from 192.168.1.116: icmp_seq=3 ttl=64 time=0.103 ms
......
最后,对相关操作总结
docker network create --subnet=x.x.x.0/24 netBridgeName(网桥名称,随便写即可)           ----创建网桥
docker run -itd --network=netBridgeName --ip x.x.x.8 --name dockerName imageName    ----指定ip
docker network list                                                                 ----查看docker下网络模式
docker network rm netBridgeName                                                     ----删除创建的网桥

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7447

(0)
郭靖的头像郭靖
上一篇 2023年2月28日 下午5:14
下一篇 2023年3月1日 下午4:50

相关推荐

  • 创建物理卷报错Can‘t open /dev/sdb1 exclusively. Mounted filesystem?以及对应的解决方法

    在将几块盘做LVM时,遇到一个之前都没遇到过的问题: 首先第一反应就是查看这个分区是否已经在使用了,但是没有。 二:解决方法 2.使用 dmsetup remove xxx 移除掉就可以创建PV了:

    2023年11月23日
    43200
  • 如何在 Ubuntu 22.04 上启用 BBR?

    由于购买的VPS或者主机数据中心都在国外,经常会发生网络拥堵的情况,我们可以通过启用BBR来优化。 在Ubuntu系统上启用BBR可以提升网络连接速度,优化网络拥堵情况。 BBR代表瓶颈带宽,RTT是拥塞控制系统。 您可以在 Linux 桌面上启用 TCP BBR 以改善整体网上冲浪体验。 默认情况下,Linux 使用 Reno 和 CUBIC 拥塞控制算法…

    2024年3月12日
    43800
  • 常见三种存储方式DAS、NAS、SAN的架构及比较

    随着主机、磁盘、网络等技术的发展,数据存储的方式和架构也在一直不停改变,本文主要介绍三种主流存储方式DAS、NAS、SAN的架构及比较 DAS即直接连接存储(Direct Attached Storage), NAS即网络接入存储(Network Attached Storage), SAN即存储区域网络(Storage Area Network)。 存储的…

    2024年2月6日
    41900
  • 部署linux服务器管理面板–Ajenti

    一、部署Ajenti服务器管理面板 1.Ajenti官网 官网地址:https://ajenti.org/ 2.其他操作系统部署方式 3.部署Ajenti 在本地直接部署署Ajenti,安装成功会有如下提示。 curl https://raw.githubusercontent.com/Eugeny/ajenti/master/scripts/install…

    2023年9月19日
    40300
  • wordpress上传图片提示“缺少临时文件夹”的解决方法

    在wordpress发布文章上传图片时出现了“缺少临时文件夹”的错误提示,该错误通常是由于服务器php配置的原因,如果之前上传图片正常,而且最近操作过服务器就很有可能是php配置导致的错误,解决方法也很简单,修改一下php配置文件即可。 Linux主机: 1、编辑配置文件php.ini,搜索查找upload_tmp_dir,修改为: upload_tmp_d…

    2023年5月5日
    52400

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信