摘要:解決了服務(wù)器應(yīng)用快速部署的問題。解決方案是自己裝一個第二點,確保鏡像服務(wù)器跑起來。你需要將真機的端口和虛擬機端口進(jìn)行綁定,這樣可以通過訪問鏡像服務(wù)器在真機上的端口,訪問到數(shù)據(jù)庫端口,進(jìn)入鏡像之中。
關(guān)于Docker的基本原理
原理上, 深入淺出Docker 一文講的語言會更科學(xué),我只撿不一定準(zhǔn)確但直觀而符合表面理解的一些講一下。
Docker提供了基于操作系統(tǒng)級和應(yīng)用級虛擬化的應(yīng)用部署解決方案。它的出現(xiàn)讓在服務(wù)器上部署應(yīng)用免去了操作系統(tǒng),支持系統(tǒng)等一系列的搭建,而把它們簡化為鏡像,容器,實現(xiàn)快速部署。
Docker將應(yīng)用所需要的底層系統(tǒng)支持,操作系統(tǒng)支持,數(shù)據(jù)庫支持,應(yīng)用本身和應(yīng)用的數(shù)據(jù)分離開來,可以從任意層級上在一個擁有docker技術(shù)的電腦上對應(yīng)用進(jìn)行部署。每一層被抽象成了鏡像(image),而鏡像跑在服務(wù)器上便成了容器(container),相當(dāng)于虛擬機。跑起一個應(yīng)用級別的容器,會自動獲取它所需要的向下級別的鏡像。這些都可以通過云端大量現(xiàn)成的資源和幾行腳本命令實現(xiàn)。
Docker解決了服務(wù)器應(yīng)用快速部署的問題。僅需要一個dockerfile或是一兩行命令,便可以將一個應(yīng)用部署到服務(wù)器上并立刻投入使用。存在的問題也有一些,比如數(shù)據(jù)層遷移的命令蹩腳,容器啟動后不能重新端口綁定,目前只能跑在linux上等。還有許多有待我這個剛?cè)胧譀]多久的小白還要探索的問題。
安裝docker在正題之前,你需要:
安裝docker
確定docker鏡像服務(wù)器已經(jīng)跑在你的服務(wù)器上
兩點其實是一點,但是兩者各有側(cè)重。筆者在mac上安裝docker時,下載了官網(wǎng)提供的docker toolbox。安裝了docker服務(wù)器本身,快速啟動命令以及Virtualbox來管理虛擬機。在安裝Virtualbox的時候安裝程序掛了。至今不知為何。解決方案是自己裝一個
brew install Caskroom/cask/virtualbox
第二點,確保docker鏡像服務(wù)器跑起來。在mac下需要運行quickstart,你會注意到它其實就是啟動一個腳本,讓linux虛擬機的服務(wù)器可以通過虛擬網(wǎng)絡(luò)被mac訪問到。如果直接打開命令行,會提示
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
在linux上,docker指令必須sudo。否則也會提示找不到。
在mac上或者windows上尤其注意一點。docker服務(wù)器跑在linux虛擬機上。所以后續(xù)牽扯到目錄掛載的時候最好可以直接進(jìn)入虛擬機寫指令。
如何快速部署數(shù)據(jù)庫在docker上快速部署Postgresql數(shù)據(jù)庫,其實可以直接參考https://hub.docker.com/_/postgres/,這里提供了docker-postgres的官方解決方案。
其實核心只有一句話。
docker run --name yourappname -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=xxx -d -p xxxx:5432 postgres
其中的-p 的意思是端口綁定。這是docker里很重要的概念。docker可以理解為虛擬機。你需要將真機的端口和虛擬機端口進(jìn)行綁定,這樣可以通過訪問docker鏡像服務(wù)器在真機上的端口,訪問到psql數(shù)據(jù)庫端口5432,進(jìn)入docker鏡像之中。如果不指定-p,外界是無法訪問docker內(nèi)部,無法對數(shù)據(jù)庫增刪改查。
這時服務(wù)器會新建一個卷目錄用來存放真正的數(shù)據(jù)庫內(nèi)容。換句話說,這個卷是只讀的,通過容器備份提交什么的根本無法保留數(shù)據(jù)庫數(shù)據(jù),甚至是表的結(jié)構(gòu)。這個時候就需要介紹一個docker的新概念:數(shù)據(jù)卷。類似于linux掛載的概念。
具體可以參考https://github.com/widuu/chinese_docker/blob/master/userguide/dockervolumes.md
這里只說怎么快速部署。
第一步:在任意機子上建立一個鏡像,指定數(shù)據(jù)卷位置,并將其掛載到虛擬機上
docker run --name yourappname -e POSTGRES_PASSWORD=xxx -e POSTGRES_USER=xxx -v ./data:/var/lib/postgresql/data/pgdata -d -p xxxx:5432 postgres
多的這一句
-v ./data:/var/lib/postgresql/data/pgdata
意思是:講本機當(dāng)前目錄下新建一個data目錄,與虛擬機里的數(shù)據(jù)庫目錄對應(yīng)起來。注意這里必須是linux下的目錄。如果在mac或者windows上操作務(wù)必注意。如果你把mac/windows目錄映射到了“虛擬機的虛擬機”里,會因為訪問權(quán)限不足而讓docker崩掉。
第二步:按照你指定的端口訪問數(shù)據(jù)庫,做數(shù)據(jù)初始化。包括建表和插入初始數(shù)據(jù)。
第三步:備份數(shù)據(jù)卷。也就是上面的./data目錄。
第四步,將這個數(shù)據(jù)卷放到你的服務(wù)器上
第五步和第一步一樣。但是此時,你的數(shù)據(jù)卷里面已經(jīng)有之前保存的內(nèi)容了。
讓我來通俗地闡釋一下這個過程。其實相當(dāng)于你在家里電腦插個空U盤,放點歌在里面,然后帶到單位去就可以聽了。家里的電腦和單位的電腦都是WindowsXP的系統(tǒng),都裝了什么音樂播放器,但是歌曲一定是放在優(yōu)盤里,因為電腦是只讀的。
類似。docker也經(jīng)常被設(shè)計成只讀的,作為應(yīng)用程序的初始狀態(tài)。其實這么復(fù)制挺麻煩的,還需要新建一個數(shù)據(jù)卷。向上面那個例子里,“家里的電腦”其實沒用。教程里甚至提供了即時創(chuàng)建并刪除容器的命令只為保存一個數(shù)據(jù)卷和容器名稱的對應(yīng)關(guān)系,日后掛載方便。
docker的最佳實踐dockerfile最佳實踐
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26545.html
摘要:安裝這里以發(fā)行版為例,在中輸入一下命令安裝最新的注意如果你使用了阿里云最新推出的鏡像,那么可以省略本節(jié)的步驟。因為阿里云的這個鏡像已經(jīng)自帶了版的,版本比較新,可以直接使用。 docker用來隔離應(yīng)用還是很方便的,一來本身的操作較為簡單,二來資源占用也比虛擬機要小得多,三來也較為安全,因為像數(shù)據(jù)庫這樣的應(yīng)用不會再全局暴露端口,同時應(yīng)用間的通信通過加密和端口轉(zhuǎn)發(fā),更加安全。 Gitlab...
摘要:解決了服務(wù)器應(yīng)用快速部署的問題。解決方案是自己裝一個第二點,確保鏡像服務(wù)器跑起來。你需要將真機的端口和虛擬機端口進(jìn)行綁定,這樣可以通過訪問鏡像服務(wù)器在真機上的端口,訪問到數(shù)據(jù)庫端口,進(jìn)入鏡像之中。 關(guān)于Docker的基本原理 原理上, 深入淺出Docker 一文講的語言會更科學(xué),我只撿不一定準(zhǔn)確但直觀而符合表面理解的一些講一下。 Docker提供了基于操作系統(tǒng)級和應(yīng)用級虛擬化的應(yīng)用部署...
摘要:搭建的安裝部署方式有很多中,官方提供了如下幾種的安裝方式。還有一些社區(qū)提供的安裝方式注每種方式的具體如何安裝部署,請移駕到官網(wǎng)安裝部署下面我們來詳細(xì)介紹下使用來部署過程需要創(chuàng)建一個自定義網(wǎng)絡(luò),以允許容器相互發(fā)現(xiàn)和通信。 1、Kong搭建 kong 的安裝部署方式有很多中,官方提供了如下幾種的安裝方式。showImg(https://segmentfault.com/img/bVbvv3...
摘要:基于的的環(huán)境搭建本次操作都是基于進(jìn)行操作的,使用的的版本是,使用的版本是。初始化數(shù)據(jù)庫使用官方鏡像提供的功能初始化數(shù)據(jù)庫。安裝安裝完成后在宿主機請求,能正常響應(yīng)則表示部署成功了。配置連接新增一個連接至剛剛新建的,填,選擇。 基于 Docker 的 Kong 的環(huán)境搭建 本次操作都是基于 Docker 進(jìn)行操作的,使用的 Kong 的版本是 1.2.0 ,使用的 PostgreSQL 版...
摘要:雖然可以使用相同的方式部署應(yīng)用到云端,使用外部負(fù)載均衡器,但動態(tài)添加或者減少負(fù)載均衡節(jié)點依舊是痛點。這對使用外部負(fù)載均衡器幫助巨大。 數(shù)人云今天帶來的本篇文章將分享Docker在應(yīng)用程序生命周期每個階段中所扮演的角色,以及遷移到Swarm集群時需要考慮的問題。 利用Docker來開發(fā) Docker讓工作更輕松。如需要一個部署安裝MySQL數(shù)據(jù)庫,或者安裝Ghost,又或者Redis數(shù)據(jù)...
閱讀 2245·2021-11-19 09:40
閱讀 2261·2021-10-09 09:43
閱讀 3357·2021-09-06 15:00
閱讀 2877·2019-08-29 13:04
閱讀 2835·2019-08-26 11:53
閱讀 3627·2019-08-26 11:46
閱讀 2380·2019-08-26 11:38
閱讀 447·2019-08-26 11:27