映射端口

4、Docker网络访问

不打扰是莪最后的温柔 提交于 2019-11-29 00:32:40
现在我们已经可以熟练的使用docker命令操作镜像和容器,并学会了如何进入到容器中去,那么实际的工作中,我们通常是在Docker中部署服务,我们需要在外部通过IP和端口进行访问的,那么如何访问到Docker的内部服务呢? 在后面我们会有专门的章节来讲解Docker的网络配置,这里我们先学习一个比较简单的通过网络访问容器的方法,就是端口映射。 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 随机映射 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 下面我们以一个nginx的容器为例子来测试一下-P的功能,大家可以使用search搜索下nginx镜像,我们使用官方的nginx镜像来启动一个容器。 [root@linux-node1 ~]# docker search nginx 这次我们不执行docker pull。直接来启动容器,你会发现docker会先查找你本地是否有该镜像,如果没有它会自动下载后,然后启动容器。 [root@linux-node1 ~]# docker run -d -P nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx

二层、三层、四层交换机的区别!!

爱⌒轻易说出口 提交于 2019-11-28 23:59:33
二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下:   (1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;   (2) 再去读 取包头中的目的MAC地址,并在地址表中查找相应的端口;   (3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;   (4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。   不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。   从二层交换机的工作原理可以推知以下三点:   (1) 由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换总线带宽,如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换机就可以实现线速交换;   (2) 学习端口连接的机器的MAC地址,写入地址表,地址表的大小(一般两种表示方式:一为BEFFER RAM,一为MAC表项数值),地址表大小影响交换机的接入容量;   (3)

Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量

有些话、适合烂在心里 提交于 2019-11-28 23:47:37
原文链接: Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量 在 Kubernetes 中运行大规模以 Web 为中心的工作负载,最关键的需求之一就是在 L7 层实现高效流畅的入口流量管理。自从第一批 Kubernetes Ingress Controller 开发完成以来, Envoy (由 Matt Klein 和 Lyft 团队开发)已经成为云原生生态系统中的新生力量。Envoy 之所以受到支持,因为它是一个 CNCF 托管的项目,与整个容器圈和云原生架构有着天然的支持。 容器公司 Heptio 开源的项目 Contour 使用 Envoy 作为 Kubernetes 的 Ingress Controller 实现,为大家提供了一条新的 Kubernetes 外部负载均衡实现思路。 据 官方博客 介绍, Heptio Contour 可以为用户提供以下好处: 一种简单的安装机制来快速部署和集成 Envoy。 与 Kubernetes 对象模型的集成。 Ingress 配置的动态更新,而无需重启底层负载均衡器。 项目成熟后,将允许使用 Envoy 一些强大的功能,如熔断器、插件式的处理器链,以及可观测性和可调试性,可以非常方便地对接监控系统。 IngressRoute 之间可以级联,用来做蓝绿部署非常方便。 下面我们就来试用一下。 1

docker 常用命令总结

余生颓废 提交于 2019-11-28 22:17:19
docker 常用命令总结 docker search centos:7.2.1511 #带指定版本号 docker search centos #不带版本号默认 latest docker pull 仓库服务器:端口/项目名称/镜像名称:tag(版本)号 查看本地镜像:docker images REPOSITORY #镜像所属的仓库名称 TAG #镜像版本号(标识符),默认为 latest IMAGE ID #镜像唯一 ID 标示 CREATED #镜像创建时间 VIRTUAL SIZE #镜像的大小 命令总结: docker load -i centos-latest.tar.xz #导入本地镜像 docker save centos > /opt/centos.tar #centos #导出镜像 docker rmi 镜像 ID/镜像名称 #删除指定 ID 的镜像,通过镜像启动容器的时 候镜像不能被删除,除非将容器全部关闭 docker rm 容器 ID/容器名称 #删除容器 docker rm 容器 ID/容器名-f #强制删除正在运行的容器 删除容器操作 docker stop $(docker ps -a -q) #正常关闭所有运行中的容器 docker kill $(docker ps -a -q) #强制关闭所有运行中的容器 docker rm -f docker

linux命令 iperf-网络性能测试工具

岁酱吖の 提交于 2019-11-28 20:02:39
iperf命令 是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。 Iperf的主要功能如下: TCP 测量网络带宽 报告MSS/MTU值的大小和观测值 支持TCP窗口值通过套接字缓冲 当P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接 UDP 客户端可以创建指定带宽的UDP流 测量丢包 测量延迟 支持多播 当P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows) 其他 在适当的地方,选项中可以使用K(kilo-)和M(mega-)。例如131072字节可以用128K代替。 可以指定运行的总时间,甚至可以设置传输的数据总量。 在报告中,为数据选用最合适的单位。 服务器支持多重连接,而不是等待一个单线程测试。 在指定时间间隔重复显示网络带宽,波动和丢包情况。 服务器端可作为后台程序运行。 服务器端可作为Windows 服务运行。 使用典型数据流来测试链接层压缩对于可用带宽的影响。 支持传送指定文件,可以定性和定量测试Iperf使用方法 iperf分为两种版本,Unix/Linux版和Windows版,Unix/Linux版更新比较快

服务器小白的我,是如何将 node+mongodb 项目部署在服务器上并进行性能优化的

陌路散爱 提交于 2019-11-28 17:52:48
前言 本文讲解的是:做为前端开发人员,对服务器的了解还是小白的我,是如何一步步将 node+mongodb 项目部署在阿里云 centos 7.3 的服务器上,并进行性能优化,达到页面 1 秒内看到 loading ,3 秒内看到首屏内容的。 搭建的项目是采用了主流的前后端分离思想的,这里只讲 服务器环境搭建与性能优化。 效果请看 https://biaochenxuying.cn 1. 流程 开发好前端与后端程序。 购买服务器与域名 服务器上安装所需环境(本项目是 node 和 mongodb ) 服务器上开放端口与设置规则 用 nginx、apache 或者tomcat 来提供HTTP服务或者设置代理 上传项目代码 或者 用码云或者 gihub 来拉取你的代码到服务器上 启动 express 服务器 优化页面加载 2. 内容细节 2.1 开发好前端与后端程序 开发好前端与后端程序,这个没什么好说的,就是开发!开发!开发!再开发! 2.2 购买服务器与域名 本人一直觉得程序员应该有一个自己的个人网站,拥有自己的域名与服务器。学知识或者测试项目的时候可以用来测试。 阿里云有个专供学生的云翼计划 阿里云学生套餐 ,入门级的云服务器原价1400多,学生认证后只要114一年,非常划算。 还是学生的,直接购买;不是学生了,有弟弟、妹妹的,可以用他们的大学生身份,购买,非常便宜实用

网络相关

浪尽此生 提交于 2019-11-28 15:46:36
IP: package com.sxt.loc; import java.net.InetAddress; import java.net.UnknownHostException; /** * IP:定位一个节点:计算机、路由、通讯设备等 * InetAddress: 多个静态方法 * 1、getLocalHost:本机 * 2、getByName:根据域名DNS | IP地址 -->IP * * 两个成员方法 * 1、getHostAddress: 返回地址 * 2、getHostName:返回计算机名 * * */ public class IPTest { public static void main(String[] args) throws UnknownHostException { //使用getLocalHost方法创建InetAddress对象 本机 InetAddress addr = InetAddress.getLocalHost(); System.out.println(addr.getHostAddress()); //返回:192.168.1.110 System.out.println(addr.getHostName()); //输出计算机名 //根据域名得到InetAddress对象 addr = InetAddress.getByName

Docker的数据管理及网络通信

妖精的绣舞 提交于 2019-11-28 13:23:11
一、docker的数据管理 在docker中,为了方便查看容器内产生的数据或者将多个容器之间的数据实现共享,会涉及到容器的数据管理操作,管理docker容器中的数据主要有两种方式:数据卷和数据卷容器。 1、数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立即可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移,数据卷的使用类似于Linux下对目录进行的mount挂载操作(注意:是将宿主机本地的目录挂载到容器中,举例:若宿主机本地/data目录挂载的是/dev/sdb1,那么要将/data做数据卷映射时,容器中指定的目录使用的文件系统也是/dev/sdb1,我不知道这样解释,你们能不能理解它的工作原理)。 挂载宿主机目录作为数据卷举例: 使用-v选项可以创建数据卷(只是运行容器时,创建一个目录),创建数据卷的同时将宿主机的目录挂载到数据卷上使用,以实现宿主机与容器之间的数据迁移。 需要注意的是,宿主机本地目录的路径必须是使用绝对路径,如果路径不存在,Docker会自动创建相应的路径。 [root@localhost ~]# docker run -d -p 5000:5000 -v /data/registry/:/tmp/registry docker.io/registry #这是运行了一个私有仓库的容器

Linux文件共享服务 FTP,NFS 和 Samba

余生颓废 提交于 2019-11-28 12:24:35
Linux 系统中,存储设主要有下面几种: DAS DAS 指 Direct Attached Storage,即直连附加存储,这种设备直接连接到计算机主板总线上,计算机将其识别为一个块设备,例如常见的硬盘,U 盘等,这种设备很难做到共享。 NAS NAS 指 Network Area Storage,它一般是将本地的存储空间共享给其他主机使用,一般通过 C/S 架构实现通信。它实现的是文件级别的共享,计算机通常将共享的设别识别为一个文件系统,其文件服务器会管理锁以实现并发访问。常见的 NAS 有 NFS 和 CIFS。 SAN SAN 指 Storage Area Network,它将传输网络模拟成 SCSI 总线来使用,每一个主机的网卡相当于 SCSI 总线中的 initiator,服务器相当于一个或多个 target,它需要借助客户端和服务端的 SCSI 驱动,通过 FC 或 TCP/IP 协议封装 SCSI 报文。它实现的是块级别的共享,通常被识别为一个块设备,但是需要借助专门的锁管理软件才能实现多主机并发访问。 FTP FTP 是一个文件传输的协议,客户端需要使用专门的 ftp 客户端与服务器端进行通信,以完成文件的上传和下载,FTP 协议工作在应用层。它使用两个连接与客户端通信: 命令连接:用于传输文件管理类命令,此连接在客户端连接后会始终在线 数据连接

什么是socket

你。 提交于 2019-11-28 08:53:36
要写网络程序就必须用 Socket ,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会 Socket 编程?一般来说,很多人都会说, Socket 编程基本就是 listen , accept 以及 send , write 等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。 对于网络编程,我们也言必称 TCP/IP ,似乎其它网络协议已经不存在了。对于 TCP/IP ,我们还知道 TCP 和 UDP ,前者可以保证数据的正确和可靠性,后者则允许数据丢失。最后,我们还知道,在建立连接前,必须知道对方的 IP 地址和端口号。除此,普通的程序员就不会知道太多了,很多时候这些知识已经够用了。最多,写服务程序的时候,会使用多线程来处理并发访问。 我们还知道如下几个事实: 1 。一个指定的端口号不能被多个程序共用。比如,如果 IIS 占用了 80 端口,那么 Apache 就不能也用 80 端口了。 2 。很多防火墙只允许特定目标端口的数据包通过。 3 。服务程序在 listen 某个端口并 accept 某个连接请求后,会生成一个新的 socket 来对该请求进行处理。 于是,一个困惑了我很久的问题就产生了。如果一个 socket 创建后并与 80 端口绑定后,是否就意味着该 socket 占用了 80 端口呢?如果是这样的,那么当其 accept 一个请求后