Docker网络设置

一。网络的模式

查看网络:docker network ls

1.bridge模式:容器没有一个共有ip,只有宿主机可以直接访问,外部主机是不可见的,容器通过宿主机的NAT规则可以访问外网(--network=bridge),bridge的主机通过容器的docker0口和外主机eth0的ip进行连接,先将ip映射到docker的ip,在通过eth0的ip进行访问外网

2.host模式:可以让容器共享宿主机的网络栈,这样的好处是外部主机于容器直接通信,但是有的容器的网络缺少隔离性(--network=host)

3.none模式:没有ip

拓展:有源生网络为什么还要使用自定义网络?

源生的桥接网络中没有DNS插件,不能做解析,自定义网络,在创建后具有DNS解析ping其他容器名,因为源生桥接下ip在断开连接后,会发生变化进行变换,使用ping容器名更加稳定

自定义网络的创建方法:(同一台主机上,两个容器使用一样的自定义网络)

docker network create mynet1 -d bridge:自定义网络,为桥接

docker run -it --name test1 --network mynet1 busybox

docker run -it --name test2 --network mynet1 busybox

再用test1去ping test2即可ping通(此时test1和test2属于同一个ip段内,可以直接ping通)

二。相同主机,不同容器,不同网卡之间的通信

1.主机1建立两个自定义网络(从而让两个自定义网卡的ip处于不同网卡)

2.同一个创建两个容器(拥有不同的自定义网络)

docker run -it --rm --name test1 --network mynet1 busybox
docker run -it --rm --name test2 --network mynet2 busybox

3.将第一块网卡给test2,让test2拥有两块网卡

 docker network connect mynet1 test2

4.test1容器ping test2容器

三。不同主机之间的容器互通

1.添加两块网卡

2.打开混杂模式:(两台主机间均开通混杂模式)

ip link set ens224 promisc on

ip link set up ens224
3.创建自定义网络:(两台主机配置一样的步骤)

docker network create -d macvlan --subnet 4.4.4.0/24 --gateway 4.4.4.4 -o parent=ens224 mynet1(设定模式为macvlan,网段,弯管以及指定的配置和名称)

删除网络:docker network rm 网络名

4.不同主机上创建相同容器

docker run -it --rm --name test1 --network mynet1 --ip 4.4.4.1 busybox
docker run -it --rm --name test1 --network mynet1 --ip 4.4.4.2 busybox

5.进行测试:

四。利用容器部署phpmyadmin管理mysql

1.进行解压缩phymyadmin和mysql

docker load -i phpmyadmin-latest.tar.gz

docker load -i mysql-5.7.tar.gz

2.创建php容器

docker run -d --name mysqladmin --network mynet1 

-e PMA_ARBITRARY=1(在web页面可以手动输入数据库地址和端口)

-p 80:80 phpmyadmin:latest

 docker run -d --name mysqladmin --network my_net1 -e PMA_ARBITRARY=1                     -p 80:80 phpmyadmin:latest

3.创建mysql容器

docker run -d --name mysql 

-e MYSQL_ROOT_PASSWD='lee'(设置密码)

--network container:mysqladmin(设置网络于容器mysqladmin的网络相同)

mysql:5.7

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD='lee' --network                   container:mysqladmin mysql:5.7  

五。容器内外网之间的访问

容器访问外网:通过iptables的nat模式即可访问外网

外网访问容器网:可以通过iptables的nat进行访问内网,还可以通过docker-proxy进行访问

### 如何在飞牛OS中配置Docker网络设置 #### Docker网络基础概念 Docker提供了多种类型的网络模式来满足不同的应用场景需求。常见的有`bridge`桥接模式、`host`主机模式以及自定义的overlay网络等。对于大多数情况而言,在飞牛NAS上的默认桥接网络已经能够很好地工作,但对于一些特殊的应用场景可能需要手动调整网络参数。 #### 查看现有网络配置 要查看当前已有的Docker网络列表及其详情,可以在SSH终端执行如下命令: ```bash docker network ls ``` 这会列出所有的网络名称、ID以及其他相关信息[^1]。 #### 创建新的Docker网络 如果现有的网络不符合特定应用的要求,则可以根据实际需求创建一个新的网络。例如,创建一个名为my_custom_network的自定义桥接网络: ```bash docker network create my_custom_network ``` 此命令将会建立一个新的用户定义桥梁网络,它允许更灵活地控制容器间的通信方式[^2]。 #### 设置端口映射规则 当启动基于镜像的新容器时,可以通过 `-p` 或 `--publish` 参数指定外部可访问的服务端口号与内部服务监听地址之间的映射关系。比如下面的例子展示了如何将宿主机8380端口转发到容器内的HTTP服务器(通常是80): ```bash docker run -d --name it-tools --restart unless-stopped -p 8380:80 qingfeng2336/it-tools:latest ``` 这里不仅设置了端口映射还指定了重启策略以确保即使遇到意外停机也能自动恢复运行状态[^3]。 #### 修改已有容器的网络属性 对于已经在运行中的容器,默认情况下是不允许直接修改其关联的网络接口信息的;但是可以先停止目标容器再将其加入其他网络之中: ```bash docker stop container_name_or_id && docker start container_name_or_id docker network connect new_network_name container_name_or_id ``` 上述指令序列先是暂停并重新激活了某个实例,接着把它附加到了另一个预设好的网络之上[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值