記一次docker容器化部署

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

事情是這樣的

一個人程式員,用golang寫了個server,寫完後...不會部署 : )
是的,這個人就是我...
今天真的是要被自己笑死
終於有機會在公司項目中使用golang進行開發,整個開發過程相當亢奮!然而...當跟前端小哥哥聯調完介面後,小哥哥問我什麼時候能給線上地址
(一臉懵)忘記還有上線這回事了
往往自己業餘寫的golang項目就直接 go build 然後拖到伺服器然後運行一下搞定
但是這是公司項目啊!!! 會給你ftp??? 你可以碰到伺服器??? (彷彿聽到了DBA小哥哥的心聲)
於是... 我找到了DBA小哥哥,問該如何發布
“你直接打包一個rpm或者給個docker吧”

哈?
rpm? 你確定不是npm?
docker??? (臥槽,我好像兩年前就該看看了) 我還沒看過...

於是乎虛心請教DBA小哥哥,“能麻煩大致跟我講下這個rpm是怎麼個打法嗎?”
“好啊,你就先……*¥%#¥然後再$%……%%”
“哦,好,我回去看看”

然後

然後我就回來學起了docker 23333333333
好在部門內有個老司機
直接就讓我上了車

開車

首先我們要先down一個docker
mac版: https://www.docker.com/docker...
能開啟mac已經證明會安裝了,我們就不在複述了

安裝完成後到啟動台裡面點一下可愛的小鯨魚

然後在命令列輸入

$ docker info

看到一堆亂七八糟的東西輸出證明安裝成功

我們需要從鏡像市場down一個linux鏡像~
https://store.docker.com 搜尋 centos 會看到


選擇哪個版本完全混眼熟 哈哈哈哈
看到具體版本號碼 在命令列執行

$ docker pull centos:7.2.1511 


Already exists 是因為在寫這篇記錄之前已經pull過了 哈哈哈

裝好鏡像後通過docker image來查看已存在的鏡像

$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEcentos              7.2.1511            0a2bad7da9b5        5 months ago        195MB  

下面我們來讓這個鏡像跑起來

docker run -p 8888:80 --name godocker -e ENV="dev" -it 0a2bad7da9b5 /bin/bash
-p 本機連接埠號碼:映射到docker的連接埠號碼(當原生8888請求被訪問時會進入到docker的80連接埠)
--name docker執行個體的名稱(想怎麼起怎麼起)
-e docker的環境變數
-v 類似於軟鏈,將docker的某個路徑映射到原生實體路徑(具體的可以針對性百度哦)
-it 後面跟docker image 的id

敲下斷行符號~ 哎呦進去了!
不急不急 我們先退出來

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")  }go build for linux (當然是虛擬碼啦)  # 會產生一個跟目錄同名的可執行檔 gotest# 將檔案拷貝到docker鏡像中$ docker cp /Users/wangboyan/development/golang/src/gotest/gotest godocker:/var/www# 然後進入docker中查看剛才的gotest是否存在  $ docker ps  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMESb2802801c24c        0a2bad7da9b5        "/bin/bash"         14 minutes ago      Up 14 minutes       0.0.0.0:8888->80/tcp   godocker  docker exec -it b2802801c24c /bin/bash# 會發現我們成功進入了docker哦  $ cd /var/www$ ll$ gotest  

驚不驚喜~意不意外~
完全意料之中...
執行以下我們編譯好的可執行檔看看


此時 只想呵呵 呵呵 哈哈哈哈哈
現在我們來將剛剛的修改 產生新的鏡像檔案

# 先退出dockerexit$ docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMESb2802801c24c        0a2bad7da9b5        "/bin/bash"         14 minutes ago      Up 14 minutes       0.0.0.0:8888->80/tcp   godocker  

我們通過commit命令將容器轉化為鏡像

$ docker commit -m "myself docker image" -a "holdno" 0a2bad7da9b5 holdno/centos-go:1.0.0  # 敲下斷行符號後會得到以下結果 證明成功!sha256:554e840711c57bd4d2ede4a29a5c1dff3a711050c421ebfc38090d0f5a358b83  # 重新查看鏡像資訊  $ docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEholdno/centos-go    1.0.0               554e840711c5        11 seconds ago      197MBcentos              7.2.1511            0a2bad7da9b5        5 months ago        195MB

有沒有!產生了新的鏡像

打包(save)

自己的docker鏡像算是做好了(我做啥了?)
下面我們來打包這個鏡像
畢竟DBA小哥哥要的只是個
我們可以使用 saveload 方法,前者用來把鏡像儲存一個tar檔案,後台從一個tar檔案恢複成一個鏡像

$ docker save -o /Users/wangboyan/development/docker/centos-go.v1.0.0.tar 554e840711c5  
-o :輸出到的檔案(注意哦,這個路徑一定是已經存在的路徑!)

恢複(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             SIZE<none>              <none>              554e840711c5        11 seconds ago      197MBcentos              7.2.1511            0a2bad7da9b5        5 months ago        195MB

不知道為什麼 REPOSITORY 和 TAG 變成了 none
現在我們來啟動剛剛匯入的鏡像

$ docker run -it 554e840711c5 /bin/bash$ cd /var/www  $ ll  gotest  # 有沒有! 剛才cp進來的可執行檔還在!(這不是很正常嗎)  $ ./gotest  hello world  $  

所以可以直接把 centos-go.v1.0.0.tar 丟給DBA小哥哥了?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.