Loading...

专家简介

知识库

区块链技术本质上是一种数据库技术,具体讲就是一种账本技术。 对于传统的数据库我们使用jdbc/odps/api等方式与数据库通信进行数据的存取;而对于区块链来说智能合约(链码)是应用与区块链进行交互的媒介,区块链应用的开发即是根据需求编写一个智能合约(链码),然后使用sdk与该智能合约(链码)进行交互。本文档适用于区块链开发的入门人员。

文章要点:

1.安装依赖

2.下载 fabric 和 示例

3.使用示例中的first-network开启区块链网络

4. 链码操作

5.安装区块链浏览器

原文链接:https://blog.csdn.net/daManSpark/article/details/103277395

区块链将是继互联网之后的又一次新的信息化革命,并在一定程度上,像互联网一样,改变现有的生产关系和商业逻辑,进而推进人类社会的高质量发展,而区块链技术的集成应用将在新的技术革新和产业变革中起着重要作用。

为什么区块链是一次信息化革命? 这种技术到底能做什么? 目前,区块链是一种处于初期阶段的网络底层技术,普通人本来就不容易理解,加之这些年虚拟货币的市场炒作和误导性宣传,导致公众普遍对区块链核心技术逻辑缺乏全面科学的理解。 随着国家对区块链普及和发展的推动,势必会让社会大众更加了解区块链技术的本质,促进区块链逐步在各行各业的信息化系统中广泛应用。

本文不进行技术上的详细描述,主要从区块链的数据处理方式入手,对比与传统信息化系统的数据处理方式的不同,进而说明这样的不同将如何对生产关系和业务流程产生巨大的优化作用。

首先,从正本清源方面,先说明一下区块链技术的分类,以及区块链与虚拟货币的关系。 根据国际通用标准,区块链技术主要分为两类: 公有链(Permissionless Blockchain)和许可链(Permissioned Blockchain)。 公有链主要用于虚拟货币(Cryptocurrencies),到目前为止,世界上基本没有非虚拟货币的广泛使用的公有链应用。 公有链的特点就是常说的去中心化和匿名性等。 但因为公有链和虚拟货币不符合中国现行的法律法规和监管要求,原则上在中国无法合法落地和运营。

本次将区块链上升到国家战略层面,完全针对的是许可链,以及许可链下包括的联盟链和私有链技术。 许可链主要适用于企业级、工业级和行业级各类应用。 本次国家政策出台后,比特币大涨,币圈也跟着瞎起哄,但实际上,国家区块链战略跟虚拟币一点儿关系也没有,甚至从专业角度看来,对中国的币圈是一次重大利空。 因为社会和民众会逐渐理解区块链是一种底层技术,不会再混淆区块链和虚拟币之间的关系。

许可链,特别是适用于多方协作和共识的联盟链技术,与公有链的机制区别很大。 联盟链不是去中心化的,而是很中心化或称为多中心化的系统,也做不到完全匿名和透明。 任何说到区块链就提去中心化的,基本上是还没有搞清楚联盟链和公有链的区别。 那么,联盟链到底是什么? 简单来说,联盟链是通过加密技术和点对点传输方式,在多个业务方之间建立共享账本(共享数据库)机制,让数据的处理成本大幅降低和传输效率大幅提高。 为了能够更直观说明,可以简单地认为通过互联网连接的几个业务方进行数据交互的结构为串联,而将同样的业务改为基于区块链技术的结构则为并联,如下图所示。

上图中,左侧的图是目前很多业务中信息化系统的串联结构,业务流各方都有自己独立的系统和独立的数据库,一方把业务数据在己方系统内处理完之后,再传给下一方。 串联关系的上下游之间都需要进行单独的接口开发,以便数据可以在不同的系统间传递。 右侧是相同的业务流,不同的是变串联结构为联盟链的并联关系。 各方都有一个结构完全一致的账本(数据库),账本之间通过共识排序节点进行同步,任何一方的数据进行增加或修改,其他各方的账本会实时进行更新。 简单来说,联盟链技术只是将数据的传递和存储方式进行了调整而已。

联盟链技术如此简单,为什么说它是一次新的信息化革命呢? 要回答这个问题,可以先参照一下互联网的发展。 什么是互联网? 互联网就是让电脑之间的数据传递达到秒级,而不是像九十年代,需要一方从一台电脑上把数据拷贝到光盘上,邮寄给另一方,另一方把光盘放入电脑,然后再读取数据。 互联网技术说起来更简单,但过去二十年,彻底改变了人类社会,彻底改变了商业流程和逻辑。 区块链的数据传递和存储方式是基于互联网的一次重大升级,并进一步优化了互联网数据传输方式中的低效率和高成本问题。 经过多次讨论,总结出以下七个方面,说明区块链技术是如何优化互联网数据传输的:

一、降低对账成本

在几乎所有涉及到金融业务、支付业务、缴费业务和交易业务的信息化系统中,对账是在互联网串联结构下防止数据作假、数据丢失和数据出错的重要手段。 前文的图中,在这种串联关系里,业务方2从业务方1处拿到数据,进行业务处理后,再发给业务方3。 业务方3因为不与业务方1直接进行数据交互,因此根本无法百分之百保证业务方2的数据真实性。 串联关系中的两两对账就成了很关键的数据安全措施。 即使有了对账,仍然不能百分之百防范有业务方通过时间差、瞒上欺下等方式进行数据造假。 特别是对账流程不严谨的业务流,很多数据作假是永远发现不了的。 而同样的业务,变为区块链的并联结构后,任何一方的数据进行了更新,其他所有方立即就能知道,全部所有方的数据完全一致,对账的需求基本不存在。 对企业内控、财务和审计熟悉的读者,肯定知道对账的重要性和复杂性。 如果能通过区块链技术将全世界的对账成本减少一半,这本身就是一个每年以百亿美金为单位的巨大市场。

二、减少开发成本

串联关系下的系统都有自己独立的数据库和数据结构,因此,当进行数据传递时,系统与系统之间必须进行接口开发。 由于各自系统的独特性,这种接口开发基本上只能用于这两个系统之间,无法复用。 而在区块链的并联结构下,业务各方使用统一数据库结构(共享账本),数据库之间通过区块链内部机制进行实时更新,系统之间不需要任何接口开发。 而将业务数据写入共享账本本身就是业务系统内部数据处理机制,避免接口开发和维护的麻烦,且没有增加额外成本。 如果能通过区块链技术将全世界的接口开发和维护成本减少一半,这又是一个每年以百亿美金为单位计算的巨大市场。

三、防止数据造假

串联关系下的各业务系统之间即使有再严格的对账机制,但互相之间完全看不到对方的数据库,更别说隔了几个系统的业务方,因此,在这种串联关系下,数据造假根本无法杜绝。 而区块链的实时同步机制,让业务流中的任何一方随时都知道其他所有方的数据变化。 避免了串联结构下通过瞒上欺下而产生的漏洞。 区块链的并联结构下,直接杜绝了业务任何一方的数据造假。 对于区块链使用方来说,除了对账以外,基本可以节省其他防止业务方进行造假的手段和成本。

四、便于数据获取

互联网的串联结构下,数据是从一个业务系统到另一个业务系统逐步传递的。 也就是说,如果因为任何原因,业务方2不给业务3传递数据,那么业务方3和业务方4的业务就要发生停顿,他们没有任何办法拿到业务方1传出的数据。 也就是说,任何一方的业务数据获取完全依赖上游的主动性和意愿性,否则,可能完全接触不到数据。 而区块链的并联关系很好地解决了这个问题,业务任一方的数据发生更新,其他各方均实时得到,不需要等任何一方来进行传递。 这将大大提高各方获取业务数据的效率。 而这种数据效率的提升,在很多行业是至关重要的。

五、取消中间环节

任何一个商业业务流程中,有很多参与方并不进行业务处理,而是仅对业务信息或数据进行传递,这也被称为中间环节或者中间商。 在串联结构中,很多情况下,因为地理、专线、销售人员不足等原因,业务中必须要有中间环节。 而通过区块链的并联关系,跨区域的数据获取和数据传递效率大大提高,很多中间环节可以省去。 为核心业务方增加更多盈利空间。 省去中间环节并不是坏事,在过去二十年中,互联网的出现已经使无数的中间环节消失。

六、提升容错能力

串联结构下,最大的问题就是任何一个系统不能宕机或断线,否则整个流程完全中断。 为了解决这个问题,唯一的办法就是进行热备和冷备,以及一系列的容错机制和设备。 这大大增加了信息化系统建设和维护的成本。 而在区块链的并联关系下,任何一个系统宕机或断线,完全不影响其他系统的正常运行以及数据的处理。 宕机的系统恢复后,缺失的数据会自动同步,不产生任何不良后果。 因此,将很多传统信息化系统进行区块链改造后,将极大降低容错设备和机制建设和维护的成本。

七、扩大监管范围

在互联网的串联结构下,任何监管只能在整个线条的某个或某几个点上进行,无法对整个线条上的所有数据进行监管。 很多违法行为只要避开监管点就能够为所欲为,这是线性数据传递模式下不可避免的问题。 而在区块链的并联结构下,监管机制可以作为一个节点,随时了解所有业务方的数据变化,对整个业务流进行全面监管。 在政治局将区块链定为国策的前一周,国务院发文要推进使用区块链技术来加强各领域的监管机制,就是这个原因。

以上提到的联盟链的任何一个好处,普及后都对全球信息化行业有着天翻地覆的影响,将七项综合在一起,未来对全球、全社会产生的影响,绝对可以大到将区块链技术定义为一次新的信息化革命。 严格来说,区块链的网络架构不是传统意义上的并联结构,但使用串联和并联可以让大家更直观地理解区块链的内部机制。

目前,区块链还处在一个比较早期的阶段,面临的最大问题就是成链成本太高。 而对很多业务方来说,在目前运转良好的情况下,对高成本的新技术是没有需求的。 因此,降低区块链的成本,特别是入门成本,是当前区块链行业发展最重要的任务。 对比互联网的发展,在1995年的时候,建设一个网站也是成本巨大,特别是在早期的局域网环境中。 而互联网作为一个基础设施的出现,让数据在全球传递的成本逐年下降。 到了1999年,在国内基本花费几千元就能够建立一个网站。 如果到了2000年,在中国建个简单网站还需要百万人民币,估计马云和马化腾的创业也不会成功。 一个新技术只有将入门成本降到无限接近于零,技术本身才能蓬勃发展,基于这个技术的创新才能够在全社会开展。

何亦凡,毕业于美国纽约州立大学石溪分校计算机科学专业和美国麻省理工学院工商管理专业,在投资金融领域工作多年,现任北京红枣科技有限公司总经理。

区块链技术源自比特币(Bitcoin)。 在过去十年中,各类虚拟货币(Cryptocurrencies)如雨后春笋般纷纷冒出,并制造了一系列的暴富故事,在各国投资界和社会大众中逐渐形成了虚拟货币就是全球货币的未来,以及其会持续升值等根深蒂固的错误观念。 虚拟货币推崇其将最终取代各国法定货币,形成完全去中心化和匿名性、不需要国家主权背书、不需要任何实际资产挂钩的国际通用货币。 同时,在最近几年,各国央行和一些国际大型科技公司,如Facebook等,也推出稳定币(Stablecoin)的概念,并开始了一些小范围的试点。 加之最近国家将区块链技术提升到了国家战略层面,导致区块链的关注度大增,但社会上各种信息混杂,鱼目混珠,让人不容易理解区块链与虚拟货币的关系,也搞不清楚稳定币和虚拟货币的区别。

实际上,不论是稳定币,还是虚拟货币,都是基于区块链技术的应用。 区块链技术主要分为公有链和许可链两大类。 公有链具备完全去中心化、匿名性和透明性的特点。 目前,全世界主要的公有链应用就是虚拟货币。 在当前中国的现行法律法规下,公有链应用因为不符合监管要求,无法在中国落地及运营。 目前已公布的绝大多数与法定货币锚定的稳定币均采用了许可链架构。 许可链并不去中心化,政府可对其进行有效的法律和技术监管,例如,各国可以就Facebook的稳定币Libra进行政府听证会,并制定相应的监管政策,但对基于公有链的比特币就完全无能为力,甚至都不知道要找谁来参加听证。

本文并不对稳定币和虚拟货币进行深度技术方面的探讨,而是从大家熟悉的金融属性来分析它们到底是不是货币,是否具备货币的特征。

货币从人类社会形成初期就已经存在,在以物易物的交易方式下,当出现一个通用物品可以用来方便交易其他货品的时候,货币雏形就逐渐形成。 粗略来分,货币经历了实物货币和信用货币两个阶段。 实物货币顾名思义本身是具备一定货品价值的,例如所有使用重金属铸造的钱币。 在实物货币阶段,国家并不对货币的发行拥有绝对的垄断权。 在中国古代,民间是可以自行铸币的,只要成色和重量符合标准,就可以在市场合法流通。 但随着人类社会的高速发展,特别是经济活动的日益复杂化,实物货币在发行、流通、携带、存储和交易上的不便利性和高成本逐渐成为经济发展的绊脚石,因此信用货币应运而生。 信用货币主要是靠国家主权的强制性法律要求,将价值远低于货币面值的纸币或电子货币作为法定货币使用。 目前,世界各国的货币体系基本以信用货币为主。 信用货币主要依靠国家信用来背书自身价值和面额之间的差额。

虚拟货币把自己称为“货币”(Currencies),但它是否属于货币的一种呢? 首先,虚拟货币肯定不算是实物货币,因为严格意义上,虚拟货币就是一串码,本身不具备任何实物价值。 而虚拟货币推崇自己的全球去中心化,也让其不能作为任何一个国家的信用货币。 因此有人就认为虚拟货币是一种新的货币形式,是目前基于国家主权信用货币的一种升级版。 这种观点我们认为基本属于无稽之谈,我们在此不进行深入的经济学探讨,而是回归本源,用货币的最基本属性来判断虚拟货币到底是什么。 这个基本属性就是: 所有真正的货币在发生换手时,绝大多数情况下,都是在进行一个购买商品或服务(借贷关系也算服务)的行为。 而所有虚拟货币在现今,99.999%换手的发生并不是进行商品或服务的交易,而是新接手者将虚拟货币囤积起来,等其升值后再抛售,以达到获利的目的。 如果连货币这个最基本的属性都没有,那么至少可以说,到今天为止,虚拟货币并不是真正的货币! 那它是什么呢? 对金融有一定了解的读者可能已经意识到了,虚拟货币的属性实际上与股票是完全一致的,是一种投资属性的金融产品。

如果说虚拟货币是一种投资物,那么很多事情就豁然开朗,很好解释了。 投资本身就是见仁见智的,每个人对投资价值的理解和标准都是不一样的。 有人投资股票,有人投资古董,有人投资邮票,甚至现在还有人投资运动鞋。 但不论投资什么,绝大多数的投资物就如实物货币一样,自身就具备一定价值。 运动鞋可以穿,邮票可以用来寄信,股票背后关联着公司的资产、资金流和未来收益。 而虚拟货币本身并没有任何价值,也不与任何有价值的物品挂钩。 而所谓的挖矿成本已经作为费用消耗掉了,也没有被关联到虚拟货币本身。 即使作为投资物,虚拟货币也是属于100%投机属性的投资物。 这也是为什么巴菲特对虚拟货币一直很不认可,因为这种纯投机的投资模式与他遵循的价值投资理念是完全相反的。 投机性投资本身就是一个相对小众的投资方向,而维持其价值依靠两个重要因素: 一是当前参与人的信心; 二是拉新的力度。 只要持续有新的投资人进入,纯投机性投资物的价值就能够得到维持甚至提升。 因此,所有虚拟货币的发行方,主要精力都是放在市场策略上(marketing strategies),尽量要把自己标榜成货币、是未来的主流、是会持续升值的、是最新的技术区块链等,从而达到吸引不是很专业的普通人入局的目的,并且从来不去讨论虚拟货币到底有什么实际价值,具体操作基本上跟骗老年人买枕头之类的商业行为处于同一范畴。

而不论是Facebook发行的Libra,还是各国政府正在研究和试点的稳定币,都是锚定的各国法定信用货币,是真正意义上的代币。 将来稳定币通用后,肯定没有人专门购买稳定币来等它升值,如果要投资外汇,直接购买外汇就好了,不需要通过可能涉及手续费的稳定币。 因此,稳定币未来的换手,基本上都是在购买商品或服务。 稳定币才是真正意义的具有货币属性的“虚拟货币“。

因此,稳定币与虚拟货币具有本质的区别: 一个是货币属性的,一个是投资物属性的。 两者之间是完全不同的金融产品,虽然基于同一种底层技术,但双方甚至没有任何可比性。

有人也许会说,就算虚拟货币现在是投资物,但如果它们未来成为主流并且全世界人民都认可的情况下,也可以替代现在各国的法定货币,成为一种真正去中心化的全球通用货币。 我们认为这并不是完全不可能,但前提是人类还需要进化,生产力要发展到不可想象的高度,人类社会结构变为完全另外一个形态,也许那个时候,货币本身就不再需要国家信用的背书。 但至少从现在看来,在可预见的未来,这种投机性投资物成为全球通用货币的可能性基本为零,甚至远小于运动鞋成为通用货币的可能性。

作者简介:

单志广,博士,二级研究员,博士生导师,曾为清华大学计算机科学与技术系网络技术研究所博士后,现任国家信息中心信息化和产业发展部主任、智慧城市发展研究中心主任发展联盟理事长,新世纪百千万人才工程国家级人选,享受国务院政府特殊津贴专家。

何亦凡,毕业于美国纽约州立大学石溪分校计算机科学专业和美国麻省理工学院工商管理专业,在投资金融领域工作多年,现任北京红枣科技有限公司总经理。

记账本我们天天都在使用,银行卡,支付宝和微信支付,我们最关心的肯定是账号上的余额了(即资产的当前状态),我想看下昨天我具体花了多少钱花在哪里就需要看交易的流水明细。同理Hyperledger Fabric结构也是类似的,需要记录Asset资产的当前状态和交易的历史。

区块链的账本

区块链的账本包含两部分,world state(世界的状态?整体的状态?)和区块链。

首先是World state 通常使用数据库保存一组账本的当前的状态值,这样就不用遍历所有的交易日志去计算当前的状态值,通常使用key-value键值对表示,状态值可被创建,更新和删除。

其次是区块链,记录着决定world state状态的交易日志。交易的信息会收集起来追加到区块链,一旦写入,就不能修改了。

World State

World state如上所述,程序和应用更多的时候需要获取账本当前的状态值。

上面的例子, 有两个车, 第一个车CAR1(key值/键值), 它的值是Audi。而CAR2的值就更完善些, 类型是BMW,红色,归属于Jane。两个车的版本号都是0。

账本的状态用于记录在区块链中共享的应用信息,我们可以编写程序调用链码采访这些状态,例如通过key操作(查增删)。

现实中,World state常用数据库实现,数据库对于读取和存储状态都提供了高效的实现,是不是和no-sql中的couchdb, mongodb有点像 :-)

交易保存了World state的变化,它是有生命周期的, 从应用发起到提交到区块链保存为止。 只是交易必须要足够的背书节点签名之后才可以更新world state.

我们注意到CAR的记录都有版本号,状态值变化,版本号就会增加。交易创建的时候会对应到状态的版本号,如果交易记录打包到区块分发到其它节点,其它节点的账本副本发现对应的状态版本变了, 那么这个交易记录认为是无效的。 这个跟我们实际开发中常用的乐观锁的概念是类似的。

区块链 

我们学习下区块链的大体结构。 区块链是交易日志,内部连接的区块,每个区块包含一系列的交易,每个交易代表一个查询或更新world state的操作。

每个区块的头部包含了区块所有交易的哈希值,还有上一个区块头部的哈希值, 有点像链表,这样所有的交易就有序的串起来了,也可以保证数据的安全。即使保存账本的一个节点被篡改了,它不能让其它有正确区块记录的记账节点认同。

实际上,区块链于world state不同,通常不使用数据库保存,通常使用文件保存。这是一个合理的设计选择,因为区块链的数据结构偏向于大量的小操作的集合, 区块链追加数据是最常用的操作,而查询频率不高。

上图为例, B0是第一个区块,也称为genesis block创世块,没交易记录,只会保存有通道,orderer,peer等信息,后面我们实际部署配置的时候会用到创世块。

区块

(1)区块头部

头部的数字编号,从0开始递增。

当前区块的哈希值,例如下图的CH2

上一块区块的哈希值, 例如PH1

(2)区块数据段

 

B2开始保存的都是有序的交易日志。

(3)区块的元数据

包含区块写入的时间戳,证书,公钥,写入者的签名,是否合法的标记位等。

交易

参考下图交易数据的具体结构

(1)头部

即上图H4, 包含交易必要的元数据,例如对应的链码和版本等。

(2)Sinature签名

上图S4, 由客户端应用创建,使用客户的私钥做签名。

(3)Proposal 提议

上图P4, 封装了应用提供给链码使用的输入参数,链码执行,使用这些入参, 与现有world state一起使用,就能计算出新的world state.

(4)响应

R4, 保存world state改变前后的状态值,作为读写的结合。 这个就是链码的响应,如果后面交易验证通过了,账本就按照响应去更新world state状态值。

(5)Endorsements背书记录

E4, 如之前章节所述,更新交易第一步发起提议后,需要背书节点的签名,就在这里记录了。

World State数据库的选择

Hyperledger Fabric当前支持Level DB和CouchDB.

Level DB适合于简单的key-value键值对,嵌入网络的peer节点进程。

CouchDB适合于复杂些的world state状态要用JSON文档表示的场景,提供了更多的富查询特性,与peer节点进程隔离开。

重要的是,Hyperledger Fabric作为state DB实现的level DB或couchDB都是可插拔的设计, 完全可能用其它的关系型数据库或非关系型数据库实现。

基础完结, 后面我们会通过Hyperledger Fabric的入门例子, 实际操作和配置, 使用Go和Nodejs编写联链码。

再之后估计就是学下更方便些的Hyperledger Composer的方式去开发部署区块链。

但是相信有了前面这些核心基础知识, 后面的学习会相对简单很多。技术原本就是苦中作乐的事情,希望大家多些快乐。

————————————————

版权声明:本文为CSDN博主「zealVampire」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接: https://blog.csdn.net/zealVampire/article/details/81839664


Docker-CE

1. 卸载docker旧版本(如果有):

2. 安装相关工具类:

3. 配置docker仓库:

4. 安装docker

5. 验证docker安装成功:

6. 关于非root用户使用docker命令

安装docker-compose

安装go


Docker-CE

1. 卸载docker旧版本(如果有):

1. sudo yum remove docker \

2. docker-client \

3. docker-client-latest \

4. docker-common \

5. docker-latest \

6. docker-latest-logrotate \

7.docker-logrotate \

8.docker-selinux \

9.docker-engine-selinux \

10.docker-engine


2. 安装相关工具类:

1.sudo yum install -y yum-utils device-mapper-persistent-data lvm2


3. 配置docker仓库:

1. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2. 由于国内访问不到docker官方镜像的缘故

3. 可以通过aliyun的源来完成:

4. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


4.安装docker

1. sudo yum install -y docker-ce

2. #如果安装失败:

3. sudo vim /etc/yum.repos.d/docker-ce.repo

4. #通过命令把https://download-stage.docker.com替换为http://mirrors.aliyun.com/docker-ce

5. #命令如下:

6. :%s#https://download-stage.docker.com#http://mirrors.aliyun.com/docker-ce#g


5.验证docker安装成功:

1.#启动docker:

2.sudo systemctl start docker

3. docker -v

4.sudo systemctl enable docker

5.#验证docker:

6.sudo docker run hello-world

7.# 在阿里云开通容器镜像服务拿到加速地址再执行以下命令(加速地址前缀最好用自己的)

8.sudo mkdir -p /etc/docker

9.sudo tee /etc/docker/daemon.json <<-'EOF'< /p>

10.{

11."registry-mirrors": ["https://mb7ebfhc.mirror.aliyuncs.com"]

12.}

13.EOF

14.sudo systemctl daemon-reload

15.sudo systemctl restart docker


6.关于非root用户使用docker命令

非root用户在执行docker命令(如docker images)时,会出现以下错误:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied

意思就是没权限读取 /var/run/docker.sock 文件内容,所以只要修改该文件读写权限即可:

sudo chmod a+rw /var/run/docker.sock


安装docker-compose

1.curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.chmod +x /usr/local/bin/docker-compose

3.docker-compose -v


安装go

1. wget https://storage.googleapis.com/golang/go1.12.3.linux-amd64.tar.gz

2. sudo tar -zxvf go1.12.3.linux-amd64.tar.gz -C /usr/local/

3. sudo vi /etc/profile

4. export GOROOT=/usr/local/go

5. export GOBIN=$GOROOT/bin

6. export GOPATH=/opt/gopath

7. export PATH=$GOBIN:$PATH

8.source /etc/profile

9.go version

版权声明:本文为CSDN博主「helloksyou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/helloksyou/article/details/90516578ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158622937419726869037328%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158622937419726869037328&biz_id=0&utm_source=distribute.pc_search_result.none-task-blog-all_SOOPENSEARCH-9