• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 详解使用Docker容器来源码编译etcd

详解使用Docker容器来源码编译etcd

作者:添经地翼 字体:[增加 减小] 来源:互联网

本文主要包含docker,etcd,docker,源码编译等服务器相关知识,添经地翼 希望可以进行参考

背景

etcd是CoreOS公司开发的分布式键值对存储库。在Kubernetes中,我们需要使用etcd作为所有REST API对象的持久化存储。

不幸的是,在github的release中,CoreOS将etcd的二进制可执行文件都放在了亚马逊的S3存储上,在国内访问非常慢。因此,我们只能通过源码编译etcd。

过程

1. 下载etcd源码。

$ git clone https://github.com/coreos/etcd.git
$ cd etcd

2. 根据实际情况,选择合适的版本。如我这里使用的是2.2.1版本。

$ git checkout -b v2.2.1

3. 编译源码。运行该目录的build可执行文件。

$ ./build

但是,运行该命令出错,提示找不到context。

$ ./build
gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/lease/leasehttp/http.go:19:2: cannot find package "context" in any of:
  /root/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/context (vendor tree)
  /usr/local/go/src/context (from $GOROOT)
  /root/etcd/gopath/src/context (from $GOPATH)
  /go/src/context
  /go/src/app/_gopath/src/context

网上搜索了一番,原来etcd需要在Golang1.7以上的环境才能编译,而我使用的是Ubuntu16.04,默认的Golang版本是1.6的,没有context包。因此,我们需要安装Golang1.7环境。

4. 使用Docker容器编译。因为我的Golang环境还运行着其他的包,为了不影响其他包运行。我这里直接使用Golang1.7的docker容器来编译etcd。

$ sudo docker run -v /home/newbee/etcd/:/opt/etcd -it --rm golang:1.7.5 bash
# cd /opt/etcd
# ./build

在-v参数中,/home/newbee/etcd是我在Docker host中(也就是我服务器的)的etcd目录,而/opt/etcd是我容器中的映射目录。

注意:从Docker hub下载golang镜像需要一定的时间。下载完成后,就进入了容器中,然后cd到/opt/etcd目录,执行编译。
待编译完成后,查看etcd的bin目录下,是否有可执行文件,如果有,就说明编译成功。然后退出容器,服务器的etcd目录中也有对应的可执行文件了。

总结

etcd需要在Golang1.7以上的版本编译。

Docker容器可以很轻松的提供Golang环境,而且不会影响原来的环境,是一种新的思路。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • Ubuntu Docker 源码编译(1.9.1 )详解
  • 详解Docker源码编译安装
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • 在docker中部署tomcat并且部署java应用程序的步骤详解
  • Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境
  • CentOS7.3中Docker的安装教程
  • Docker push镜像失败解决方法
  • VMWare12 下Ubuntu虚拟机没法通过长按方向键连续移动光标的解决办法
  • Docker 中的容器完全解析
  • CentOS7.2下安装docker容器教程
  • VMware 10 中为CentOS 7添加多网卡并重命名
  • VMwarea虚拟机安装win7操作系统的教程图解
  • WIN10下安装Docker的教程

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Docker-compose 建立ELK集群的实现方法
    • docker Nginx PHP-FPM单机多站点布署的方法
    • 使用 Docker 搭建 Laravel 本地环境的教程详解
    • 基于docker安装tensorflow的完整步骤
    • Centos下安装docker教程
    • 云部署虚拟化 如何减少需面对的安全问题
    • 使用docker快速搭建Spark集群的方法教程
    • 【Linux】VMware虚拟机中如何配置静态IP详解
    • Docker MQTT安装使用教程
    • Docker 多主机网络通信详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有