詳解使用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中(也就是我服務器的)的etcd目錄,而/opt/etcd是我容器中的映射目錄。
注意:從Docker hub下載golang鏡像需要一定的時間。下載完成后,就進入了容器中,然后cd到/opt/etcd目錄,執(zhí)行編譯。
待編譯完成后,查看etcd的bin目錄下,是否有可執(zhí)行文件,如果有,就說明編譯成功。然后退出容器,服務器的etcd目錄中也有對應的可執(zhí)行文件了。
總結(jié)
etcd需要在Golang1.7以上的版本編譯。
Docker容器可以很輕松的提供Golang環(huán)境,而且不會影響原來的環(huán)境,是一種新的思路。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker安裝java環(huán)境的實現(xiàn)步驟
這篇文章主要介紹了docker安裝java環(huán)境的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
docker 動態(tài)映射運行的container端口實例詳解
這篇文章主要介紹了 docker 動態(tài)映射運行的container端口實例詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10
docker啟動mysql并映射數(shù)據(jù)目錄(含備份腳本)
本文主要介紹了docker啟動mysql并映射數(shù)據(jù)目錄(含備份腳本),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01
prometheus監(jiān)控節(jié)點程序的安裝及卸載命令
這篇文章主要為大家介紹了prometheus監(jiān)控節(jié)點程序的安裝及卸載命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Docker教程之dockerfile構(gòu)建centos鏡像
這篇文章主要介紹了Docker教程之dockerfile構(gòu)建centos鏡像的相關(guān)資料,需要的朋友可以參考下2022-11-11

