摘要:事情是這樣的一個人程序員,用寫了個,寫完后不會部署是的,這個人就是我今天真的是要被自己笑死終于有機(jī)會在公司項目中使用進(jìn)行開發(fā),整個開發(fā)過程相當(dāng)亢奮然而當(dāng)跟前端小哥哥聯(lián)調(diào)完接口后,小哥哥問我什么時候能給線上地址一臉懵忘記還有上線這回事了往往自
事情是這樣的
一個人程序員,用golang寫了個server,寫完后...不會部署 : )
是的,這個人就是我...
今天真的是要被自己笑死
終于有機(jī)會在公司項目中使用golang進(jìn)行開發(fā),整個開發(fā)過程相當(dāng)亢奮!然而...當(dāng)跟前端小哥哥聯(lián)調(diào)完接口后,小哥哥問我什么時候能給線上地址
(一臉懵)忘記還有上線這回事了
往往自己業(yè)余寫的golang項目就直接 go build 然后拖到服務(wù)器然后運(yùn)行一下搞定
但是這是公司項目?。。。?會給你ftp??? 你可以碰到服務(wù)器??? (仿佛聽到了DBA小哥哥的心聲)
于是... 我找到了DBA小哥哥,問該如何發(fā)布
“你直接打包一個rpm或者給個docker吧”
哈?
rpm? 你確定不是npm?
docker??? (臥槽,我好像兩年前就該看看了) 我還沒看過...
于是乎虛心請教DBA小哥哥,“能麻煩大致跟我講下這個rpm是怎么個打法嗎?”
“好啊,你就先……*¥%#¥然后再$%……%%”
“哦,好,我回去看看”
然后我就回來學(xué)起了docker 23333333333
好在部門內(nèi)有個老司機(jī)
直接就讓我上了車
首先我們要先down一個docker
mac版: https://www.docker.com/docker...
能打開mac已經(jīng)證明會安裝了,我們就不再復(fù)述了
安裝完成后到啟動臺里面點一下可愛的小鯨魚
然后在命令行輸入
$ docker info
看到一堆亂七八糟的東西輸出證明安裝成功
我們需要從鏡像市場down一個linux鏡像~
https://store.docker.com 搜索 centos 會看到
選擇哪個版本完全混眼熟 哈哈哈哈
看到具體版本號 在命令行執(zhí)行
$ docker pull centos:7.2.1511
Already exists 是因為在寫這篇記錄之前已經(jīng)pull過了 哈哈哈
裝好鏡像后通過docker images來查看已存在的鏡像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 7.2.1511 0a2bad7da9b5 5 months ago 195MB
下面我們來讓這個鏡像跑起來
$ docker run -p 8888:80 --name godocker -e ENV="dev" -it 0a2bad7da9b5 /bin/bash
-p 本機(jī)端口號:映射到docker的端口號(當(dāng)本機(jī)的8888請求被訪問時會進(jìn)入到docker的80端口)
--name docker實例的名稱(想怎么起怎么起)
-e docker的環(huán)境變量
-v 類似于軟鏈,將docker的某個路徑映射到本機(jī)的實體路徑(具體的可以針對性百度哦)
-it 后面跟docker image 的id
敲下回車~ 哎呦進(jìn)去了!
不急不急 我們先退出來
exit
趕快 趕快 build一個go server
$ cd /xxx/xxx/xxx/xxx/xxx/gotest $ touch main.go $ vi main.go package main import "fmt" func main() { fmt.Println("hello word") } :x $ go build for linux (當(dāng)然是偽代碼啦) # 會生成一個跟目錄同名的可執(zhí)行文件 gotest # 將文件拷貝到docker鏡像中 $ docker cp /Users/wangboyan/development/golang/src/gotest/gotest godocker:/var/www # 然后進(jìn)入docker中查看剛才的gotest是否存在 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2802801c24c 0a2bad7da9b5 "/bin/bash" 14 minutes ago Up 14 minutes 0.0.0.0:8888->80/tcp godocker docker exec -it b2802801c24c /bin/bash # 會發(fā)現(xiàn)我們成功進(jìn)入了docker哦 $ cd /var/www $ ll $ gotest
驚不驚喜~意不意外~
完全意料之中...
執(zhí)行以下我們編譯好的可執(zhí)行文件看看
此時 只想呵呵 呵呵 哈哈哈哈哈
現(xiàn)在我們來將剛剛的修改 生成新的鏡像文件
# 先退出docker exit $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2802801c24c 0a2bad7da9b5 "/bin/bash" 14 minutes ago Up 14 minutes 0.0.0.0:8888->80/tcp godocker
我們通過commit命令將容器轉(zhuǎn)化為鏡像
$ docker commit -m "myself docker image" -a "holdno" 0a2bad7da9b5 holdno/centos-go:1.0.0 # 敲下回車后會得到以下結(jié)果 證明成功! sha256:554e840711c57bd4d2ede4a29a5c1dff3a711050c421ebfc38090d0f5a358b83 # 重新查看鏡像信息 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE holdno/centos-go 1.0.0 554e840711c5 11 seconds ago 197MB centos 7.2.1511 0a2bad7da9b5 5 months ago 195MB
有沒有!生成了新的鏡像
打包(save)自己的docker鏡像算是做好了(我做啥了?)
下面我們來打包這個鏡像
畢竟DBA小哥哥要的只是個包
我們可以使用 save 和 load 方法,前者用來把鏡像保存一個tar文件,后臺從一個tar文件恢復(fù)成一個鏡像
$ docker save -o /Users/wangboyan/development/docker/centos-go.v1.0.0.tar 554e840711c5
-o :輸出到的文件(注意哦,這個路徑一定是已經(jīng)存在的路徑?。?/pre> 恢復(fù)(load)# 刪除剛剛打包過的鏡像 $ docker rmi 554e840711c5 $ docker load < /Users/wangboyan/development/docker/centos-go.v1.0.0.tar Loading layer [==================================================>] 2.03MB/2.03MB $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE554e840711c5 11 seconds ago 197MB centos 7.2.1511 0a2bad7da9b5 5 months ago 195MB 不知道為什么 REPOSITORY 和 TAG 變成了 none
現(xiàn)在我們來啟動剛剛導(dǎo)入的鏡像$ docker run -it 554e840711c5 /bin/bash $ cd /var/www $ ll gotest # 有沒有! 剛才cp進(jìn)來的可執(zhí)行文件還在!(這不是很正常嗎) $ ./gotest hello world $所以可以直接把 centos-go.v1.0.0.tar 丟給DBA小哥哥了?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27264.html
摘要:之所以在本地構(gòu)建,而沒有使用倉庫的,是因為,我們的鏡像采用了國內(nèi)阿里云的源,再加上某些很奇妙的網(wǎng)絡(luò)因素,在中自動構(gòu)建時,升級總會失敗。然而,在本地再次構(gòu)建成功。 見字如晤。 前段時間,Node.js 官方發(fā)布了Node 8.9.3 LTS版本,并且官網(wǎng)首頁提示新版本有重要安全更新,Important security releases, please update now! ,然后我立...
摘要:昨天遇到了一個端口轉(zhuǎn)發(fā)導(dǎo)致失效的問題,今天記錄下當(dāng)時的排查思路。問題原因是刪除容器后沒有把轉(zhuǎn)發(fā)規(guī)則刪除。這次排查,用到了幾個工具,都是之前的積累,所以排查顯得順暢多了。 昨天遇到了一個端口轉(zhuǎn)發(fā)導(dǎo)致VIP失效的問題,今天記錄下當(dāng)時的排查思路。 因為要做升級,所以我刪除了dokcer老容器,并啟動新容器。之后訪問VIP, 也就是LVS中的VIP,發(fā)現(xiàn)原先可以訪問的站點不能訪問了。 以上是故...
摘要:最近在公司搭建一個基于的環(huán)境。的內(nèi)核可以算是半個,依賴一些的容器相關(guān)的技術(shù)是不支持的,所以需要通過一個虛擬機(jī)運(yùn)行來使用。于是和前端的同學(xué),一起打開文件進(jìn)行對比,但并沒有發(fā)現(xiàn)非常可疑的點。果然拿到的文件不再有末尾的亂碼。 最近在公司搭建一個基于 Docker 的 PHP 環(huán)境。 背景知識 Docker 是一種容器技術(shù),它可以提供一個隔離的環(huán)境,讓用戶的程序運(yùn)行在一個完全隔離的虛擬的系統(tǒng)...
閱讀 2435·2021-09-01 10:41
閱讀 1451·2019-08-30 14:12
閱讀 520·2019-08-29 12:32
閱讀 2868·2019-08-29 12:25
閱讀 2943·2019-08-28 18:30
閱讀 1713·2019-08-26 11:47
閱讀 989·2019-08-26 10:35
閱讀 2597·2019-08-23 18:06