如何使用Docker创建自定义网络

本文详细介绍了Docker的网络模式,包括默认的bridge模式和host模式,并着重讲解了如何创建自定义网络,以便在容器中指定IP地址。通过示例展示了创建、查看和删除自定义网络的命令,强调了在不同场景下选择网络模式的重要性,如单体应用适合host模式,集群应用则需桥接模式配合端口映射。

目录

网络模式

1.bridge模式(默认模式--桥接模式)

 初识网络模式

查看桥接模式的特点

2.host模式(仅主机模式)

使用守护进程的方式创建并启动且进入容器

 查看仅主机模式下的网络配置

          端口映射 :​

         3.如何创建自定义网络 


网络模式

Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定

1.bridge模式(默认模式--桥接模式)

docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP(但非绝对,还是可以修改滴,具体操作可参考资料/10)

 初识网络模式

#查看网络模式
ip a
ifconfig

#Docker网络模式相关命令查看
docker network --help
#列出Docker现有网络模式
docker network ls
#查看桥接模式下的网络状态
docker network inspect bridge

查看桥接模式的特点

启动一个容器

docker run -di centos:7【或者:docker start 容器名称】

当我们启动一个容器之后,可以通过 docker network inspect bridge 可以看到: 

 当关闭容器之后再通过 docker network inspect bridge 就已经没有了

 解析:

 当我分别启动两个容器之后,可以直观的看到两者ip地址 

通过 docker network inspect bridge 查看:

给两个容器都分配了不同的IP地址

桥接模式的特点:

使用桥接模式,可以使得虚拟服务器都有不同的IP地址。


2.host模式(仅主机模式)

使用守护进程的方式创建并启动且进入容器

docker run -di --name --net=host centos:7

 查看仅主机模式下的网络配置

docker network inspect host 

仅主机模式结论:

不会给容器分配虚拟IP地址。

补充一个知识点:docker rm -f  $(docker ps -aq)【删除所有容器】


还有一个问题,如果docker中有两个tomcat的话,一个怎么做才能区分跑的是哪一个呢?

答:采用桥接模式做端口映射。

端口映射 :

IP地址加上映射端口号即可访问:

浏览器搜索:192.168.3. 128:8081 

OK,访问成功,意味着端口映射成功!

通过 docker network inspect  bridge 可以查看到:

那么使用桥接模式进行端口映射这一块就到这里结束。 


使用仅主机模式启动一个Tomcat,那么就不需要做端口映射了。

docker run -di --name 容器名称 rong--net=host  容器ID

 访问成功!

 结论:

        部署单体应用的时候,可以使用仅主机模式,不需要进行端口映射。

        部署集群应用的时候,比如说Nginx负载个Tomcat时,那么就必须使用桥接模式进行端口映射。

docker run 
-di 
-v /chenchen/softpath/mydocker:/home/chenchen/docker -p 8083:8080 --name t10 
--net=bridge
--restart=always 2d2bccf89f53

#查看网络
docker network inspect mynetwork

 命令解析:

 

 启动成功!访问成功! 


         3.如何创建自定义网络 

为什么需要自定义网络,因为当使用docker引擎进行部署项目在容器中之后,会被分配随机IP,当关闭之后再开启时,所被分配的IP地址极大可能会不一样。那么

步骤:

#创建自定义网络【这一行命令时创建网桥】
docker network create --subnet=172.18.0.0/16 mynetwork

作用:创建容器的时候可以指定IP地址

创建容器

docker run -it --name tomcat8 --net=mynetwork -v /chenchen/software/mydocker/:/home/chenchen/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash

 

 

OK成功。因为不是守护进程的方式运行,所以现在换个控制台继续操作。 

成功啦!

如何删除自定义网络mynet(没有容器使用)

docker network rm mynet 

 本篇内容分享完毕,我们下期再见!

<think>嗯,用户想删除Docker自定义网络,我需要仔细想想怎么回答。首先,我得确定用户可能已经创建自定义网络,现在需要删除。根据用户提供的引用资料,特别是引用3和引用4,里面提到了删除网络的方法。 首先,用户需要知道如何列出所有的Docker网络,这样才能找到要删除的自定义网络名称。引用1提到可以用`docker network ls`来查看现有的网络,包括默认的bridge、host、none和用户自定义的。所以第一步应该是让用户运行这个命令,确认要删除的网络是否存在。 接下来,删除网络的具体命令是`docker network rm 网络名称`,这在引用3中明确提到了。不过要注意的是,如果网络正在被容器使用,或者有容器连接到该网络,删除会失败。这时候用户需要先断开容器或者停止容器,然后再删除网络。可能需要提醒用户这一点,避免他们遇到错误。 另外,用户可能还通过自定义配置文件创建网络,比如引用4中提到的修改Docker配置文件来使用自定义网桥。如果用户之前是通过这种方式创建的,可能需要检查配置文件,确保删除网络后,Docker的配置不会残留无效设置。不过这部分可能比较复杂,用户可能只需要删除网络本身,而不是调整配置,所以可能不需要深入讨论,除非用户有进一步的问题。 还有,用户可能对强制删除感兴趣,但Docker默认没有强制删除网络的命令。如果网络无法删除,必须手动处理依赖的容器,这一点需要明确说明,避免用户误操作。 最后,生成相关问题的时候,应该围绕用户可能遇到的后续问题,比如查看网络、处理无法删除的情况、创建网络以及恢复默认设置,这样能帮助他们更全面地管理Docker网络。</think>### 删除 Docker 自定义网络的方法 #### 1. **查看现有网络** 在删除前需确认目标网络名称。使用以下命令列出所有Docker网络: ```bash docker network ls ``` 这会显示所有网络(包括默认的 `bridge`、`host`、`none` 及自定义网络)[^1]。 #### 2. **删除指定网络** 使用 `docker network rm` 命令删除自定义网络(以 `my_custom_network` 为例): ```bash docker network rm my_custom_network ``` 若删除成功会返回网络名称;若网络正在被容器使用,需先移除关联容器再删除[^3]。 #### 3. **处理无法删除的情况** 若网络因被容器占用无法删除,需先停止并移除相关容器: ```bash # 停止容器 docker stop <容器ID或名称> # 移除容器 docker rm <容器ID或名称> # 再次尝试删除网络 docker network rm my_custom_network ``` #### 4. **清理配置文件(可选)** 若通过修改Docker配置文件(如 `/etc/default/docker`)创建自定义网桥,需注释或删除相关配置项,并重启Docker服务: ```bash systemctl restart docker ``` 此步骤仅适用于通过环境变量定义网络的情况[^4]。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值