Go语言中文网 为您找到相关结果 145

Docker命令详解

序 在上一篇基于Docker进行Golang开发文章中对Docker进行了安装,并对如何用Docker进行Golang开发进行了描述,本文再对Docker命令进行讲解。 查看Docker命令 ➜ tonny@tonny-pc ~ docker -h Usage: docker [OPTIONS] COMMAND [arg...] docker [ --help | -v | --version ] A self-sufficient runtime for containers. Options: --config=~/.docker Location of client config files -D, --debug Enable debug mode -H, --host=[] Dae...阅读全文

博文 2017-02-10 15:53:19 技术学习

聊聊Tomcat的架构设计

微信公众号「后端进阶」,专注后端技术分享:Java/Golang/WEB框架/分布式中间件/服务治理 老司机倾囊相授,带你一路进阶,来不及解释了快上车! Tomcat 是 Java WEB 开发接触最多的 Servlet 容器,但它不仅仅是一个 Servlet 容器,它还是一个 WEB 应用服务器,在微服务架构体系下,为了降低部署成本,减少资源的开销,追求的是轻量化与稳定,而 Tomcat 是一个轻量级应用服务器,自然被很多开发人员所接受。 Tomcat 里面藏着很多值得我们每个 Java WEB 开发者学习的知识,可以这么说,当你弄懂了 Tomcat 的设计原理,Java WEB 开发对你来说已经没有什么秘密可言了。本篇文章主要是跟大家聊聊 Tomcat 的内部架构体系,让大家对 Tomc...阅读全文

博文 2019-05-31 21:34:50 公众号_后端进阶

HTTP协议杂谈一

HTTP协议中方法的变更: 0.9版本的http协议中只有GET方法 1.0增加了HEAD和POST方法 1.1 增加了PUT,DELETE等方法 协议作者最初定义这些方法时是期望这些方法的请求的操作与方法名称相符。比如GET方法,应该就是个只读的请求。在遵循http协议方法定义的初衷方面,最出名的莫过于有名的REST api设计。 但是,现在很多很多公司都没有继续遵循这一点,甚至有些公司的http接口的实现基本都是采用POST方法,只有静态资源才是采用GET方法。另外由于一些公司用http服务的形式提供内部接口调用,这部分接口不直接对外,所以也基本上可以不遵循。当然最初http协议只是浏览器和web server之间进行交互的标准,公司内部提供接口调用打破了原有的使用边界。 我想协议最初的...阅读全文

博文 2020-03-22 17:32:43 golang推广大使

DockOne微信分享(一三零):探究PaaS网络模型设计

【编者的话】PaaS的抽象逻辑使得其网络模型与IaaS有所不同,本次通过重点说明Kubernetes和Docker的网络,从而来探究PaaS的网络模型设计。 【3 天烧脑式容器存储网络训练营 | 深圳站】本次培训以容器存储和网络为主题,包括:Docker Plugin、Docker storage driver、Docker Volume Pulgin、Kubernetes Storage机制、容器网络实现原理和模型、Docker网络实现、网络插件、Calico、Contiv Netplugin、开源企业级镜像仓库Harbor原理及实现等。 PaaS和IaaS的网络需求概念上来说,IaaS是基础架构即服务,PaaS是平台即服务。从服务化角度来说两者对于网络的需求有共同点: 一台宿主机的网络隔...阅读全文

博文 2017-07-20 11:48:58 wulonghui

用Golang写的域名信息搜集工具

blacksheepwall是一款由Go语言编写的域名信息搜集工具 ,你也可以在你的工具中将它作为一个独立软件包来使用。 下载 blacksheepwall支持跨平台,目前它所支持的系统有windows、linux以及苹果的darwin。你可以在这里下载到不同版本的二进制软件包。 安装 你可以直接下载编译好的二进制文件运行并安装它。如果你的系统已经安装好了Go语言环境并配置好了工作区,那么你也可以直接通过以下命令下载安装: $ go get github.com/tomsteele/blacksheepwall 使用 Usage: blacksheepwall [options] 命令选项: -h, --help 显示帮助信息并退出 -version...阅读全文

博文 2018-01-11 00:30:00 h2zZhou

docker+jenkins+golang持续集成实践[转载自我的博客]

博客地址:yeqown.github.com 起因 因为生产需要最近又重新折腾了一下Jenkins和docker。主要目的是想自动编译,打包,部署一些Golang的HttpServer。于是决定使用Jenkins来做这个持续集成的载体,选择Jenkins出于两点原因: 1. 以前就使用过,上手会更快2. 社区比较成熟,插件和文档丰富 安装Docker和Pull Jenkins镜像 这一步,作为前置条件且不是本文主要要描述的步骤,因此略去。网上也有很多参考资料~ Jenkins & docker-compose配置 为了方便我才用了docker-compose这个工具,docker-compose 基础可以参见我的docker-compose上手。这里直接上配置: version: '2' s...阅读全文

通过不到100行Go代码打造你自己的容器

Docker在2013年三月实现了开源发布,它的出现让软件开发行业对于现代化应用的打包以及部署方式发生了巨大的变化。紧随着Docker的发布,各种具有竞争性、致敬性以及支持性的容器技术纷纷涌现,为这一领域带来了极大的关注度,同时也引起了人们的反思。这一系列文章将解答读者的各种困惑,对如何在企业中实际使用容器进行分析。 这一系列文章首先将对容器背后的核心技术进行观察,了解开发者目前如何使用容器,随后将分析在企业中部署容器的核心挑战,例如如何将容器技术与持续集成和持续交付管道进行集成,并对监控方式进行改进,以支持不断变化的负载,以及使用短期容器的潜在需求。本系列文章的总结部分将对容器技术的未来进行分析,并探讨无核化技术(unikernels)目前在处于技术前沿的组织中所扮演的角色。 本文是本系列...阅读全文

博文 2016-08-23 04:00:07 justdoithai

选择哪种 Linux版本更好一些?

很多人经常会问我这样一个问题:“嘿,你是用Linux的,对吧?我应该使用Linux的哪个版本?我有这个朋友推荐我_____,你觉得怎么样?”我通常会以这样的问题回复:这取决于你想做什么? 今天我决定写一篇关于如何选择Linux发行版的博客文章,以便于大家借鉴。 Screenshot from 2019-08-31 00-08-53.png 我与Linux的历史 我觉得我应该先介绍一下我和Linux的过往,以防你在阅读本文时无法理解我。当然,如果你不在乎,你也可以跳过。 我在1996年左右开始使用Linux。我和Linux的第一次亲密接触是Slackware 4,这是我在Egghead Software购买的一套CD(没错,是旧的)。我的一个朋友告诉我这个Unix非常棒,他说我只需要尝试一下,...阅读全文

博文 2019-10-08 21:32:45 aside section ._1OhGeD

kube-apiserver审计日志记录和采集

Kubernetes 审计功能提供了与安全相关的按时间顺序排列的记录集,记录单个用户、管理员或系统其他组件影响系统的活动顺序。它能帮助集群管理员处理以下问题: 发生了什么? 什么时候发生的? 谁触发的? 为什么发生? 在哪观察到的? 它从哪触发的? 它将产生什么后果? Kube-apiserver 执行审计。每个执行阶段的每个请求都会生成一个事件,然后根据特定策略对事件进行预处理并写入后端。 每个请求都可以用相关的 “stage” 记录。已知的 stage 有: RequestReceived -事件的 stage 将在审计处理器接收到请求后,并且在委托给其余处理器之前生成。 ResponseStarted - 在响应消息的头部发送后,但是响应消息体发送前。这个 stage 仅为长时间运行的...阅读全文

博文 2019-10-18 10:02:49 小碗汤

C 语言getopt与go语言flag获取命令参数

C语言中的getopt()函数为命令参数的获取提供了很大便利,与golang中的flag功能类似。 C语言getopt 下面以ssh中获取主机名/ip和用户名为例来示例如何使用getopt(). int get_user_host(int ac, char **av, char *host, char *user){ char *p, *cp; extern int optind; int opt; again: while ((opt = getopt(ac, av, "1246AaCfgKkMNnqsTtVvXxYyb:c:D:e:F:I:i:L:l:m:O:o:p:R:S:W:w:")) != -1){ switch (opt){ case '1': break; case '2': ...阅读全文

博文 2017-08-05 16:04:57 这世界有我

golang实现qq聊天之客户端与服务器

一、用到的net方法 1 、客户端: var buf [512]byte tcpAddr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:9090") //向服务器拨号 conn, _ := net.DialTCP("tcp", nil, tcpAddr) //获取远程服务器地址 rAddr := conn.RemoteAddr() //发送数据 n, _ := conn.Write([]byte("")) //接收数据 n, _ = conn.Read(buf[0:]) 2、服务器 func ResolveTCPAddr(network, address string) (*TCPAddr, error) ResolveTCPAddr返回TCP端点的地...阅读全文

博文 2018-12-14 19:34:46 Mr丶易客

DockOne微信分享( 九十四):唯品会基于Kubernetes的网络方案演进

【编者的话】本文主要介绍唯品会云平台PaaS在持续集成和持续部署方面,基于Docker和Kubernetes,对网络方案的选型及应用,以及随着业务需求的增加而经历的网络方案变更,包括: Kubernetes + Flannel;基于Docker libnetwork的网络定制;Kubernetes + Contiv + kube-haproxy;基于Kubernetes的应用容器IP固定方案。 背景简介PaaS平台持续部署以镜像方式部署,公司业务域对应平台内的应用。平台应用管理包括应用配置管理以及应用的运行态管理。一个应用的运行态对应kubernetes的一个Replication Controller(后面使用RC简称)和一个Service,应用实例对应kubernetes中的Pod, 我...阅读全文

博文 2017-06-25 16:25:23 wangchang517

使用letencrypt和nginx来部署多个证书

有一个需求是在letencrypt上申请证书并且部署到nginx. 咋一看很简单, 官方提供的certbot就能实现? 不过真实场景比较复杂, 我们还需要更多实用功能: 自动申请任何域名的ssl证书并实现多台nginx部署 自动续签证书并通知nginx reload 可并发申请证书 官方提供的hook功能有限, 而且编码复杂并不能很好的实现"自动", 所以便自行用Golang实现, 记录下思路 服务器架构 首先区分客户端和服务端, 服务端负责获取证书并通知客户端部署, 客户端负责将证书和nginx文件写入nginx目录并reload. 服务端 要做的事情有 使用ACME协议向letencrypt申请证书, 并实现http01挑战, 使用的包是"github.com/xenolf/lego/a...阅读全文

高中生也能读懂的Docker入门教程

Docker 是 Golang 编写的, 自 2013 年推出以来,受到越来越多的开发者的关注。如果你关注最新的技术发展,那么你一定听说过 Docker。不管是云服务还是微服务(Microservices),越来越多的厂商都开始基于 Docker 作为基础设施自动化的工具。那么什么是 Docker?Docker与传统的虚拟机有什么区别?为何要采用 Docker?如何使用 Docker?本文,就针对上述提到的问题,来简单介绍下 Docker。什么是 DockerDocker 是开源的应用容器引擎。Docker 可以让你将所有应用软件以及它的以来打包成软件开发的标准化单元。Docker 容器将软件以及它运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管是在什么样的...阅读全文

DockOne微信分享( 九十三)魅族云Docker实践

【编者的话】介绍魅族云的场景需求,如何引入Docker,在网络、存储、镜像技术的选择,如何落地的等等。主要内容: 魅族云业务场景魅族云Docker化设计理念网络、存储、镜像技术的选择Docker化落地情况 1、魅族云业务场景魅族云的需求场景可以分为以下几大块: 镜像需求:应用想上Docker就需要镜像,我们跟业务运维一起定好镜像的Dockerfile,push到镜像仓库,这个私有仓库存储了公司内部使用的所有镜像。然后我们会在承载Docker的宿主机预热这些镜像,加快速度;机器申请:我们有使用KVM的历史包袱的,所以在机器申请的时候就会走不同的通道,有KVM的和Docker的;业务发布:这是应用用得最多的场景,上了Docker就涉及到一个问题,如何屏蔽掉KVM和Docker机器的区别,我们有一...阅读全文

博文 2017-06-25 16:25:23 DarkForces.

Golang ServeMux 是如何实现多路处理的

之前出于好奇看了一下 Golang net/http 包下的部分源码,今天想还是总结一下吧。由于是第一次写文章且抱着忐忑的心情发表,可能有些语义上的不清楚,谅解一下,或者提出修改的建议! 简介 net/http 包里的 server.go 文件里注释写着:ServeMux is an HTTP request multiplexer. 即 ServeMux 是一个 HTTP 请求的 "多路处理器",因为 ServeMux 实现的功能就是将收到的 HTTP 请求的 URL 与注册的路由相匹配,选择匹配度最高的路由的处理函数来处理该请求。 最简单的栗子: mux := http.NewServeMux() mux.HandleFunc("/a/b", ab) mux.HandleFunc("/a...阅读全文

博文 2019-11-20 16:04:34 Mivinci

Kubernetes之路 1 - Java应用资源限制的迷思

摘要: 随着容器技术的成熟,越来越多的企业客户在企业中选择Docker和Kubernetes作为应用平台的基础。然而在实践过程中,还会遇到很多具体问题。本文分析并解决了Java应用在容器使用过程中关于Heap大小设置的一个常见问题。 ![图片描述](http://img.blog.csdn.net/20180329124855321?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWlpbnNpZ2h0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 随着容器技术的成熟,越来越多的企业客户在企业中选择Docker和Kubern...阅读全文

搭建个私有docker镜像仓库

公有仓库和私有仓库: 速度:公有仓库走的公网,速度较慢;私有仓库走的是内网,即局域网; 安全性:公有仓库存放在公共硬盘上;私有仓库存在自己服务器硬盘上。 公有仓: 最权威的,但速度比较慢: https://hub.docker.com/ 首先登陆: $ docker login -usmallsoup Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandli...阅读全文

博文 2019-10-18 10:02:51 小碗汤

Android OKHttp系列5-ConnectInterceptor

文章将会被同步至微信公众号:Android部落格 Android OKHttp系列皆为本人原创文章,未经允许严禁转载 概述 选定连接接口,并开始连接目标 流程图如下: okhttp-ConnectInterceptor.jpg 原图片地址:http://i66.tinypic.com/rjqglx.jpg 1、找RealConnection 选择合适的HttpCodec,为什么要选择呢?因为涉及到Http版本的问题,此处需要兼容,先看代码: boolean doExtensiveHealthChecks = !request.method().equals("GET"); HttpCodec httpCodec = streamAllocation.newStream(client, cha...阅读全文

DockOne技术分享(四十一):思源基于Docker和OpenStack的私有云平台实践

【编者的话】本次分享从以下三方面进行:使用Docker对OpenStack平台压力测试实践、使用Docker加速Sahara-Hadoop、Docker在 Nova项目的使用和实践。 无Docker不OpenStack,当前讨论OpenStack总是离不开Docker。这里我先嚼一下剩饭,下面是OpenStack上Docker技术分布的老图。 我们包括生产化/测试/调研阶段的Docker化项目包括了:Heat、Magnum、Sahara、Nova、以及OpenStack平台本身的自动打包和平台稳定性测试方面。 1. Docker OpenStack平台稳定性测试OpenStack平台本身是一个SOA的项目,具体服务的参数设置需要依据集群规模,服务搭建架构等进行相关测试和调优。Fake是Ope...阅读全文

博文 2017-06-25 15:01:27 麻省姆斯

容器、Docker与Kubernetes——从基础设施的容器化谈起

【编者的话】作者是Collective Idea公司的运维,也是个对技术有深度理解的人,这篇文章是作者在实践immutable infrastructure理念过程中对容器的理解,这是第一篇,主要讲述传统运维工具如Chef与Docker等容器化运维工具的不同以及解决的问题。 作为一名长期从事运维的工程师来说,我会时常审视维护服务器工作的简单性与可重现性;而我的一个最重要的工作原则便是“永远不要手动操作服务器”。所有服务器都必须由工具进行启动(provisioned)与配置以运行,同时通过工具来监控、维护服务器的状态——而我的选择是Chef;当然你也可以有很多其他选择如:Ansible、Salt与Puppet。 在Collective Idea中,Chef确实运行得非常好,它管理着公司内部与外...阅读全文

使用极简镜像scratch,构造一个返回主机名的镜像

使用golang生成一个返回镜像名的源代码 package main import ( "fmt" "log" "net/http" "os" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { host, _ := os.Hostname() fmt.Println("good job!") fmt.Fprintf(w, host) //这个写入到w的是输出到客户端的 } func main() { http.HandleFunc("/", sayhelloName) //设置访问的路由 err := http.ListenAndServe(":8080", nil) //设置监听的端口 if err != nil {...阅读全文

博文 2019-06-28 18:32:39 heliping_peter

归档

嗯..! 目前共计 17 篇日志。 继续努力。 2019 一个奇怪的golang对切片的竞争检测问题 04-19 聊一聊golang的结构体标签 04-14 一个奇怪的golang等值判断问题 04-03 Golang实现数据结构“栈”的三种实现,性能对比及应用示例 04-02 K8S CNI之:利用ipvlan+host-local+ptp打通容器与宿主机的平行网络 03-19 解决网卡丢包问题,以及丢包问题解决后系统网络还是慢的问题 01-17 2018 Linux 虚拟化之:Net Namespace 下的网络通信 12-21 K8S 如何使用具有配额限制的 ceph 共享存储 12-18 CoreDNS系列2:KubeDNS 架构组成及实现原理 11-22 CoreDNS系列1:Ku...阅读全文

博文 2019-04-26 11:51:30 国南之境

Docker部署web遇到的问题总结

PART I 问题一 用docker部署一个golang 的http服务,内部监听的端口地址为: 127.0.0.1:9090, 写dockerfile的时候暴露端口 expose 9090,然后生成镜像,后面运行docker 镜像成功启动http服务,测试的时候 curl http:lcoalhost:9090/api/****,宿主机上报错 curl connection reset by peer 引起原因:因为服务器内部没有监听端口,而在docker run的时候却指定了该端口。根本引起的缘由是:你在本地指定了 host为localhost,只允许本机访问,这样最后导致docker 启动起来的时候 映射端口失败,导致出现connection reset by peer; 解决办法:将...阅读全文

博文 2019-10-30 16:32:55 aside section._1OhGeD

DockOne技术分享(二十九): 蘑菇街基于Docker的私有云实践

【编者的话】本次主要想分享一下过去一年时间里,我们在建设基于Docker的私有云实践过程中,曾经遇到过的问题,如何解决的经验,还有我们的体会和思考,与大家共勉。 郭嘉是@Container容器技术大会讲师,想一睹大师风采的同学欢迎报名参加大会,现场交流。 @Container大会是专为一线开发者和运维工程师设计的顶级容器技术会议,会议强调实践和交流,话题设置围绕容器、运维、云计算等技术领域,力求全方位、多角度为参会者解读容器技术。 很高兴今天能在这里分享一下蘑菇街在生产环境中使用Docker的一些经历和经验。蘑菇街的私有云项目是2014年圣诞节期间上线的,从无到有,经过了半年多的发展,经历了3次大促,已经逐渐形成了一定的规模。 架构集群管理大家知道,Docker自身的集群管理能力在当时条件下...阅读全文

博文 2017-06-25 15:01:19 H3CSE

阿里云虚拟主机使用教程

课程介绍 阿里云虚拟主机市场占用率第一,20年专业品质保证;产品特点:预装网站运行环境,赠送正版数据库,可通过图形化控制面板管理,主要用于搭建网站。 独享系列虚机特点:客户独享整台服务器资源,无资源争抢更稳定,不限流量更快速、独立IP更易推广,适合企业建站客户; 共享系列虚机特点:多客户共享服务器硬件资源,价格优惠,简单易用,适合于开发者、个人站长建站; 产品详情:https://wanwang.aliyun.com/hosting/ 课时列表 • 课时1:购买虚拟主机和初始化密码信息 • 课时2:FTP 上传与解压缩文件 • 课时3:绑定并解析域名 • 课时4:切换语言环境 • 课时5:虚拟主机临时域名的使用 开始学习http:...阅读全文

Docker架构

Docker三大核心部件 Docker Image (镜像) 用来创建容器的模版,类似于OOP的类,镜像是只读的。 Docker Container (容器) 容器是独立运行的一个或一组应用,类似于OOP的对象; 完全使用沙箱机制,相互之间无任何接口,性能开销低; 容器在启动的时候创建一层可写层作为最上层。 Docker Repository (仓库) 仓库是集中存放镜像文件的场所,类似于git,包含多个镜像;分为公开仓库和私有仓库,最大的公开仓库是Docker Hub,国内仓库有Docker Pool等; 仓库注册服务器存放多个仓库,类似于GitHub这样的托管服务器。 Docker整体架构 Docker使用C/S架构模式,非常松耦合的架构。 Docker整体架构 一般运行流程为:用户在D...阅读全文

博文 2019-07-15 16:35:06 一揽疯华

再次升级!阿里云Kubernetes日志解决方案

摘要: 今天阿里云Kubernetes日志解决方案再次升级,为您带来以下改进: 1、极致部署体验:只需一条命令一个参数即可完成整个K8S集群的日志解决方案部署。 2、支持更多配置方式:除原生控制台、SDK配置方式外,支持通过CRD方式进行配置(kubectl、控制台、K8S openapi)。 背景 针对K8S日志采集存在的采集目标多、弹性伸缩难、运维成本大、侵入性高、采集性能低等问题,在18年2月份日志服务和容器服务团队一起发布了阿里云Kubernetes日志解决方案。1分钟内即可完成整个集群部署,实现该节点上宿主机日志、容器日志、容器stdout等所有数据源的一站式采集。并且后续集群动态伸缩无需对采集做任何二次部署。 今天阿里云Kubernetes日志解决方案再次升级,为您...阅读全文

Docker namespace资源隔离Linux内核机制深入剖析-Docker商业环境实战

专注于大数据及容器云核心技术解密,可提供全栈的大数据+云原生平台咨询方案,请持续关注本套博客。如有任何学术交流,可随时联系。更多内容请关注《数据云技术社区》公众号。 1 Namespace资源隔离 Docker 和虚拟机技术一样,从操作系统级上实现了资源的隔离,它本质上是宿主机上的进程(容器进程),所以资源隔离主要就是指进程资源的隔离。实现资源隔离的核心技术就是 Linux namespace。 隔离意味着可以抽象出多个轻量级的内核(容器进程),这些进程可以充分利用宿主机的资源,宿主机有的资源容器进程都可以享有,但彼此之间是隔离的,同样,不同容器进程之间使用资源也是隔离的,这样,彼此之间进行相同的操作,都不会互相干扰,安全性得到保障。 为了支持这些特性,Linux namespace 实现了...阅读全文

博文 2019-09-03 22:34:25 数据云技术社区

记一次问题排查:为什么在POD无法通过Service访问自己?

问题现象 创建一个nginx pod,并配置了service访问,service后端指向pod。 进入pod中使用service ip 或者service 域名,无法访问。 一开始以为是环境配置或者k8s版本(1.9)的问题,在其他1.13的kubernetes环境下也试了,还是同样的问题。 环境配置 使用的cni插件是flannel,但不是容器化安装,也不是标准化的通过kubelet指定cni plugin(--cni-bin-dir,--cni-conf-dir参数),而是通过dockerd 提供的-bip参数指定容器的子网,而这个值是从/run/flannel/subnet.env(flannel会将获取到的子网写入到该文件) 排查过程 1、首先尝试通过pod ip尝试是否可访问,已验...阅读全文

博文 2020-05-01 17:32:40 silenceper

换一个思路学Linux命令

关于top命令的使用手册及方法有很多,往往使用的时候我们只是看一眼, 不会就用man top查一下或者是google一下,这里对top的使用方法就不再赘述, 换一个方式,构造我们想要的top结果 虚拟机配置如下 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.5 LTS Release: 16.04 Codename: xenial go version go1.6.2 linux/amd64 ➜ ~ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 1