给docker配置指定ip的超详细图解

 更新时间:2023年09月12日 08:49:55   作者:D双标  
这篇文章主要给大家介绍了关于给docker配置指定ip的超详细图解教程,Docker容器的IP地址由Docker守护进程动态分配,默认情况下,它使用的是宿主机的IP地址,但是在某些情况下,您可能需要为Docker容器指定静态IP地址,需要的朋友可以参考下

本文主要使用docker network进行ip的配置(本文主要使用一个容器来试验)

1、创建一个简单容器,并查看它的详细信息        

1.1 创建容器

1.2 查看IP信息

​2、查看docker 网络信息

2.1 查看docker网络列表

图中bridge是我这里docker的默认桥接网络,通过查看网络详细信息我们可以发现,我们的test容器使用的是bridge如下:

        [root@192 ~]# docker network inspect bridge 
[
    {
        "Name": "bridge",
        "Id": "40b01687a277bf4622dc67bd454eb1f9d6bbab6bf0c547843254c852b680661d",
        "Created": "2023-06-16T20:22:32.094125218+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "b015805631839406a7ef4ced2b2cd810dc6b7a08d26f02792858598eec436a46": {
                "Name": "test",
                "EndpointID": "d4ddc395b7185a61b0a4008f28286c74bf701493357225656a363bfe8f80e99c",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

而我们尝试修改test的ip时,系统会指出“用户指定的IP地址仅在用户定义的网络上支持”,如下图:

所以如果我们要指定容器的ip,我们就要使用自己定义的网络。(同时,当我们使用自己定义的网络但是没有分配指定ip的时候,ip的分配将由容器依照容器启动的顺序,在对应的网段内从2开始往后分配)。

3、自定义容器网络

docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 test

--driver        设置网络模式, bridge 为桥接模式(可以不写,默认为桥接)

        Docker有四种网络模式
        host:容器和主机共享一个网络。
        container:容器和另外一个容器共享一个网络。
        none:不进行网络连接。
        bridge:默认配置,桥接模式。

--subnet 设置网段(可以不写,默认为当前所有网段中数值上最大的网段+1的网段,比如当前数值上最大的网段是172.20.0.0/16,则不写的话默认为172.21.0.0/16)

172.18.0.0/16         主机部分全0

--getway 设置网关(可以不写,不写的话,就没有)

172.18.0.1                一般是主机部分的数值从1开始递增,有n个网关,按理就是172.18.0.2

                                 到172.18.0.n(n<256)

4、配置ip

此时ip为空是因为当前容器还没有打开,只有当容器打开的时候,docker才会开始给容器分配ip,而当ip没有被定义的时候,一般ip默认是从2开始依次递增(一般网关主机部分的数值是1)。

ps:docker自动分配是基于当前网络中的ip的,而我们自定义ip是固定的,也就是说,如果你定义了172.18.0.2这个ip,而当有一个容器的ip是由docker自动分配的时候,此时如果自定义ip的容器没开启的话,docker分配的ip依旧是从172.18.0.2开始,而因为这两个ip相同,所以如果先开启docker自动分配ip的容器,我们自定义ip的容器在开启的时候就会发生ip冲突从而启动失败。

5、测试

我们从起docker再打开test查看进行测试

如此,我们就配好固定ip啦

6、常见问题

序号报错翻译理由解决方法
1Error response from daemon: User specified IP address is supported on user defined networks only来自守护进程的错误响应:用户指定的IP地址仅在用户定义的网络上支持我们只能指定在我们自定义的网络上支持的IP无,但是如果只是为了配置固定ip,可以自定义网络进行配置
2Error response from daemon: Address already in useip地址已在被使用

1、自定义的ip已被分配,可能是自动分配的时候分配掉的

2、在修改容器ip时,如果容器此时开着,并且修改的网段与当前网段一致,也会有可能出现这个问题

1、先开启自定义ip的容器

2、先关闭容器,并断开网段,否则修改可能会不起作用。

6.1 ip无法被自定义

6.2 ip冲突

6.3 等等等系列问题……

错误待开发

总结

到此这篇关于给docker配置指定ip的文章就介绍到这了,更多相关docker配置指定ip内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker部署SpringBoot的两种方法

    Docker部署SpringBoot的两种方法

    Docker是一种流行的容器化技术,可以帮助开发人员更轻松地构建、部署和运行应用程序,Spring Boot是一种快速开发框架,可以帮助开发人员更快地构建应用程序,本文主要介绍了Docker部署SpringBoot的两种方法,感兴趣的可以了解一下
    2023-10-10
  • 在Docker中如何配置网络并访问互联网

    在Docker中如何配置网络并访问互联网

    这篇文章主要介绍了在Docker中如何配置网络并访问互联网问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 使用Docker搭建minio的详细图文教程

    使用Docker搭建minio的详细图文教程

    本文介绍了Docker配置镜像源的方法,以及如何在Docker中拉取镜像和创建运行容器,详细说明了使用MinIO创建Bucket、设置AccessKey、安装和配置Cpolar以及SpringBoot集成MinIO的步骤,需要的朋友可以参考下
    2024-10-10
  • Docker根目录迁移与滚动日志设置方法

    Docker根目录迁移与滚动日志设置方法

    在使用docker的过程中,需要注意docker的根目录磁盘位置,默认情况下docker的日志是没有限制的,所有,除了要修改根目录位置到比较大的地方,还需要设置docker滚动日志方式,这篇文章主要介绍了Docker根目录迁移与滚动日志设置方法,需要的朋友可以参考下
    2025-03-03
  • 使用docker轻松几步打造个人专属图床的实现步骤

    使用docker轻松几步打造个人专属图床的实现步骤

    本文主要介绍了使用docker打造个人专属图床的实现步骤,可以快速搭建属于您自己的图床,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • docker打包前端项目的实现示例

    docker打包前端项目的实现示例

    本文介绍了如何将前端项目打包到Docker容器中,包括编写Dockerfile文件、创建镜像和容器以及解决部署过程中遇到的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • harbor修改配置文件后重启操作

    harbor修改配置文件后重启操作

    这篇文章主要介绍了harbor修改配置文件后重启操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 使用rpm安装指定版本docker(1.12.6)的详细步骤

    使用rpm安装指定版本docker(1.12.6)的详细步骤

    为了防止安装高版本的docker引发的错误,需要安装1.12.6版本的docker,下面小编给大家带来了使用rpm安装指定版本的docker(1.12.6)的步骤,感兴趣的朋友一起看看吧
    2021-08-08
  • 使用Docker部署MySQL数据库的两种方法

    使用Docker部署MySQL数据库的两种方法

    在现代软件开发中,MySQL 是一种流行的关系数据库管理系统,因其可靠性和易用性受到广泛欢迎,通过 Docker,可以快速、便捷地部署和管理 MySQL 数据库实例,本文将介绍两种通过 Docker 部署 MySQL 的方法,需要的朋友可以参考下
    2024-10-10
  • 解决Docker必须使用sudo操作的问题

    解决Docker必须使用sudo操作的问题

    这篇文章主要介绍了解决Docker必须使用sudo操作的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论