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

相关推荐

  • Ansible命令使用,常用模块

    ansible系列命令【帮助手册】 Ansible系列命令 ansible ansible-doc ansible-playbook ansible-vault ansible-console ansible-galaxy ansible-pull ansible-doc: 显示模块帮助 ansible-doc [options] [module…] -…

    Linux系统 2023年2月6日
    90500
  • 宝塔安装composer,出现 putenv() has been disabled for security reasons

    在宝塔安装composer,出现 putenv() has been disabled for security reasons 方法一:打开配置文件php.ini,找到disable_functions字符串,把后面的putenv删除即可正常安装。 方法二:宝塔面板的话,我的版本是7.2,就找到 PHP7.2管理→禁用函数→删除putenv,重载配置文件后…

    2023年2月14日
    1.2K00
  • Linux安装青龙面板 稳定版超级详细

    一.安装docker容器 1.工具安装 复制所有代码然后直接右键粘贴进去 中间过程输入y 回车 yum install docker-io –y 这里输入y 安装成功之后是这个样子 输入以下代码回车 systemctl start docker 复制粘贴下面命令回车 docker ps 如果显示下图 即为成功 二.安装青龙面板 1.安装面板 (想改青龙面板端…

    2022年6月22日
    2.6K00
  • 利用Nextcloud搭建企业私有云盘系统

    1. 场景介绍 Nextcloud是一款免费开源的私有云存储系统,采用PHP+MySQL开发,提供了多个同步客户端支持多种设备访问,使用Nextcloud可以快速便捷地搭建一套属于自己或企业的云同步云盘,从而实现跨平台跨设备文件同步编辑、共享、版本控制、团队协作等功能。   不同于公有云盘,私有云盘需要部署在自己的服务器上(物理机或者云主机),并通过公网进行…

    2023年12月5日
    62100
  • Linux系统下配置双网卡只能ping通一个解决方案

    解决办法:第一步:找到两块网卡名称,再执行关闭反向路由检查(命令中第二及第三项根据实际网卡名来替换) 第二步:配置完之后你会发现双IP都能ping通了,但如服务器重启后将会默认开启,所以还要执行下一步骤来防止每次开机自动关闭反向路由检查,将以上命令加入 /etc/rc.local 即可。 其他:如涉及到此文件权限可以给/etc/rc.local文件添加执行权…

    2023年5月5日
    1.3K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信