docker网络-自定义网络

大纲:

docker容器之间互相访问可以通过进入某个容器的bash控制台去用主机地址+容器对外暴露端口互相访问,但是这种类似多此一举,于是改成用容器ip地址互相访问,即用docker启动的默认docker0网络访问,但是容器ip地址又可能因为各种原因发生变化,所以为了稳定访问使用自定义网络访-容器域名互相访问,即在容器启动前自己定义一个网络,然后在启动一个容器时使用--network参数把该容器加入到自定义网络,这样每个容器的名称就可以作为一个域名进行持续稳定访问了,可以不用管容器是否被删除或者ip发生变化,删了只需再建一个同名称的容器就又可以访问了。。。。。。。。。

docker容器访问docker容 器 过程:

docker容器之间通过主机地址+对外暴露端口访问:

如下以nginx容器为例:

1.用最新版本的nginx镜像后台启动app1和app2容器,并用主机的88和99段扩访问容器

docker run -d -p 88:80 --name app1 nginx

docker run -d -p 99:80 --name app2 nginx

2.docker exec 命令进入app1容器,用curl命令访问app2容器

docker exec -it app1 bash

curl http://app2容器所在主机地址:映射主机端口

过程:先刨除app1容器进入外界的网络,通过外界的网络来到这个机器,再通过机器的端口

docker内部容器之间通过容器ip地址访问:

docker内部有一个默认的网络,每个docker容器应用启动的时候都会将启动的docker容器加入docker的默认网络docker0。docker 0网络是在安装docker的时候就有了这个网络,ipa查看主机有docker0网卡,如下第2个截图docker 0网卡对应ip地址为172.17.0.1,docker每启动一个应用都相当于加入了docker 0网络环境,并且docker会给每一个容器应用再重新分配唯一ip,docker 0作为容器的网关ip,每个容器应用再有自己的一个ip地址,具体可以通过查看某个容器细节的-Networks查看。在docker内部容器之间互相访问可以直接通过容器的ip地址。即通过如下截图知:app1容器ip地址:172.17.0.2,app2容器ip地址:172.17.0.3

【注意:容器的ip地址可能会发生变化,如把app1容器删了再重新建个app1容器,那新的app1可能ip地址就和开始的不同】

过程:

1.docker exec -it app1 bash,进入app1容器的bash 控制台

2.使用curl命令通过Ip地址方式访问app2即nginx容器,注意使用app2容器内部端口,不要使用对外暴露端口,如下截图已经从app1容器访问到了app2容器

docker自定义网络:

为什么要有自定义网络:

因为docker容器内部之间用容器ip地址+端口访问时可能出现容器ip地址发生改变,即容器访问不稳定,所以改为用域名访问,即docker 自定义网络。如访问百度网页都是访问百度的域名baidu.com而不用管百度的实际ip地址,即使百度网页的ip地址一直在变,但是域名不变就行。

docker0网络默认不支持主机域名访问,所以在启动docker容器前需要自己定义一个网络mynet,在docker容器启动的时候把docker容器加入到自己定义的网络mynet,容器的名字可以作为不变的域名进行稳定访问,这样假如说你想用app1容器,让app1容器名作为域名,即使你把这个app1容器删了,你只要再建一个app1容器,就又可以访问app1容器了,而不用管新创建的app1容器的ip地址是否和之前相同了,自定义网络跟docker 0网络一样都会该网络中的容器分配唯一IP,且分配的ip和自定义网络分配的ip已经不一样了。

过程:

1.docker network create mynet,创建一个自定义网络mynet

2.docker后台启动容器并添加--network参数将启动容器添加到自定义网络mynet,并查看每个容器的ip地址

4.进入app1容器用app2容器作为域名访问app2容器

docker常见命令:

删除所有容器:docker rm -f $(dcoker ps -aq)

查看容器细节:docker container inspect 容器名称【ps:container可以不写即docker insepect 容器名称】

创建自定义网络:docker create network 网络名称

后台启动容器并将容器加入自定义网络:docker run -d -p 对外暴露端口:容器内部端口 --name 容器名称 --network 要加入的网络名称 镜像名称

相关推荐
晚风吹人醒.2 小时前
Awk文本处理工具:命令模式,脚本模式的介绍及正则表达式应用举例
linux·运维·服务器·awk
2401_832298102 小时前
云边协同新范式:边缘云服务器如何重构实时业务体验
运维·服务器·重构
飞函安全2 小时前
Mattermost限制历史消息访问:开源软件商业化困局
运维·安全·开源软件
你好helloworld2 小时前
linux离线安装nvidia-docker
linux·运维·服务器
飞Link2 小时前
【开发工具】Docker常用操作
运维·docker·容器
nxlifebao3572 小时前
自媒体整体效率提升怎么做?AI智能媒体助理自动化是关键
运维·自动化·媒体·ai内容创作·自动化工作流·自媒体效率提升·多平台分发
sun0077002 小时前
iptables 配置 3台设备 进行路由转发(不同网段)
运维·服务器
landyjzlai3 小时前
深入理解AMBA总线(14)AXI Ordering Model、非对齐访问
运维·服务器
lbb 小魔仙3 小时前
【Linux】Linux入门实战教程:文件系统与进程管理
linux·运维·服务器