docker小白第十二天

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是退出命令行界面,会直接关闭非后台守护式的进程
# ctrl+p+q 退出,任何后台进程均保留
docker run -it --name=u1 ubuntu /bin/bash
docker run -it --name=u2 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

可以看到17:eth0@if18,与在宿主机查看的18: vethbb23d64@if17相呼应。即宿主机上显示名称为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 bash

ping容器名字

ping tomcat81

可以看到能ping通了,建议在使用docker集群环境下多个容器时,用ping容器名比较准确,
在这里插入图片描述
总结:自定义网络本身就维护好了主机名和ip的对应关系( ip和域名都能通,自定义网络提供自动dns解析,可以通过服务名调用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

async与defer的区别

原文解释 async vs defer attributes - Growing with the Web

【OpenCV • c++】图像平滑处理(1) —— 线性滤波

文章目录 一、平滑处理二、图像滤波三、邻域算子与线性邻域滤波四、方框滤波代码演示 一、平滑处理 平滑处理也称为模糊处理,是一种简单且使用频率很高的图像处理方法,平滑处理的用途有很多,最常见的是用来减少图像上的噪点或者失真。在涉及到…

资深老鸟,性能测试-TPS上不去分析+电商系统TPS计算(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试-TPS上…

YOLOv9详解

1.概述 在逐层进行特征提取和空间转换的过程中,会损失大量信息,例如图中的马在建模过程中逐渐变得模糊,从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说, PGI包含三个部分,&#xff0…

C语言例:表达式 45-35+1^2 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int a;a 4&5-3&&51^2;printf("4&5-3&&51^2 %d\n",a);return 0; } 结果如下&#xff1a;

保姆级教学!微信小程序设计全攻略!

微信小程序开启了互联网软件的新使用模式。在各种微信小程序争相抢占流量的同时&#xff0c;如何设计微信小程序&#xff1f;让用户感到舒适是设计师在产品设计初期应该考虑的问题。那么如何做好微信小程序的设计呢&#xff1f;即时设计总结了以下设计指南&#xff0c;希望对准…

win10 使用 IIS 搭建 FTP

0. 背景 首先描述一下需求&#xff0c;大概情况就是&#xff0c;视频文件是存储在笔记本电脑里面&#xff0c;然后偶尔需要投屏到电视上。之前考虑过是否可以通过U盘拷贝的方式&#xff0c;后来发现不行&#xff0c;这样太局限了&#xff0c;需要先明确可能用到的教程&#xf…

探秘atoi与atof的模拟之路:从原理到实践的全能指南!

目录 ​编辑 一.atoi及atof库函数的工作原理 1.1atoi 1.2atof 1.3使用时的注意事项 注意事项 1. 检查输入字符串是否为 NULL 2. 检查字符串是否仅包含有效的数字字符 3. 检查转换结果是否在预期范围内 4. 使用更健壮的替代函数 二. 模拟实现atoi和atof 2.1模拟 atoi…

服务器相关知识点总结

一、服务器概述 1.服务器的定义 服务器是计算机的一种&#xff0c;是网络中为客户端计算机提供各种服务的高性能的计算机。服务器在网络操作系统的控制下&#xff0c;将与其连接的硬盘、磁带、打印机以及昂贵的专用通讯设备提供给网络上的客户站点共享&#xff0c;也能为网络用…

基于SpringBoot的后勤管理系统【附源码】

后勤管理系统开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myecli…

MySQL | CRUD

目录 1. Create 2. Retrieve 2.1. SELECT列 2.1.1. 全列查询 2.1.2. 指定列查询 2.1.3. 查询字段为表达式 2.1.4. 为查询结果指定别名 2.1.5. 结果去重 2.2. WHERE条件 2.2.1. 年龄小于19的同学 2.2.2. id在2~3的同学 2.2.3. id为1和4的同学 2.2.4. 姓张的同学及张…

Android启动优化

文章目录 一、启动分析1.1 启动过程分析1.2 启动问题分析 二、优化工具三、业务梳理3.1 方法论3.2 案例 四、其他优化方式4.1 布局优化4.2 线程优化4.3 GC优化4.4 系统调用优化 五、防劣化5.1 性能监控和测试5.2 代码审查 六、总结 一、启动分析 1.1 启动过程分析 Android应用…

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class

# 网络是研究微生物生态共现模式的常用方法。在这一部分中&#xff0c;我们描述了trans_network类的所有核心内容。 # 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。 #我们首先介绍了基于关联的网络。trans_network中的cal_cor参数…

mybatis项目中配置sql提示

2023版的idea好像内置了这个功能。 第一步&#xff1a; 第二步&#xff1a;第一步完成后user会爆红&#xff0c;这时我们需要连接数据库。

个人简历主页搭建系列-03:Hexo+Github Pages 介绍,框架配置

今天的更新内容主要是了解为什么选择这个网站搭建方案&#xff0c;以及一些前置软件的安装。 Why Hexo? 首先我们了解一下几种简单的网站框架搭建方案&#xff0c;看看对于搭建简历网站的需求哪个更合适。 在 BuiltWith&#xff08;网站技术分析工具&#xff09;上我们可以…

Leetcode 1. 两数之和

心路历程&#xff1a; 很简单的题&#xff0c;双层暴力就可以&#xff0c;用双指针的话快一点。暴力时间复杂度O( n 2 n^2 n2)&#xff0c;双指针时间复杂度O(nlogn) O(n) O(n) O(nlogn)。 注意的点&#xff1a; 1、题目需要返回原数组的索引&#xff0c;所以排序后还需要…

如何使用代理IP进行口子查和渠道查?

在进行问卷调查时&#xff0c;为了避免被限制访问或被封禁IP&#xff0c;使用代理IP已经成为了必要的选择。 其中&#xff0c;口子查和渠道查也不例外。 使用代理IP可以隐藏本机IP地址&#xff0c;模拟不同的IP地址&#xff0c;从而规避被封禁的风险。但是&#xff0c;对于很…

豆瓣电影信息爬取与可视化分析

目录 一、项目背景 二、代码 三、总结 一、项目背景 &#xff08;1&#xff09;利用requests库采集豆瓣网分类排行榜 (“https://movie.douban.com/chart”)中各分类类别前100部电影的相关信息并存储为csv文件。 &#xff08;2&#xff09;利用获取的13个分类类别共1300部电…

怎么使用阵列?——AutoCAD

一、具体步骤 这次我们通过一个任务来学习这个功能&#xff1a; 下面是规则结构图形&#xff0c;我们要给用它来定位元器件&#xff0c;但是由于它是不闭合图形&#xff0c;致使导入PCB Editor里面之后不能通过Shape>> Compose shape转化成可以用软件捕捉的Shape属性的图…