邯郸wap网站建设报价,旅游网站建设合同,wordpress 返回顶部 插件,网站访问工具docker小白第十二天
docker network简介
docker不启动时默认的网络情况。
# 停止docker服务
systemctl stop docker.socket
systemctl stop docker
# 查看docker镜像
docker images输入查看docker镜像命令后#xff0c;显示未连接到docker服务器 docker启动时网络情况
sy…docker小白第十二天
docker network简介
docker不启动时默认的网络情况。
# 停止docker服务
systemctl stop docker.socket
systemctl stop docker
# 查看docker镜像
docker images输入查看docker镜像命令后显示未连接到docker服务器 docker启动时网络情况
systemctl start docker
docker images可以看到很多镜像 此时在查看虚拟机当前的网卡情况,会有一个docker0的虚拟网桥。
ifconfig# 查看docker 网络命令
docker network ls安装完docker后默认会自动创建三大网络模式分别为bridge、host、none # docker 查看网络命令帮助
docker network --help
# 查看某个网络信息
docker network inspect 网络名字docker网络能干什么 docker网络模式 docker网络模式学习案例
# 新建两个ubuntu容器命名为u1和u2并进入命令行界面
# exit是退出命令行界面,会直接关闭非后台守护式的进程
# ctrlpq 退出任何后台进程均保留
docker run -it --nameu1 ubuntu /bin/bash
docker run -it --nameu2 ubuntu /bin/bash
# 查看已创建的镜像
docker ps# 查看容器的网络模式
docker inspect u1可以看到容器u1的ip、网关、网桥名。需要注意的是docker中的ip是动态分配的即某个容器停止了或者被删除后其ip将被紧接着新建的容器使用。
docker网络模式之bridge
# 查看docker网络列表
docker network ls
# 查看docker网络模式的网桥信息
docker network inspect bridge# 启动两个容器端口分别为8081和8082
docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
docker ps观察到已经实际启动了两个容器 输入ip addr可以看到多了很多网卡信息 进入容器内部查看ip信息
docker exec -it tomcat81 bash
ip addr可以看到17eth0if18与在宿主机查看的18: vethbb23d64if17相呼应。即宿主机上显示名称为veth容器内部显示名称为eth0
network之host
直接使用宿主机的ip地址与外界进行通信 不在需要额外进行NAT转换。
# 以host网络模式创建一个后台守护式的容器
docker run -d -p 8083:8080 --network host --name tomcat83 billygoo/tomcat8-jdk8发现出现一个警告而且docker ps查看并没有出现像之前一样的0.0.0.0:8083-8080/tcp,这样的一个映射关系。 那么此时删掉-p 的参数 重新建立一个容器tomcat8083
docker stop tomcat83
docker remove tomcat83
docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8# 查看宿主机的网络情况
ip addr
# 查看容器tomcat83的网络情况
docker inspect tomcat83可以看到因为是host模式容器tomcat83没有自己的ip和网关。
# 进容器内部查看网络信息
docker exec -it tomcat83 bash
ip addr可以看到容器内部输入ip addr时与宿主机的信息几乎一样 因为host模式没有设置-p容器的端口映射关系了访问刚刚启动的tomcat83只需要访问宿主机ip:8080端口即可因为此时容器的ip借用宿主机的.
# 如果浏览器访问无效关闭linux宿主机的防火墙
systemctl stop firewalld网络模式之none
就是禁用网络功能只有lo标识就是127.0.0.1表示本地回环
# 建议一个网络模式为none的容器tomcat84
docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8
docker ps在容器外的宿主机上查看tomcat84网络信息
docker inspect tomcat84进容器tomcat84内查看ip addr发现只有一个lo
docker exec -it tomcat84 bash
ip addr网络模式之container
新创建的容器不会创建自己的网卡和配置自己的IP而是和一个指定的容器共享IP、端口范围等。
# 创建两个容器分别为tomcat85和tomcat86
docker run -d -p 8085:8080 --name tomcat85 billygoo/tomcat8-jdk8
# tomcat86借用tomcat85容器的网络
docker run -d -p 8086:8080 --network container:tomcat86 --name tomcat85 billygoo/tomcat8-jdk8执行第二个命令报错相当于tomcat86和tomcat85共用一个ip一个端口导致端口冲突使用tomcat镜像不合适。 使用Alpine操作系统进行案例演示。Alpine操作系统是一个面向安全的轻型linux发行版。
docker run -it --name alpine1 alpine /bin/sh
docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh在两个新建的容器内查看ip addr发现网卡信息是一样的 如果此时exit关闭退出alpine1容器并docker stop alpine1,查看alpine2容器的信息如下。只剩了lo网卡信息。
网络模式之自定义网络模式
# 启动两个docker实例tomcat81 和tomcat82
docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
# 进入容器内部
docker exec -it tomcat81 bash
docker exec -it tomcat82 bash分别输入ip addr查看两个容器ip一个为172.17.0.2一个为172.17.0.3.并且两个容器之间可以互相ping通 此时如果不是pingIP而是ping服务名则会变成unknown错误。因为ip在容器内是可能变换的所以ping服务名更准确但是需要自定义网络模式。
引入自定义桥接网络
自定义桥接网络,自定义网络默认使用的是桥接网络bridge。
# 创建一个自定义桥接网络网络名字叫cc_network
docker network create cc_network
# 查看网络信息
docker network ls 新建容器加入自定义网络
# 删除上一步新建的两个容器未使用自定义网络
docker stop tomcat81
docker stop tomcat82
docker rm -f tomcat81
docker rm -f tomcat82
# 新建容器加入自定义网络
docker run -d -p 8081:8080 --network cc_network --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network cc_network --name tomcat82 billygoo/tomcat8-jdk8进入新建的容器内部
docker exec -it tomcat81 bash
docker exec -it tomcat82 bashping容器名字
ping tomcat81可以看到能ping通了建议在使用docker集群环境下多个容器时用ping容器名比较准确 总结自定义网络本身就维护好了主机名和ip的对应关系 ip和域名都能通自定义网络提供自动dns解析可以通过服务名调用)