国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

圖表君聊docker-Dockerfile

FingerLiu / 1794人閱讀

摘要:圖表君聊前邊幾篇文章給大家介紹了的三大基本概念。維護(hù)者的信息是圖表君當(dāng)前目錄到容器中的目錄下指定工作路徑為安裝依賴暴露端口啟動(dòng)創(chuàng)建鏡像編寫(xiě)好后,就可以使用來(lái)了。歡迎訂閱我的公眾號(hào),第一時(shí)間獲取圖表君的新文章。

圖表君聊docker-Dockerfile

前邊幾篇文章給大家介紹了docker的三大基本概念。可能大家覺(jué)得概念的東西比較生澀,有沒(méi)有更多實(shí)戰(zhàn)的例子呢?好了,從這篇文章開(kāi)始,我會(huì)給大家介紹更多實(shí)際的例子來(lái)幫助大家,那么就從dockerfile開(kāi)始吧。

在介紹docker image的時(shí)候,我給大家介紹了build image的兩種方法,但是留了一個(gè)坑,就是DockerFile,那今天圖表君就來(lái)把這個(gè)坑填了。

什么是Dockerfile

Dockerfile實(shí)際上是由一行行命令組成的,讓用戶可以方便的創(chuàng)建自定義鏡像。下邊就是一個(gè)Dockerfile的例子

FROM python:2.7
MAINTAINER Aaron Chen "mail@aaronchen.cn"
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]

這個(gè)例子是啟動(dòng)一個(gè)python flask app的Dockerfile(flask是python的一個(gè)輕量的web框架)。下邊我就來(lái)介紹下dockerfile里的指令。

通常來(lái)說(shuō),Dockerfile的指令分為四類(lèi),基礎(chǔ)鏡像信息,維護(hù)者信息,鏡像操作指令以及容器啟動(dòng)時(shí)執(zhí)行的指令。常用的指令有如下:

FROM

用于指定基礎(chǔ)的images

格式為 FROM or FORM :

一個(gè)Dockerfile里的第一條指令必須為FORM指令。

MAINTAINER

格式為 MAINTAINER 用于指定維護(hù)者信息。

RUN

格式為 RUN
RUN命令將在基礎(chǔ)鏡像上執(zhí)行相應(yīng)的指令,并提交為新的鏡像。

CMD

啟動(dòng)Docker時(shí)運(yùn)行的命令,一個(gè)dockerfile只有一個(gè)CMD起效,但是當(dāng)用戶在docker run 時(shí)提供了運(yùn)行的命令時(shí),CMD命令就會(huì)被覆蓋。

推薦的格式為為 CMD["executable","param1","param2"]

另外一種格式為 CMD["param1","param2"],配合ENTRYPOINT同時(shí)使用,其中的兩個(gè)參數(shù)會(huì)提供給ENTRYPOINT。

ENTRYPOINT

配置容器啟動(dòng)后執(zhí)行的命令,并且不可被 docker run 提供的參數(shù)覆蓋。每個(gè) Dockerfile 中只能有一個(gè) ENTRYPOINT ,當(dāng)指定多個(gè)時(shí),只有最后一個(gè)起 效。

COPY

復(fù)制本地主機(jī)的(Dockerfile所在目錄的相對(duì)路徑)到容器里

WORKDIR

為后續(xù)的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目錄。
格式為 WORKDIR /workdirPath

上邊就是一些基礎(chǔ)的命令,還有其他一些命令,圖表君就不一一介紹了,大家有興趣了可以去docker官網(wǎng)上自己查詢。
我們?cè)賮?lái)看上邊的Dockerfile的例子,現(xiàn)在應(yīng)該能看懂了把。它定義就是:

從dockerhub上pull下python 2.7的基礎(chǔ)鏡像。

維護(hù)者的信息是圖表君

copy當(dāng)前目錄到容器中的 /app目錄下

指定工作路徑為/app

安裝依賴

暴露5000端口

啟動(dòng)app

創(chuàng)建鏡像

編寫(xiě)好Dockerfile后,就可以使用docker build來(lái)build images了。其格式為:
docker build 選項(xiàng) [路徑],通常我們可以使用.dockerignore來(lái)定義docker build images的時(shí)候忽略的文件,通常項(xiàng)目的依賴我們一般會(huì)忽略(例如 npm install后的 node_modules)。我們可以使用 docker build . -t pythonflasksample來(lái)build image. 然后我們就可以使用docker run 來(lái)運(yùn)行容器。

又一個(gè)栗子

上邊是一個(gè)python app的栗子,我們?cè)賮?lái)看一個(gè)前端的栗子。

├── .dockerignore
├── .gitignore
├── Dockerfile
├── README.md
├── app
│?? ├── directives
│?? ├── index.html
│?? └── index.js
├── dist
│?? ├── bundle.js
│?? └── index.html
├── node_modules
├── karma.conf.js
├── package.jsonimage
└── webpack.config.js

這是一個(gè)Angular的前端project的項(xiàng)目目錄。我們用npm來(lái)管理和安裝依賴的包,用webpack來(lái)構(gòu)建項(xiàng)目。下來(lái)用Dockerfile來(lái)定義一個(gè)docker image,將其容器化。

    FROM node:4.6
     MAINTAINER Aaron Chen
 
     RUN mkdir /app
     WORKDIR /app
     COPY . /app
 
     RUN npm install
     
     EXPOSE 8080

這里Dockerfile的定義,很簡(jiǎn)單,下載基礎(chǔ)鏡像node 4.6,安裝依賴,暴露接口。

下來(lái)我們用docker build . -t webpackdemo來(lái)build這個(gè)image,當(dāng)image構(gòu)建好后,簡(jiǎn)單的執(zhí)行docker run -it -p 3456:8080 webapackdemo2 npm run start,好了一個(gè)前端的project就啟動(dòng)起來(lái)了。相當(dāng)?shù)妮p松,讓你訪問(wèn)http://localhost:3456/的時(shí)候就可以訪問(wèn)了。

這里是這個(gè)project的github repo,大家可以來(lái)一看究竟。
dockerSample

解決了什么問(wèn)題呢?

如果你是個(gè)前端開(kāi)發(fā)人員,看到這里的時(shí)候一定會(huì)覺(jué)得,這到底解決了什么問(wèn)題呢?我本地啟動(dòng)也沒(méi)有什么問(wèn)題啊。的確圖表君剛開(kāi)始也有這樣的疑問(wèn),但經(jīng)過(guò)思考,我認(rèn)為解決了這幾個(gè)問(wèn)題:

讓開(kāi)發(fā)的環(huán)境能更簡(jiǎn)單的搭建了。經(jīng)常會(huì)有這樣的場(chǎng)景,在別人機(jī)器上正常的開(kāi)發(fā)環(huán)境,在自己的機(jī)器上為什么就是不行呢?研究了半天,發(fā)現(xiàn)人家用的是node 6.5,自己用的是node 0.11。在使用了docker以后就解決了這樣的問(wèn)題,只要pull下image就OK了,所有的版本和依賴都固定下來(lái)了。

現(xiàn)在業(yè)績(jī)最流行的構(gòu)架方式當(dāng)屬于微服務(wù)了,一個(gè)系統(tǒng)的正常啟動(dòng)依賴于多個(gè)服務(wù),有可能對(duì)于其中的某些服務(wù)我們并不熟悉,那么如果將服務(wù)容器化了以后,就能有效的解決這樣的問(wèn)題了。另外對(duì)于團(tuán)隊(duì)里的其他非技術(shù)人員使得他們也能容易的在本地搭建起環(huán)境來(lái)。

其實(shí),上邊這個(gè)前端項(xiàng)目中的dockerfile有一個(gè)很大的問(wèn)題,圖表君給大家留個(gè)問(wèn)題。如果大家看出來(lái)了,歡迎給我留言

好了,Dockerfile就介紹這么多,我們下期再見(jiàn)。


歡迎訂閱我的公眾號(hào),第一時(shí)間獲取圖表君的新文章。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26748.html

相關(guān)文章

  • 圖表君聊Docker-開(kāi)篇

    摘要:圖表君聊開(kāi)篇今天是圖表君聊的第一篇,為什么會(huì)有這個(gè)系列呢容器技術(shù)出現(xiàn)已經(jīng)有一段時(shí)間了,之前零零星星的也看過(guò)一些文章,圖表君的項(xiàng)目上也在使用。至于,圖表君沒(méi)試過(guò),官網(wǎng)有的教程,大家可以參考。上的官網(wǎng),安裝,然后跟著圖表君一起學(xué)習(xí)吧。 圖表君聊Docker-開(kāi)篇 今天是圖表君聊Docker的第一篇,為什么會(huì)有這個(gè)系列呢?容器技術(shù)Docker出現(xiàn)已經(jīng)有一段時(shí)間了,之前零零星星的也看過(guò)一些文章...

    z2xy 評(píng)論0 收藏0
  • 圖表君聊docker-倉(cāng)庫(kù)

    摘要:圖表君聊倉(cāng)庫(kù)今天我們來(lái)繼續(xù)聊,上篇文章我們介紹了里的今天來(lái)繼續(xù)三大概念中的最后一個(gè)倉(cāng)庫(kù)。這個(gè)倉(cāng)庫(kù)可以是一個(gè)私有的倉(cāng)庫(kù),供一個(gè)內(nèi)部使用。目前官方維護(hù)一個(gè)公共倉(cāng)庫(kù)里邊有大量的,可以滿足我們的大部分需求。原創(chuàng)文章,歡迎轉(zhuǎn)發(fā),但請(qǐng)標(biāo)明出處。 圖表君聊docker-倉(cāng)庫(kù) 今天我們來(lái)繼續(xù)聊docker,上篇文章我們介紹了docker里的Container.今天來(lái)繼續(xù)三大概念中的最后一個(gè)--倉(cāng)庫(kù)(R...

    justCoding 評(píng)論0 收藏0
  • 圖表君聊Docker-images

    摘要:當(dāng)運(yùn)行這條命令的時(shí)候,實(shí)際上是從上來(lái)請(qǐng)求標(biāo)記為的,當(dāng)然由于眾所周知的原因,的速度會(huì)很慢。運(yùn)行下邊這條命令,我們就可以清理下了。歡迎訂閱我的公眾號(hào),第一時(shí)間獲取圖表君的新文章。 上篇文章我們介紹了docker的歷史由來(lái)帶來(lái)的一些好處,從這篇文章開(kāi)始,我們開(kāi)始正式的進(jìn)入Docker的世界,首先給大家介紹一下Docker一些基本概念。 Docker的基本概念 Docker的基本概念并不是很多...

    haobowd 評(píng)論0 收藏0
  • 圖表君聊Docker-Container

    摘要:利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外層掛接一個(gè)寫(xiě)讀寫(xiě)層。容器的啟動(dòng)過(guò)程,對(duì)于理解容器至關(guān)重要,需要深入的理解。同時(shí),對(duì)于終止?fàn)顟B(tài)的容器,我們可以采用來(lái)啟動(dòng)。歡迎訂閱我的公眾號(hào),第一時(shí)間獲取圖表君的新文章。 上篇文章我們介紹了Docker三大概念中的Image,這篇我們來(lái)介紹Container,上篇文章中我們了解到了Image是運(yùn)行在Container中的,實(shí)際...

    paney129 評(píng)論0 收藏0
  • 2018年最佳JavaScript數(shù)據(jù)可視化和圖表庫(kù)

    摘要:它有什么圖表加粗文字如何使用這個(gè)圖表庫(kù)可以通過(guò)存儲(chǔ)庫(kù)下載或通過(guò)包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫(kù)可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫(kù)專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計(jì),提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫(kù),但哪一個(gè)最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類(lèi)型,圖表本身的目的等等。在本文中,每個(gè)JavaScript圖表庫(kù)將與一些關(guān)鍵...

    terasum 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<