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

相关推荐

  • Centos7下离线安装mysql8.0.20

    一、下载linux mysql8.0 离线安装包 首先去mysql官网下载mysql的离线rpm安装包(https://downloads.mysql.com/archives/community/) 二、安装mysql 1、由于mariadb中的lib包和mysql8.0.20的lib包冲突,如果已经安装了mariadb,则需要将其卸载。 2、卸载mari…

    2022年12月5日
    23500
  • linux 查看当前有多少个 ssh 连接,并且列出具体信息

    要查看当前有多少个SSH连接并列出具体信息,可以使用以下命令: 该命令将显示所有连接的详细信息,包括用户名、终端、登录日期和时间等。 另外,也可以使用以下命令列出当前连接的信息: 这个命令会显示当前登录到系统的用户的信息,以及每个用户正在运行的进程。通过查看输出,你可以获取到SSH连接的相关信息。

    2023年9月7日
    4300
  • CentOS 7 磁盘挂载教程

    mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件 进行挂载操作后,用户便可以在挂载目录中使用硬盘资源了。默认情况下Linux系统并不会像Windows系统那样自动的挂载光盘和U盘设备,需要自行完成。 语法 语法格式:mount [参数] [设备] [挂载点] 常用参数 -t 指定文件系统,即挂载类型 -l 显示已加载的文件系统列表 -h …

    2022年6月9日
    79210
  • vnstat 统计服务器网卡流量

    vnStat 是一款开源的网络流量统计工具,可以方便的查看当天,当月流量统计。官网地址: 安装 在 Debian/Ubuntu 下非常简单 假设网卡名为 eth0,该配置在 /etc/vnstat.conf 中,安装结束后初始化数据库 添加为开机启动 使用 直接输入 vnstat 图形化输出可以使用 vnst…

    2023年9月25日
    2100
  • k8s命令自动补齐

    k8s命令自动补齐 yum install bash-completion -y source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) kubectl completion bash >/etc/bash_comple…

    2023年2月2日
    12200

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信