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