欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解使用Docker容器來源碼編譯etcd

 更新時間:2017年03月27日 08:18:45   作者:添經(jīng)地翼  
這篇文章主要介紹了詳解使用Docker容器來源碼編譯etcd,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

背景

etcd是CoreOS公司開發(fā)的分布式鍵值對存儲庫。在Kubernetes中,我們需要使用etcd作為所有REST API對象的持久化存儲。

不幸的是,在github的release中,CoreOS將etcd的二進制可執(zhí)行文件都放在了亞馬遜的S3存儲上,在國內(nèi)訪問非常慢。因此,我們只能通過源碼編譯etcd。

過程

1. 下載etcd源碼。

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

2. 根據(jù)實際情況,選擇合適的版本。如我這里使用的是2.2.1版本。

$ git checkout -b v2.2.1

3. 編譯源碼。運行該目錄的build可執(zhí)行文件。

$ ./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

網(wǎng)上搜索了一番,原來etcd需要在Golang1.7以上的環(huán)境才能編譯,而我使用的是Ubuntu16.04,默認的Golang版本是1.6的,沒有context包。因此,我們需要安裝Golang1.7環(huán)境。

4. 使用Docker容器編譯。因為我的Golang環(huán)境還運行著其他的包,為了不影響其他包運行。我這里直接使用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參數(shù)中,/home/newbee/etcd是我在Docker host中(也就是我服務(wù)器的)的etcd目錄,而/opt/etcd是我容器中的映射目錄。

注意:從Docker hub下載golang鏡像需要一定的時間。下載完成后,就進入了容器中,然后cd到/opt/etcd目錄,執(zhí)行編譯。
待編譯完成后,查看etcd的bin目錄下,是否有可執(zhí)行文件,如果有,就說明編譯成功。然后退出容器,服務(wù)器的etcd目錄中也有對應(yīng)的可執(zhí)行文件了。

總結(jié)

etcd需要在Golang1.7以上的版本編譯。

Docker容器可以很輕松的提供Golang環(huán)境,而且不會影響原來的環(huán)境,是一種新的思路。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker安裝后導(dǎo)致的網(wǎng)絡(luò)問題及解決

    docker安裝后導(dǎo)致的網(wǎng)絡(luò)問題及解決

    這篇文章主要介紹了docker安裝后導(dǎo)致的網(wǎng)絡(luò)問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker中的COPY指令和ADD指令詳解

    Docker中的COPY指令和ADD指令詳解

    COPY?和?ADD?都是?Dockerfile?中的指令,有著類似的作用。它們允許我們將文件從特定位置復(fù)制到?Docker?鏡像中,這篇文章主要介紹了Docker中的COPY指令和ADD指令,需要的朋友可以參考下
    2022-06-06
  • 基于Docker實現(xiàn)MySQL主從復(fù)制的詳細教程

    基于Docker實現(xiàn)MySQL主從復(fù)制的詳細教程

    這篇博客整理了如何在Docker環(huán)境下配置MySQL主從復(fù)制,通過創(chuàng)建和命名兩個MySQL容器,設(shè)置獨立IP,并詳細說明了在宿主機上持久化數(shù)據(jù)、開啟root遠程訪問及添加復(fù)制用戶的過程,需要的朋友可以參考下
    2024-10-10
  • Docker刪除已存在的鏡像的實現(xiàn)

    Docker刪除已存在的鏡像的實現(xiàn)

    本文主要介紹了Docker刪除已存在的鏡像的實現(xiàn),刪除已存在的 Docker 鏡像,可以使用 docker rmi 命令,下面就來詳細的介紹一下使用步驟,感興趣的可以了解一下
    2023-08-08
  • Docker深度清除鏡像緩存overlay2的實現(xiàn)

    Docker深度清除鏡像緩存overlay2的實現(xiàn)

    維清理鏡像是通過命令?docker?rm?i?刪除鏡像的,但是這條命令不會刪除docker?build命令產(chǎn)生的緩存文件,本文主要介紹了Docker深度清除鏡像緩存overlay2的實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • 使用minikube安裝使用單機版K8S方式(docker)

    使用minikube安裝使用單機版K8S方式(docker)

    本文介紹了如何在centos7上使用minikube快速搭建單機版k8s,主要步驟包括:下載kubectl和docker,創(chuàng)建新用戶,下載和安裝minikube,驗證安裝情況,最后,通過執(zhí)行minikube和minikubestop啟停K8s,或使用minikubedelete徹底刪除K8S的數(shù)據(jù)
    2024-10-10
  • 利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的方案

    利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的方案

    這篇文章主要介紹了利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的問題,需要在容器的啟動腳本中,加入 trap 指令,來完成容器在退出前需要做的所有事情,本文通過腳本示例給大家介紹的非常詳細,需要的朋友參考下吧
    2021-12-12
  • docker?build?-t?和?docker?build?-f?區(qū)別解析

    docker?build?-t?和?docker?build?-f?區(qū)別解析

    docker build 是用于構(gòu)建Docker鏡像的命令,它允許你基于一個Dockerfile來創(chuàng)建一個鏡像,在 docker build 命令中,有兩個常用的選項 -t 和 -f,它們有不同的作用,這篇文章主要介紹了docker?build?-t?和?docker?build?-f?區(qū)別,需要的朋友可以參考下
    2023-08-08
  • Docker查看容器IP地址的方法實現(xiàn)

    Docker查看容器IP地址的方法實現(xiàn)

    本文主要介紹了Docker查看容器IP地址的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Docker?容器中安裝?nvm工具的步驟

    Docker?容器中安裝?nvm工具的步驟

    這篇文章主要介紹了在Docker容器中安裝nvm工具的步驟,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05

最新評論