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 要加入的网络名称 镜像名称

相关推荐
网络笨猪6 小时前
# Nginx企业级全套配置\+排错手册
运维·nginx
Yupureki6 小时前
《Linux网络编程》8.网络层IP原理
linux·运维·服务器·网络·ip
yyuuuzz6 小时前
aws亚马逊入门常见认知误区
运维·服务器·网络·云计算·github·aws
DeepFlow 零侵扰全栈可观测7 小时前
运动战:AI 时代 IT 运维的决胜之道——DeepFlow 业务全链路可观测性的落地实践
运维·网络·人工智能·arcgis·云计算
高旭的旭7 小时前
GitLab Omnibus Docker 内存优化实战:从 4.7 GiB 降到 3.2 GiB
docker·容器·gitlab
林叔聊渠道分销8 小时前
saas产品运营案例 | 联盟营销计划如何帮助企业提高销售额?
运维·产品运营·sass·流量运营·用户运营
志栋智能9 小时前
告别报告堆砌:超自动化巡检的智能分析与洞察
运维·服务器·网络·人工智能·自动化
雅斯驰11 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
网络与设备以及操作系统学习使用者11 小时前
直连路由优先级最高
运维·网络·学习·华为·智能路由器
goyeer11 小时前
【ITIL4】34服务实践 - 发布管理
运维·企业数字化·信息化·it管理·itil·it治理