如何使用 Docker 部署容器
如何使用 Docker 部署容器
設(shè)想,為了推出一個(gè)網(wǎng)站,您不必從裸機(jī)安裝一個(gè)完整的服務(wù)器。 而不是安裝操作系統(tǒng),然后安裝服務(wù)器軟件,然后部署精心設(shè)計(jì)的應(yīng)用程序或站點(diǎn),您可以簡單地在一個(gè)獨(dú)立的包中開發(fā)所有內(nèi)容,并使用單個(gè)命令將其推出。
這是使用容器的眾多好處之一。
它們使開發(fā)和部署周期變得異常高效。但是你如何部署這些容器?我想在這里指導(dǎo)你完成這個(gè)過程。我們將專注于在Ubuntu Server 18.04上部署基本的NGINX Web服務(wù)器作為容器。所有這一切都將在Docker的幫助下完成。
為了成功將NGINX部署為容器,您需要具備以下條件: – 一個(gè)安裝了Docker的Ubuntu Server 18.04的運(yùn)行實(shí)例。 – 一個(gè)docker 用戶組的成員用戶 是的,有了這兩部分,你就準(zhǔn)備好了。 您部署的每個(gè)容器都將基于從DockerHub中提取的鏡像。
您可以下拉單個(gè)鏡像并根據(jù)需要隨時(shí)使用。 DockerHub上還有許多鏡像用于單個(gè)應(yīng)用程序或平臺(tái)。 以NGINX為例。
如果你在DockerHub上搜索NGINX,你會(huì)得到大約56,172個(gè)條目。 這并不意味著每個(gè)條目都是您可以使用的可用圖像。 圖像命名如下: 例如,對于NGINX,您可能會(huì)找到一個(gè)名字為的鏡像: 或許你可能找到: 您也看到了,有幾乎所有需要的鏡像。
在使用圖像之前,必須將其保存在本地驅(qū)動(dòng)器上。 有兩種方法可以做到這一點(diǎn): – 直接使用pull命令 – 間接地,在容器部署過程中。 要從DockerHub中拉取圖像,您將打開一個(gè)終端窗口并發(fā)出命令: 如果你想拉取Ingress圖像,該命令是: 當(dāng)你拉取你需要的圖像之后,你可以使用命令確認(rèn)是否存在: 上面的命令將列出你拉取的所有鏡像(圖A)。 拉取隨意圖像時(shí)要謹(jǐn)慎。
為什么? 因?yàn)槟阌肋h(yuǎn)不知道創(chuàng)造它們的原因。 容器可能包含惡意代碼,可能會(huì)對您的**或數(shù)據(jù)造成嚴(yán)重破壞。 因此,**只使用**圖像(例如NGINX圖像)。 現(xiàn)在該部署容器了, 如果您尚未拉取鏡像,則在部署階段將下拉所需要的鏡像。
由于我們拉取**NGINX圖像,我們將使用它。 要部署容器,請使用docker命令,如下所示: 備注: – NAME等于您要為容器提供的名稱(這可以是任何內(nèi)容,例如nginx-webserver)。 – PORTS您要使用的端口(以NETWORK PORT:CONTAINER PORT形式)。 – IMAGE用于容器的圖像(例如nginx)。
因此,部署NGINX容器的基本命令是: 容器將要部署,NGINX Web服務(wù)器將在端口80上可用于本地**。但是,如果已在服務(wù)器上使用端口80來部署容器,該怎么辦? 您可以將其部署在**端口8080上,如下所示: 此時(shí),您可能會(huì)看到下一個(gè)問題。 運(yùn)行上述命令之一后,不返回bash提示符(圖B)。
你如何運(yùn)行一個(gè)容器,并獲得你的bash提示? 為此,您必須以分離模式運(yùn)行容器。 在此之前,您必須使用鍵盤組合[Ctrl] +終止當(dāng)前容器。 該組合將返回提示并殺*容器。
要確定容器是否運(yùn)行,使用命令: 將列出所有容器及其狀態(tài)(圖C)。 如果容器仍在運(yùn)行,我們必須在同一端口部署另一個(gè)容器之前將其終止(否則端口會(huì)發(fā)生沖突,從而阻止容器部署)。 要?dú)?正在運(yùn)行的容器,首先需要Container ID(隨機(jī)字符串)。 發(fā)出docker ps -a命令時(shí)會(huì)顯示此字符串。
要終止正在運(yùn)行的容器,使用命令: 其中CONTAINER_ID是相關(guān)容器的ID。 然后,您可以使用以下命令刪除容器: 其中CONTAINER_ID是相關(guān)容器的ID。 請注意,您不必輸入完整的Container ID,字符串的前四個(gè)字符就足夠了。
現(xiàn)在,要以分離模式部署容器,命令是: 這次你不僅會(huì)得到你的提示,而且Docker會(huì)為你顯示容器ID(圖D)。 如果你想在正在運(yùn)行的容器上工作怎么辦? 假設(shè)您想對NGINX進(jìn)行更改甚至開始開發(fā)它將顯示的網(wǎng)站? 因此,您必須訪問容器。 因此,您需要Container ID。 使用ID,發(fā)出命令: 其中CONTAINER_ID是容器的ID。
您現(xiàn)在應(yīng)該處于運(yùn)行容器提示符(圖E)中,您可以在其中開始處理NGINX服務(wù)器。 要退出容器,只需鍵入命令exit。 七、比你想象的容易 希望到現(xiàn)在為止,您看到容器部署并不像您想象的那樣具有挑戰(zhàn)性。
在Docker的幫助下,您可以在幾分鐘內(nèi)推出專業(yè)版的應(yīng)用和服務(wù)。 原文鏈接:。
docker容器化部署技巧
1、dockerfile-maven-plugin為**版本,建議選用,邀請Dockerfile應(yīng)與pom.xml處于同一目錄下 2、開發(fā)環(huán)境許配置DOCKER_HOST,配置方式如下: 1、編寫pom.xml(dockerfile-maven-plugins) 2、編寫pom.xml(docker-maven-plugins) 4、編寫Dockerfile存在在pom.xml同級目錄 5、打包發(fā)布遠(yuǎn)程docker鏡像
docker如何使用自帶jdk部署docker
docker自帶jdk部署docker安裝方式:1、在dockerhub中,jdk和tomacat不用想就知道會(huì)有現(xiàn)成的打包好的鏡像,果斷使用(建議使用更新時(shí)間比較近的)。2、使用docker-pull將鏡像下載下來。
3、使用docker-run,name-tomacat(自定義的鏡像名)-p8080:8080-d-tomacat(鏡像名)來啟動(dòng)tomacat,這個(gè)時(shí)候tomacat和jdk都搞定了。
4、使用docker-ps,查看啟動(dòng)的鏡像,啟動(dòng)成功后即可在訪問ip:8080f訪問到tomacat服務(wù)啟動(dòng)后的主頁。
如何在Docker中設(shè)定Go并部署應(yīng)用
如何在Docker中設(shè)定Go并部署應(yīng)用 步驟一 - 建立Dockerfile 如下的Dockerfile可以滿足以上的要求: **FROM** golang:1.6 *# Install beego and the bee dev tool* **RUN** go get github./astaxie/beego && go get github./beego/bee *# Expose the application on port 8080* **EXPOSE** 8080 *# Set the entry point of the container to the bee mand that runs the* *# application and watches for changes* **CMD** [\”bee\”, \”run\”] **行, FROM golang:1.6 將Go的**映像檔案作為基礎(chǔ)映像。該映像檔案預(yù)安裝了 Go 1.6 . 該映像已經(jīng)把 $GOPATH 的值設(shè)定到了 /go 。
所有安裝在 /go/src 中的包將能夠被go命令訪問。
第二行, RUN go get github./astaxie/beego && go get github./beego/bee 安裝 beego 包和 bee 工具。 beego 包將在應(yīng)用程式中使用。 bee 工具用語在開發(fā)中再現(xiàn)地重新載入我們的程式碼。 第三行, EXPOSE 8080 在開發(fā)主機(jī)上利用容器為應(yīng)用程式開放8080埠。
**一行, CMD [\”bee\”, \”run\”] 使用bee命令啟動(dòng)應(yīng)用程式的線上重新載入。 步驟二 - 構(gòu)建image 一旦建立了Docker file,執(zhí)行如下的命令來建立image: docker build -t ma-image . 執(zhí)行以上的命令將建立名為ma-image的image。該image現(xiàn)在可以用于使用該應(yīng)用程式的任何人。
這將確保這個(gè)團(tuán)隊(duì)能夠使用一個(gè)統(tǒng)一的開發(fā)環(huán)境。 為了檢視系統(tǒng)上的image列表,執(zhí)行如下的命令: docker images 這行該命令將輸出與以下類似的內(nèi)容: REPOSITORY TAG IMAGE ID CREATED SIZE ma-image latest 8d53aa0dd0cb 31 seconds ago 784.7 MB golang 1.6 22a6ecf1f7 5 days ago 743.9 MB 注意image的確切名字和編號可能不同,但是,應(yīng)該至少看到列表中有 golang 和 ma-image image。 步驟三 - 執(zhí)行容器 一旦 ma-image 已經(jīng)完成,可以使用以下的命令啟動(dòng)一個(gè)容器: docker run -it –rm –name ma-instance -p 8080:8080 \\ -v /app/MathApp:/go/src/MathApp -w /go/src/MathApp ma-image 步驟一 – 建立Dockerfile 如下的Dockerfile可以滿足以上的要求: **FROM** golang:1.6 *# Install beego and the bee dev tool* **RUN** go get … 如何在idea中設(shè)定tomcat熱部署 一、配置Project Structure 1 先找到軟體上如圖所示的圖示,開啟Project Structure. 2 【配置project】 這里需要注意四個(gè)地方。
1.專案名稱,可以隨便起。 2.New一個(gè)jdk的安裝路徑。 3.選一個(gè)6.0的介面。
4.專案的classes路徑。 3 【配置modules】 先配置Source。點(diǎn)選“+”,可以增加專案。欄目中會(huì)出現(xiàn)專案,右側(cè)也會(huì)出現(xiàn)專案。
將游標(biāo)移動(dòng)到專案的src上,點(diǎn)選上面的source按鈕,進(jìn)行專案的src的新增,右邊會(huì)顯示出來的。 4 【配置modules】 配置Path路徑。 這里需要注意的就一個(gè),配置專案的classes目錄百科,提供輸出的路徑。 5 【配置modules】 配置dependence。
這里載入的是jar包。點(diǎn)選右邊的“+”。 1.jdk的路徑。 2.專案lib路徑。
3.新增Tomcat的jar包。要選library格式。(jsp-api.jar ,servlet-api.jar) END 二、配置Tomcat 點(diǎn)選如圖所示的地方,進(jìn)行進(jìn)入Tomcat配置頁面。
進(jìn)入頁面后,點(diǎn)選右側(cè)的“+”。 彈出頁面后,按照如圖順序找到,tomcat—》Local。 按照如圖方式進(jìn)行配置。
1代表名稱,給配置的Tomcat取名稱。 2代表配置Tomcat的安裝路徑。 3代表Tomcat伺服器啟動(dòng)后,預(yù)設(shè)開啟的瀏覽器,根據(jù)自己習(xí)慣開啟。 4代表瀏覽器顯示路徑,根據(jù)自己喜好可以改。
5和6都是預(yù)設(shè)的,不需要修改。 配置Deployment,webapp為專案的webapp,后面的名字可以自己定義,別忘了加“/”. 首先開啟idea開發(fā)工具,open一個(gè)java的web專案,然后點(diǎn)選Run選單,選擇Edit Configurations…選單,開啟Run/Debug Configurations對話方塊 如何在idea中設(shè)定tomcat熱部署 點(diǎn)選對話方塊左上角的加號,選擇Tomcat Server,再選擇Local子選單 如何在idea中設(shè)定tomcat熱部署 設(shè)定個(gè)名稱,如果之前沒有關(guān)聯(lián)過tomcat的,需要先關(guān)聯(lián)一個(gè)tomcat,關(guān)聯(lián)tomcat選擇Application server的Configure按鈕 如何在idea中設(shè)定tomcat熱部署 Application Servers對話方塊開啟之后,點(diǎn)選加號,設(shè)定一個(gè)下載好的tomcat目錄路徑就可以關(guān)聯(lián)上 如何在idea中設(shè)定tomcat熱部署 在Run/Debug Configurations對話方塊中,選擇Deployment選項(xiàng)卡,對需要部署的專案檔案做設(shè)定,點(diǎn)選加號選擇Artifact,然后選擇war exploded方式,這種方式是以資料夾方式部署的,而war是以war包的方式,exploded方式支援熱部署,開發(fā)的時(shí)候選擇exploded方式就可以了 如何在idea中設(shè)定tomcat熱部署 新增完Artifact檔案之后,可以設(shè)定下Application context,不設(shè)定的話,預(yù)設(shè)應(yīng)用路徑為根目錄 如何在idea中設(shè)定tomcat熱部署 然后回到Server選項(xiàng)卡,設(shè)定On Update action和On frame detectivation選項(xiàng),都設(shè)定為Update classes and resources,表示classes檔案和資原始檔都更新 如何在idea中設(shè)定tomcat熱部署 8 如果只設(shè)置On Update action選項(xiàng),則需要每次自己手動(dòng)點(diǎn)選更新,設(shè)定了On frame detectivation,會(huì)監(jiān)測視窗,idea視窗發(fā)生切換則自動(dòng)更新檔案 商業(yè)版有這個(gè)功能,社群版的功能比較雞肋,只能reload classes 從上面的圖中可以看到,reload class 是在pile之后的,而Intellij沒有類似儲(chǔ)存java檔案就自動(dòng)pile的功能,需要手動(dòng)觸發(fā)下pile, ctrl+shift+f9 就會(huì)在左下角看到綠色的提… 如何在docker中部署springboot的web應(yīng)用 **步:搭建springboot的web應(yīng)用,可在CMD命令列中通過mvn install命令將應(yīng)用打成jar包:如demo-0.0.1-SNAPSHOT.jar 第二步:將jar包c(diǎn)opy到centos檔案系統(tǒng)中,指定目錄示例為:/usr/local/demo-0.0.1-SNAPSHOT.jar 第三步:構(gòu)建docker映象:此處以docker build方式構(gòu)建 首先你要明白docker是什么,其實(shí)他就和虛擬機(jī)器一樣,只是比虛擬機(jī)器占用資源更小,使用更方便,要部署應(yīng)用,你可以先拉取一個(gè)LINUX的系統(tǒng)下來,然后用docker基于拉取的linux映象建立容器,再在容器中進(jìn)行環(huán)境搭建,部署,就和在linux系統(tǒng)里操作是一樣的。 如何在 Visual Studio 中設(shè)定部署屬性 在配置管理器中啟用專案部署 在 Visual Studio 中,單擊主選單上的“生成”,然后單擊“配置管理器”。
為每個(gè)需要從開啟的解決方案進(jìn)行部署的專案選中“部署”選項(xiàng)。 配置專案屬性 在 Visual Studio 解決方案資源管理器中,右鍵單擊要為其配置屬性的專案,然后單擊“屬性”。 單擊專案設(shè)計(jì)器中的“部署”選項(xiàng)卡。 按下表中所述方法配置專案屬性,然后單擊“確定”。
對于解決方案中的每個(gè)專案,重復(fù)執(zhí)行步驟 1、2 和 3。 如何在docker里部署nodejs 下載映象,安裝環(huán)境 我們先執(zhí)行如下命令,啟動(dòng)虛擬機(jī)器: $ boot2docker start 2014/08/18 21:22:41 Waiting for VM to be started… ……….. 2014/08/18 21:23:21 Started. 2014/08/18 21:23:21 Docker client does not run on Windows for now. Please use 2014/08/18 21:23:21 \”boot2docker\” ssh 2014/08/18 21:23:21 to SSH into the VM instead. 如果我們的物理機(jī)記憶體低于4G,那么跑這個(gè)boot2docker可能需要手動(dòng)設(shè)定記憶體占用大?。?$ boot2docker start -m=512 我們利用命令就可以進(jìn)入linux虛擬機(jī)器了 $ boot2docker ssh boot2docker: 1.1.2 master : 740106c – Thu Jul 24 03:24:10 UTC 2014 執(zhí)行 docker 命令,會(huì)有一個(gè)命令列表,里面列出了所有 docker 支援的功能,列表如下: Commands: attach Attach to a running container build Build an image from a Dockerfile mit Create a new image from a container\’s changes … … 下面會(huì)對一些常用的命令進(jìn)行示例說明,我們可以通過如下命令,先查詢centos的映象,并把他下載下來 $ docker search centos #查詢centos名字的映象 $ docker pull centos #下載**純凈版本的centos映象 在呼叫search命令時(shí),你會(huì)看到有好多centos包,他們都是這樣的<username>/<image_name>,這些不在根目錄的映象都是非**的,是其他使用者提交到docker hub上去的,耐心等待片刻我們就可以將centos的映象拉下來了。 如果臉黑,映象又不幸被墻,那么試試加上下面的hosts: 54.234.135.251 get.docker.io 54.234.135.251 cdn-registry-1.docker.io 成功下載好centos映象之后,我們可以利用如下命令來檢視映象列表: $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos centos6 b1bd49907d55 2 weeks ago 212.5 MB centos centos7 b157b77b1a65 2 weeks ago 243.7 MB centos latest b157b77b1a65 2 weeks ago 243.7 MB 接下來我們就利用centos7這個(gè)映象輸出一段 hello world $ docker run b15 /bin/echo \’Hello world\’ Hello world 注意這里的 b15,他表示centos7這個(gè)images的id,不用全部打全,只要保證輸入的id前幾位能找到**映象即可,這點(diǎn)很贊。
稍微復(fù)雜一點(diǎn)的例子: $ docker run -i -d -t b15 /bin/sh -c \”while true; do echo hello world; sleep 1; done\” -i表示同步container的stdin,-t表示同步container的輸出,-d表示deamon,以后臺(tái)啟動(dòng)這個(gè)container,執(zhí)行這個(gè)container是永遠(yuǎn)不會(huì)停止的,每一秒鐘都會(huì)輸出hello world。 至于什么是container,container和image的關(guān)系我們下一段再說,列出映象的歷史: $docker history image_name。
如何使用docker部署vue項(xiàng)目
熟悉vue項(xiàng)目的開發(fā)朋友應(yīng)該了解,對于vue項(xiàng)目來說,上線其實(shí)就是執(zhí)行npm run build 命令,然后將build出的dist文件夾上傳到服務(wù)器上就可以了,對于現(xiàn)在的前后端分離項(xiàng)目來說,就是把dist放到nginx的html文件夾即可。 上傳的過程既可以手動(dòng)實(shí)現(xiàn),也可以通過jenkins這類**編譯軟件,總之,殊途同歸。
除了上面兩種還有一種現(xiàn)在比較火的部署方式,就是docker部署,當(dāng)然正如上面說的,docker也是要實(shí)現(xiàn)上面的操作,只不過有些差異而已。
針對docker部署需要了解的是,一般我們只需要拉取nginx鏡像,把dist文件夾寫入鏡像即可,不需要去鏡像里面執(zhí)行拉取代碼、執(zhí)行編譯、打包等操作。這些操作一般在寫入鏡像執(zhí)行。 這樣做的目的跟docker的理念是一致的,功能解耦,方便維護(hù),而且對于一些大公司來說,可能還需要將編譯后的代碼進(jìn)行掃描等操作,如果在docker鏡像內(nèi)編譯的話如果出現(xiàn)錯(cuò)誤是不好定位問題的。 那么如何實(shí)現(xiàn)docker部署vue項(xiàng)目呢,操作如下參考: 文件目錄如下: 在vueProject 根目錄下新建Dockerfile文件,注意沒有后綴,nginx鏡像默認(rèn)服務(wù)器的目錄在/usr/share/nginx/html,內(nèi)容如下: build項(xiàng)目: Build完成后會(huì)生成dist目錄 然后在vueProject根目錄下打開命令行執(zhí)行如下命令生成鏡像: 注意**是一個(gè)點(diǎn),代表在當(dāng)前目錄執(zhí)行Dockerfile 如果沒報(bào)錯(cuò)說明執(zhí)行成功,此時(shí)可以在docker鏡像列表看到該鏡像。
啟動(dòng)鏡像: —name vp 代表自定義啟動(dòng)的鏡像名稱 -dp 是-d,-p的簡寫 8088:80 代表在宿主機(jī)的8088端口映射鏡像的80端口,因?yàn)閚ginx默認(rèn)的服務(wù)器端口就是80 **就是之前生成的鏡像名稱。 大功告成。