iptables是一个非常强大的Linux防火墙工具,你可以使用它来控制网络流量的访问和转发。 前面已经学习了iptables的基本原理,四表五链的基本概念,也已经安装好了iptables,下面我们主要学习iptables命令的基本使用。 可以使用iptables-h来查看帮助: $iptables-h iptablesv1.6.1 Usage:iptables-[ACD]chainrule-specification[options] iptables-Ichain[rulenum]rule-specification[options] iptables-Rchainrulenu...

Docker能为我们提供很强大和灵活的网络能力,很大程度上要归功于与iptables的结合。在使用时,你可能没有太关注到iptables在其中产生的作用,这是因为Docker已经帮我们自动的完成了相关的配置。 iptables在Docker中的应用主要是用于网络流量控制和安全控制。可以使用iptables规则来限制Docker容器的网络访问,以及将外部流量重定向到Docker容器。 docker的daemon进程有个--iptables的参数,可以使用它来控制是否要自动启用iptables规则的,默认已经设置成了开启(true)。所以通常我们不会过于关注到它的工作。 $dockerd--h...

RPC全称是RemoteProcedureCall,即远程过程调用,其对应的是我们的本地调用。 RPC的目的是:让我们调用远程方法像调用本地方法一样。 //本地调用 Rresult=orderService.findOrderByUserId(id); //RPC远程调用orderService为代理对象 Rresult=orderService.findOrderByUserId(id); RPC框架设计架构: 那么微服务之间如何方便优雅的实现服务间的远程调用? 什么是Feign Feign是Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助我们更加便捷、优雅地调...

命名空间 Namespace是Linux提供的一种对于系统全局资源的隔离机制;从进程的视角来看,同一个namespace中的进程看到的是该namespace自己独立的一份全局资源,这些资源的变化只在本namespace中可见,对其他namespace没有影响。容器就是采用namespace机制实现了对网络,进程空间等的隔离。不同的Container(在K8S中是以Pod为单位)属于不同namespace,实现了Container或Pod之间的资源互相隔离,互不影响。 命名空间将全局系统资源包装在一个抽象中,使命名空间中的进程看起来拥有自己的全局资源的独立实例。对全局资源的更改对作为命名空间成...

DockerCompose实现负载均衡 还是对前面的例子docker-compose.yml稍微修改: version:"3.8" services: flask-demo: build: context:. dockerfile:Dockerfile image:flask-demo:latest environment: REDIS_HOST=redis-server REDIS_PASS=${REDIS_PASS} healthcheck: test:["CMD","curl","-f","http://localhost:5000"] interval:30s timeout:...

dockercompose环境变量 为增加安全性,在前面的python例子中增加redis的密码校验,密码从环境变量中获取: fromflaskimportFlask fromredisimportStrictRedis importos importsocket app=Flask(__name__) redis=StrictRedis(host=os.environ.get('REDIS_HOST','127.0.0.1'), port=6379,password=os.environ.get('REDIS_PASS')) @app.route('/') defhello(): ...

Docker提供了多种内置的网络模式,用于在容器之间建立网络连接。这些网络模式,包括桥接网络、主机网络、无网络模式。我们将主要探讨每种网络模式的优缺点、适用场景。 桥接网络 桥接网络是Docker的默认网络模式。在桥接网络中,Docker会为每个容器创建一个虚拟网络接口,并为容器分配一个IP地址。容器可以通过桥接网络与主机和其他容器进行通信。 桥接网络适用于单主机上的多个容器之间的通信,例如微服务架构中的多个服务容器之间的通信。 优点 隔离性:每个容器都有独立的网络命名空间,相互之间隔离,不会互相干扰。简单易用:桥接网络是默认的网络模式,无需额外配置,容器可以直接进行通信。跨主机通信:可...

开启Buildkit BuildKit是Docker官方社区推出的下一代镜像构建神器,可以更加快速,有效,安全地构建docker镜像。 尽管目前BuildKit不是Docker的默认构建工具,但是完全可以考虑将其作为Docker(v18.09+)的首选构建工具。 官方文档:https://docs.docker.com/build/buildkit/ 下面介绍一下怎么开启BuildKit。 在/etc/docker/daemon.json里添加(如果没有这个文件,则新建),然后重启docker {"features":{"buildkit":true}} 或者在执行dockerbuil...

默认情况下,在运行中的容器里创建的文件,被保存在一个可写的容器层里,如果容器被删除了,则对应的数据也随之删除了。 这个可写的容器层是和特定的容器绑定的,也就是这些数据无法方便的和其它容器共享。 Docker主要提供了两种方式做数据的持久化: DataVolume:由Docker管理(数据目录/var/lib/docker/volumes/),持久化数据的最好方式 BindMount:由用户指定存储的数据具体mount在系统什么位置 DataVolume 准备一个脚本 date.sh !/bin/bash whiletrue do echo`date` echo`date`>&...

我们知道使用一个Dockerfile模板文件,可以让用户很方便的定义⼀个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。 例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等,我们只能一个一个写dockerfile文件,然后bulid构建和run,手动操作单个容器。 DockerCompose恰好满足了这样的需求。它允许⽤户通过⼀个单独的docker-compose.yml模板⽂件(YAML格式)来定义⼀组相关联的应⽤容器为⼀个项⽬(project)。 docker-compose基础概念 ...

为什么不建议在生产环境中使用DockerCompose 多机器如何管理? 如何跨机器做scale横向扩展? 容器失败退出时如何新建容器确保服务正常运行? 如何确保零宕机时间? 如何管理密码,Key等敏感数据? DockerSwarm介绍 DockerSwarm是Docker官方推出的容器集群管理工具,基于Go语言实现。使用它可以将多个Docker主机封装为单个大型的虚拟Docker主机,快速打造一套容器云平台。 DockerSwarm是生产环境中运行Docker应用程序最简单的方法。作为容器集群管理器,Swarm最大的优势之一就是100%支持标准的DockerAPI。各种基于标准API的...

veth实现了点对点的虚拟连接,可以通过veth连接两个namespace,如果我们需要将3个或者多个namespace接入同一个二层网络时,就不能只使用veth了。 在物理网络中,如果需要连接多个主机,我们会使用bridge(网桥),或者又称为交换机。Linux也提供了网桥的虚拟实现。下面我们试验通过Linuxbridge来连接三个namespace。 创建3个NetworkNamespace $ipnetnsaddns0 $ipnetnsaddns1 $ipnetnsaddns2 $ipnetnslist ns2 ns1 ns0 创建3对vethpair $iplinkad...

使用RestTemplate发送请求时,如果接口返回值中包含中文就会出现乱码: RestTemplaterestTemplate=newRestTemplate(); Stringresult=restTemplate.getForObject("http://www.baidu.com",String.class); System.out.println(result); 运行结果如下: <!DOCTYPEhtml> <!--STATUSOK--><html><head><metahttp-equiv=content-typeco...

SpringCloudLoadBalancer是SpringCloud官方自己提供的客户端负载均衡器,用来替代Ribbon。 Spring官方提供了两种客户端都可以使用loadbalancer: RestTemplate:Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。 WebClient:从SpringWebFlux5.0版本开始提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具。它的响应式编程的基于Reacto...

在Spring5中,出现了Reactive响应式编程思想,并且为网络编程提供相关响应式编程的支持,如提供了WebFlux,它是Spring提供的异步非阻塞的响应式的网络框架,相比传统的SpringMVC框架,可以充分利用多CPU并行处理一些功能,虽然不能提高单个请求的响应能力,但是总体可以提高多核的服务器性能,提高系统吞吐量和伸缩性,特别适合于IO密集型服务。 WebClient提供的基于响应式的非阻塞的Web请求客户端,相对于传统的RestTemplate,他不阻塞代码、异步执行。 使用WebClient需要引入下面的依赖: <dependency> <groupId&...

内嵌文档查询包括两种情况 查询整个内嵌文档,当内嵌文档键值对的数量以及键值对的顺序都相同时,才会匹配 查询文档的某个字段,需要使用.号操作符 实例 vardb=connect("localhost:27017/test"); db.col.drop(); varbulk=db.col.initializeUnorderedBulkOp(); //测试数据 vardoc1= { "name":"xiaoli", "age":20, "address": { "province":"GuangDong", "city":"ShenZhen" } } ...

  M4jFg8P4bdk8   2023年11月02日   21   0   0 ciJSON字段MongoDB

Shell是什么?Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系...

  M4jFg8P4bdk8   2023年11月02日   22   0   0 linuxshell编译型语言bash

添加管理员账号 >useadmin switchedtodbadmin >db.createUser({user:'admin',pwd:'admin',roles:[{role:'dbAdminAnyDatabase',db:'admin'}]}) Successfullyaddeduser:{ "user":"admin", "roles":[ { "role":"dbAdminAnyDatabase", "db":"admin" } ] } 开启用户权限认证 [root@tbtravellocal]mong...

  M4jFg8P4bdk8   2023年11月02日   61   0   0 mongodb用户登录用户权限用户名

镜像的获取 镜像可以从以下方式获得: 从远程镜像仓库拉取,可以是公有仓库,也可以是私有仓库 从Dockerfile构建 从文件导入(离线) 从容器提交 镜像的基本操作 跟镜像相关的命令如下: $dockerimage--help Usage:dockerimageCOMMAND Manageimages Commands: buildBuildanimagefromaDockerfile historyShowthehistoryofanimage importImportthecontentsfromatarballtocreateafilesystemimage inspe...

  M4jFg8P4bdk8   2023年11月02日   30   0   0 docker容器镜像podman运维
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~