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

相关推荐

  • Linux中监测磁盘IO性能

    Linux 存储系统 I/O 栈由文件系统层(file system layer)、通用块层( general block layer)和设备层(device layer)构成。 其中,通用块层是 Linux 磁盘 I/O 的核心。向上,它为访问文件系统和应用程序的块设备提供了标准接口;向下,它将各种异构磁盘设备抽象为一个统一的块设备,并响应文件系统和应用程…

    2022年12月1日
    31800
  • Docker Dockerfile 使用方法

    Dockerfile 介绍当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件。它包含了一系列指令,告诉Docker如何从基础镜像(通常是官方或自定义的操作系统镜像)构建出最终的镜像,以及如何配置容器中的环境、文件和应用程序。 Dockerfile 的编写是构建容器的基础,它允许您定义容器的构建步骤、环境和配置。通过合…

    2023年10月19日
    14300
  • root用户 ssh远程登录 提示access denied

    ssh远程登录 提示Access denied,如下图所示: 需要修改SSH服务配置文件sshd_config来解决这个问题。文件路径为 /etc/ssh/sshd_config ,默认文件内容如下图: 图中红框内容修改为 PermitRootLogin yes,如下图所示: 修改好配置文件并保存,service ssh restart 重启SSH服务,ss…

    2023年6月8日
    24000
  • 在 Linux 上以 All-in-One 模式安装 KubeSphere

    步骤 1:准备 Linux 机器 若要以 All-in-One 模式进行安装,您仅需参考以下对机器硬件和操作系统的要求准备一台主机。 硬件推荐配置 操作系统 最低配置 Ubuntu 16.04, 18.04, 20.04, 22.04 2 核 CPU,4 GB 内存,40 GB 磁盘空间 Debian Bus…

    2023年4月18日
    20700
  • Linux/windows禁止ping和取消禁止ping的方法

    LINUX: Linux默认是允许Ping响应的,系统是否允许Ping由内核参数决定。 具体的配置方法如下: 内核参数设置 1、允许PING设置 1)临时允许PING操作的命令为: #echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all 2)永久允许PING配置方法 /etc/sysctl.conf中增加一行 …

    2022年6月13日
    1.5K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信