docker进阶

news2025/2/2 11:14:26

Docker网络

[root@ecs-56325218 ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
2c63c1a8145c   bridge    bridge    local
70d3439bbb55   host      host      local
ffc74cf89143   none      null      local


[root@ecs-56325218 ~]# docker network  create aa_network

[root@ecs-56325218 ~]# docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
9462f910652a   aa_network   bridge    local
2c63c1a8145c   bridge       bridge    local
70d3439bbb55   host         host      local
ffc74cf89143   none         null      local

[root@ecs-56325218 ~]# docker network rm aa_network

[root@ecs-56325218 ~]# docker network inspect bridge

能干啥:

  1. 容器间的互联和通信及端口映射
  2. 容器IP变动时可以通过服务器名直接网络通信而不收到影响

bridge:为每个容器分配、设置IP等,并将容器连接到一个 docker0,虚拟网桥,默认模式

host:使用宿主机的IP和端口

none:有独立的network namespace,但没有任何网络设置

container:新创建的容器不会创建自己的网卡和配置自己ip,而是和指定的容器共享IP

[root@ecs-56325218 ~]# docker run -it --name u1 ubuntu bash
[root@ecs-56325218 ~]# docker run -it --name u2 ubuntu bash
[root@ecs-56325218 ~]# docker inspect u1|tail -n 20
            "Networks": { 
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "2c63c1a8145c68c6c534a34b74000fa666f02992ff0c3c1f92c5e365dbdba150",
                    "EndpointID": "4d5e3d950cbb9a5350af354db9b494ab2d974f4f070dfd204f37985b88d8b167",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@ecs-56325218 ~]# docker inspect u2|tail -n 20
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "2c63c1a8145c68c6c534a34b74000fa666f02992ff0c3c1f92c5e365dbdba150",
                    "EndpointID": "6b8d78dd245baaa8202e86d2f03721da8b822f23fd3be5c56dd1de82cc66cca0",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@ecs-56325218 ~]# docker rm -f u2
u2
[root@ecs-56325218 ~]# docker run -it --name u3 ubuntu
[root@ecs-56325218 ~]# docker inspect u3|tail -n 20
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "2c63c1a8145c68c6c534a34b74000fa666f02992ff0c3c1f92c5e365dbdba150",
                    "EndpointID": "17edefbc9981476ab8c6218deaefeaf75793d4b02aea367dce8c060abe983948",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]
# IPAddress 地址重复了(docker容器内的ip是有可能发生改变的)

Bridge

Docker服务默认会创建一个docker0网桥(其上有一个docker0内部接口),该桥接网络的名称为docker0,他在内核层连通了其他的物理或虚拟网卡。这就将所有容器和本地主机放到同一个物理网络。Docker默认指定了docker0接口的IP和子网掩码。让主机和容器之间可以通过网桥相互通信

查看bridge网络详细信息,并通过grep获取名称项

[root@ecs-56325218 ~]# docker network inspect bridge | grep name
            "com.docker.network.bridge.name": "docker0",
[root@ecs-56325218 ~]# ifconfig | grep docker
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

请添加图片描述

网桥docker0创建一对对等虚拟设备接口一个叫veth,另一个叫eth0成对匹配

  1. 整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此连通(这样一对接口叫做veth pair)
  2. 每个容器实例内部也有一块网卡,每个接口叫做eth0
  3. docker0上面的每个veth匹配某个容器内部的eth0.两两配对,一一匹配

通过上述,宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的ip,此时两个容器的ip是互通的

[root@ecs-56325218 ~]# docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
[root@ecs-56325218 ~]# docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
[root@ecs-56325218 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether fa:16:3e:3b:3a:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.6/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe3b:3a19/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:4f:9b:14:d4 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:4fff:fe9b:14d4/64 scope link 
       valid_lft forever preferred_lft forever
18: veth73d8667@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 7a:7e:42:81:ce:59 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet6 fe80::787e:42ff:fe81:ce59/64 scope link 
       valid_lft forever preferred_lft forever
20: veth5b8262f@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether da:5c:73:1f:ba:d4 brd ff:ff:ff:ff:ff:ff link-netnsid 3
    inet6 fe80::d85c:73ff:fe1f:bad4/64 scope link 
       valid_lft forever preferred_lft forever
# 宿主机上存在veth虚拟接口
[root@ecs-56325218 ~]# docker exec -it tomcat81 bash
root@b187acd19e51:/usr/local/tomcat# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
# 容器内存在对应eth0

Host 请添加图片描述

容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Netwrok Namespace,容器将不会虚拟出自己的网卡而是使用宿主机的ip和端口

[root@ecs-56325218 ~]# docker run -d -p 8083:8080 --network host --name tomcat83 billygoo/tomcat8-jdk8
WARNING: Published ports are discarded when using host network mode
77208dd7f37acaf699395453c21e158398972de5fd091a54c4adf333cb1110c6
[root@ecs-56325218 ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND             CREATED          STATUS          PORTS                                       NAMES
77208dd7f37a   billygoo/tomcat8-jdk8   "catalina.sh run"   14 seconds ago   Up 13 seconds                                               tomcat83
e20c064bcaa7   billygoo/tomcat8-jdk8   "catalina.sh run"   9 minutes ago    Up 9 minutes    0.0.0.0:8082->8080/tcp, :::8082->8080/tcp   tomcat82
b187acd19e51   billygoo/tomcat8-jdk8   "catalina.sh run"   9 minutes ago    Up 9 minutes    0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   tomcat81

有警告,原因:不推荐

忽略警告

[root@ecs-56325218 ~]# docker run -d  --network host --name tomcat83  billygoo/tomcat8-jdk8
[root@ecs-56325218 ~]# curl http://localhost:8080
# 共用宿主机端口

Container 请添加图片描述

tomcat 共用一套网络有端口冲突不适合演示

使用Alpine Linux ,特点:安全、简单、小巧(6M)

[root@ecs-56325218 ~]# docker run -it --name alpine1 alpine /bin/sh
[root@ecs-56325218 ~]# docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh
[root@ecs-56325218 ~]# docker exec -it alpine1 /bin/sh
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 

[root@ecs-56325218 ~]# docker exec -it alpine2 /bin/sh
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

自定义网络:重点

  1. 容器间的互联和通信及端口映射
  2. 容器IP变动时可以通过服务器名直接网络通信而不收到影响

默认桥接的缺点,同一网络内服务名称无法ping通

docker network create aa
docker run -d -p 8081:8080 --network aa --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network aa --name tomcat82 billygoo/tomcat8-jdk8

[root@ecs-56325218 ~]# docker exec -it tomcat81 bash
root@88a936c716c9:/usr/local/tomcat# ping tomcat82
PING tomcat82 (172.20.0.3) 56(84) bytes of data.
64 bytes from tomcat82.aa (172.20.0.3): icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from tomcat82.aa (172.20.0.3): icmp_seq=2 ttl=64 time=0.093 ms
64 bytes from tomcat82.aa (172.20.0.3): icmp_seq=3 ttl=64 time=0.051 ms

以后玩docker一定要维护好服务名,注意!!!以后要走服务名,不要直接走ip了(带宽),做好网络隔离

docker-compose容器编排

工程:docker-compose.yml,一个完整的业务单元

服务:docker-compose.yml里面编写的容器

docker-compose
                -h		# 查看帮助
                up		# 启动所有docker-compose服务
                up -d # 后台启动所有d-c服务
                down	# 停止并删除容器、网络、卷、镜像
                exec yml里面的服务id # 进入容器实例内部 
                ps		# 查看运行容器
                top		# 查看当前容器进程
                logs yml里面的服务id # 日志
                config	# 检查配置
                config -q	# 检查配置,有问题输出
                restart	
                start
                stop

以 https://gitee.com/gz-yami/mall4j.git 为例

具体参考 我的谷

监控

简单监控

docker stats

重量监控

CIG

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day 42 01背包

01背包裸题 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。 每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 二维数组 dp含义&#xff1a; dp[ i ][ j ] 表示从下标为 [ 0 - i ]的物品里…

SpringBoot 整合RabbitMQ

SpringBoot 整合 RabbitMQ 概念 2007 年发布&#xff0c;是一个在 AMQP(高级消息队列协议)基础上完成的&#xff0c;可复用的企业消息系统&#xff0c;是当前最主流的消息中间件之一。 RabbitMQ是一个由erlang开发的AMQP&#xff08;Advanced Message Queue 高级消息队列协议…

Driver、CUDA、CUDNN和TensorRT的关系【深蓝学院】

文章目录 1、Driver、CUDA、CUDNN和TensorRT的关系2、如何选择CUDA版本2.1 如何选择CUDA版本的一个例子 3、手动安装实操 1、Driver、CUDA、CUDNN和TensorRT的关系 2、如何选择CUDA版本 上面的显卡架构及其对应的CUDA版本和稳定版本是怎么得出来的呢&#xff1f;请看下图&#…

【数据结构与算法】将含有n个元素的整数数组A[0…n-1]的元素循环右移1≤m<n)位。要求算法的空间复杂度为O(1)。

题目&#xff1a; Qestion:  设计一个算法 , 将含有 n 个元素的整数数组 A [ 0 … n − 1 ] 的元素循环右移 ( 1 ≤ m < n ) 位。要求算法的空间复杂度为 O ( 1 ) 设计一个算法,将含有n个元素的整数数组A[0…n-1]的元素循环右移(1≤m<n)位。要求算法的空间复杂度为O(1) …

[MySQL]MySQL数据库基础

[MySQL]MySQL数据库基础 文章目录 [MySQL]MySQL数据库基础1. 什么是数据库2. 主流数据库3. 服务器数据库表之间的关系4. 数据逻辑结构5. MySQL架构6. SQL语句分类7. 存储引擎 1. 什么是数据库 数据库是存储在计算机系统内的有结构的数据集合&#xff0c;是相关数据的集合&#…

【业务功能篇38】Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限

在前面的一篇文章中&#xff0c;简单举例了一个 工单电子流&#xff0c;【业务功能篇36】Springbootactiviti7 工作流引擎_studyday1的博客-CSDN博客仅有一个子任务&#xff0c;这种一般是针对比较简单的一个遗留问题记录场景&#xff0c;今天再介绍一个&#xff0c;相对比较复…

rabbitMq怎么查看队列消息-Tracing日志

Trace 是Rabbitmq用于记录每一次发送的消息&#xff0c;方便使用Rabbitmq的开发者调试、排错。 1、启动Tracing插件 在RabbitMQ中默认是关闭的&#xff0c;需手动开启。此处rabbitMQ是使用docker部署的 ## 进入rabbitMq中 docker exec -it rabbitmq1 bash ## 启动日志插件 rabb…

每天五分钟机器学习:构建多特征的线性回归模型

本文重点 在实际应用中,有时候一个单一特征的线性回归模型可能无法很好地解释数据,因此我们可以构建多特征的线性回归模型来提高模型的预测能力。本文还是拿房价问题来举例,来看以下多特征的线性回归模型如何构建? 多特征的数据集 以房价预测为例,现在的样本特征不再是…

贵阳阿里云代理商:阿里云中国区副总裁李国欢:数字经济与实体经济如何融合

中国青年报客户端讯&#xff08;中青在线记者 于璧嘉&#xff09;6月21日&#xff0c;在第六届世界智能大会即将召开之际&#xff0c;阿里云中国区副总裁李国欢在接受媒体专访时表示&#xff1a;“数字经济已经成为社会生产力革命的一个重要生产要素。” 6月21日&#xff0c;阿…

Linux下GO IDE安装和配置(附快捷键)

目前&#xff0c;GoLand、VSCode 这些 IDE 都很优秀&#xff0c;但它们都是 Windows 系统下的 IDE。在 Linux 系统下我们可以选择将 Vim 配置成 Go IDE。熟练 Vim IDE 操作之后&#xff0c;开发效率不输 GoLand 和 VSCode。有多种方法可以配置一个 Vim IDE&#xff0c;这里我选…

mqadmin命令的使用

mqadmin命令的使用 F:\rocketmq-all-4.9.7-bin-release\bin>mqadmin The most commonly used mqadmin commands are: updateTopic Update or create topic deleteTopic Delete topic from broker and NameServer. updateSubGroup Update or create subscription group delet…

【虚拟化】虚拟机xml文件解析

文章目录 虚拟机xml文件解析nameuuidmemory/currentMemoryvcpubootcpuon_poweroffon_rebooton_crashdiskinterfaceinputgraphics 补充说明1.磁盘总线类型 虚拟机xml文件解析 name name # 虚拟机名称&#xff0c;具有唯一性&#xff0c;不可与已建立的虚拟机重复uuid uuid #虚…

MoblieNetV1、V2、V3、ViT四种Moblie模型的分析对比

1、MoblieNetV1 2017年提出&#xff0c;论文地址为&#xff1a;https://arxiv.org/pdf/1704.04861.pdf 1.1 相关知识 提到了标准卷积、深度可分卷积、点卷积&#xff0c;并分析了不同卷积结构的计算量&#xff0c;&#xff08;假设 D k D_k Dk​为ksize&#xff0c;M为卷积的…

在VMware Workstation虚拟机上安装centos服务,并使用xshell连接centos服务。

一、安装VMware Workstation 可前往http://www.kkx.net/soft/22239.html&#xff0c;附带有下载链接&#xff0c;和对应的破解码。 二、下载centos .iso格式文件 前往https://mirrors.aliyun.com/centos/7/isos/x86_64/下载。 以下两个&#xff0c;选择哪一个都行。 记得要下…

【MySQL进阶篇】学习笔记

文章目录 MySQL进阶学习前言1、存储引擎1.1 MySQL体系结构概览1.2 存储引擎介绍1.3 常见存储引擎的特点1.3.1 InnoDB的特点1.3.2 MyISAM1.3.3 Memory1.3.4 总结 2、索引2.1 索引介绍2.2 索引的结构2.2.1 前置知识2.2.2 索引结构的种类 2.3 索引的分类2.4 索引的使用2.4.1 索引的…

Vue3 通过ref获取 el-dialog 内容(组件)中的dom元素的问题

问题描述&#xff1a; 项目中&#xff0c;使用el-dialog组件展示内容&#xff0c;内容是自己封装的一个组件&#xff0c;组件中通过ref获取dom元素然后进行绘制echarts图形的。 问题是&#xff1a;在弹出el-dialog组件后&#xff0c;echarts图形没有渲染出来。刚开始还以为是自…

ArcPy学习心得系列(5)遥感数据中值滤波与均值滤波实现方法(不计入NoDATA)

在数据处理与应用的过程中,我们难免会遇到一些低质量的遥感数据,低质量遥感数据一般是由于天气因素导致的,在云量较多时,卫星传感器所采集到的地面信息被云层所遮挡,导致遥感图像成像过程中产生了较多噪声,对遥感数据的精确度造成了一定影响,如果不解决这些数据中的噪声…

超详细IDEA连接本地数据库以及使用教程

文章目录 前言一、IDEA连接本地数据库二、IDEA使用数据库操作 前言 IDEA的项目要想连接本地数据库&#xff0c;前提就是本地已经配置有数据库&#xff0c;并且可以使用 附Windows10 安装配置数据库教程: 超详细MySQL(免安装版)安装与配置教程 一、IDEA连接本地数据库 点击IDE…

什么是视频|孪生视频孪生,打造实时实景数字孪生应用

元宇宙概念下&#xff0c;虚拟世界和虚拟空间的讨论日益增多&#xff0c;其相关技术的应用和发展也备受关注。在众多技术手段中&#xff0c;数字孪生技术以虚实结合为主&#xff0c;架起虚拟世界与现实世界之间沟通的桥梁。 视频孪生更侧重从真实角度出发&#xff0c;打造实时…

【大数据之Hive】十九、Hive之文件格式和压缩

1 Hadoop压缩概述 Hive中的压缩算法与Hadoop中的压缩算法保持一致&#xff0c;可以把Hive当作Hadoop的一个客户端。 【大数据之Hadoop】十八、MapReduce之压缩 2 Hive文件格式 Hive表中常用的数据存储格式&#xff1a;text file&#xff08;行式存储&#xff09;、orc&#x…