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

相关推荐
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Patrick_Wilson4 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy5 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭5 天前
运行你的第一个Docker容器
后端·docker·容器
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
宋均浩6 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜6 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵6 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1116 天前
LM Studio Docker 部署——本地大模型一键启动
docker