当前位置: 首页 > news >正文

docker学习(二十一、network使用示例container、自定义)

文章目录

  • 一、container
    • 应用示例
      • 1.需要共用同一个端口的服务,不适用container方式
      • 2.可用示例
      • 3.停掉共享源的容器,其他容器只有本地回环lo地址
    • 总结
  • 二、自定义网络
    • 应用示例
      • 默认bridge,容器间ip通信
      • 默认bridge,容器间服务名不通
    • 自定义网络
    • 总结
  • 三、尝试看图

network相关内容:
docker学习(十八、network介绍)
docker学习(十九、network使用示例bridge)
docker学习(二十、network使用示例host、none)
docker学习(二十一、network使用示例container、自定义)

一、container

应用示例

1.需要共用同一个端口的服务,不适用container方式

# 启动一个容器,使用默认bridge的network
docker run -itd -p 8082:80 --name ubuntu2 ubuntu:latest /bin/bash
# 启动一个容器,使用ubuntu2容器的网络
docker run -itd -p 8083:80 --network container:ubuntu2 --name ubuntu3 ubuntu:latest /bin/bash

在这里插入图片描述

2.可用示例

# 启动一个容器,使用默认bridge的network
docker run -itd --name alpine alpine:latest /bin/sh
# 启动一个容器,使用alpine 容器的网络
docker run -itd --network container:alpine --name alpine1 alpine:latest /bin/sh

在这里插入图片描述

# 进入容器查看网络
docker exec -it alpine /bin/sh
ifconfig
exit
docker exec -it alpine1 /bin/sh
ifconfig
exit

可以看到两个容器的ip是同一个,他们都是eth0 172.17.0.3
在这里插入图片描述

3.停掉共享源的容器,其他容器只有本地回环lo地址

# 进入容器查看网络
docker stop alpine
docker exec -it alpine1 /bin/sh
ifconfig
exit

在这里插入图片描述

总结

  • 新建的容器和已经存在的一个容器共享一个网络ip配置,而不是和宿主机共享;
  • 新创建的容器不会创建自己的网卡,配置自己的ip,而是和一个指定的容器共享IP、端口范围等;
  • 共享源容器如果停掉,其他共享这个网络的容器将只有lo回环地址;
  • container网络可以在容器创建时通过 --network container:容器名或容器ID来指定;
  • 两个容器除了网络方面,其他的如文件、进程列表等还是隔离的。

二、自定义网络

应用示例

默认bridge,容器间ip通信

# 启动一个容器,默认网络
docker run -itd -p 8090:80 --name u1 ubuntu:latest /bin/bash
# 启动一个容器,默认网络
docker run -itd -p 8091:80 --name u2 ubuntu:latest /bin/bash
docker exec -it u1 /bin/bash
ip addr
docker exec -it u2 /bin/bash
ip addr
# 在u2中ping u1的ip网络是通的
ping 172.17.0.3

在这里插入图片描述在这里插入图片描述

docker exec -it u1 /bin/bash
ip addr
# 在u1中ping u2的ip网络是通的
ping 172.17.0.4

在这里插入图片描述
结论:默认bridge的情况下,使用docker内部分配的ip,容器之间可以通过ip通信

默认bridge,容器间服务名不通

docker exec -it u1 /bin/bash
ping u2

在这里插入图片描述
结论:默认bridge的情况下,容器之间不可以通过服务名通信

思考:bridge情况下容器挂了,ip会重新分配,那么使用ip通信是不可靠的,使用服务名又不通,那应该如何解决这个问题呢?

自定义网络

docker network ls
docker network create test_network
docker run -itd -p 8070:80 --network test_network --name u70 ubuntu:latest /bin/bash
docker run -itd -p 8071:80 --network test_network --name u71 ubuntu:latest /bin/bash

在这里插入图片描述在这里插入图片描述

docker exec -it u70 /bin/bash
ping u71

在这里插入图片描述

总结

  • 创建network,docker network create 自定义名字
  • 在容器创建时通过 --network 自定义的network名字 来指定;
  • 容器之间可以通过ip或主机名通信

三、尝试看图

学到这里应该能大体看懂这个图了,细品一下吧~
在这里插入图片描述

http://www.lryc.cn/news/268478.html

相关文章:

  • 【Python机器学习系列】一文带你了解机器学习中的Pipeline管道机制(理论+源码)
  • 算法基础之整数划分
  • 关于“Python”的核心知识点整理大全47
  • Android 8.1 设置USB传输文件模式(MTP)
  • 模型量化 | Pytorch的模型量化基础
  • adb和logcat常用命令
  • 千巡翼X4轻型无人机 赋能智慧矿山
  • 【Android 13】使用Android Studio调试系统应用之Settings移植(一):编译服务器的配置、AOSP源码的下载、编译、运行
  • 【1】Docker详解与部署微服务实战
  • C# JsonString转Object以及Object转JsonString
  • 华为OD机试真题-中文分词模拟器-2023年OD统一考试(C卷)
  • 【并发设计模式】聊聊 基于Copy-on-Write模式下的CopyOnWriteArrayList
  • OpenCV中使用Mask R-CNN实现图像分割的原理与技术实现方案
  • 论文阅读《Rethinking Efficient Lane Detection via Curve Modeling》
  • Leetcode—2660.保龄球游戏的获胜者【简单】
  • ubuntu服务器上安装KVM虚拟化
  • SpreadJS 集成使用案例
  • 单挑力扣(LeetCode)SQL题:534. 游戏玩法分析 III(难度:中等)
  • 【OpenCV】告别人工目检:深度学习技术引领工业品缺陷检测新时代
  • VR全景图片制作时有哪些技巧,VR全景图片能带来哪些好处
  • 【VUE】Flask+vue-element-admin前后端分离项目发布到linux服务器操作指南
  • django的gunicorn的异步任务执行
  • KEPServerEX 6 之【外篇-2】PTC-ThingWorx服务端软件安装 PostgreSQL本地安装
  • websocket 介绍
  • 【IoT网络层】STM32 + ESP8266 +MQTT + 阿里云物联网平台 |开源,附资料|
  • 数据分析工具 Top 8
  • AI 换脸的新时代:没有显卡也可以使用的AI换脸工具
  • 3.Python中的循环结构
  • 机器学习之BP神经网络精讲(Backpropagation Neural Network(附案例代码))
  • 安全生产人员定位系统助企业实现智能化管理,提高生产安全性和效率