摘要:指令這條命令是指明最后容器需要暴露哪些端口號,這樣其他系統(tǒng)才能使用這個端口。但是靈活性不高,后面我在編排的時候會教大家用編排來統(tǒng)一開發(fā)環(huán)境。更多還有更多指令大家看下官方文檔,我自己覺得上面的指令算是使用比較多的了。
前言
上一篇文章呢,我們簡單的了解了Docker的基本命令,這篇文章呢,我們來了解下Dockerfile這個文件。
一個神奇的文件:Dockerfile我不知道有多少同學(xué)之前用過Vagrant來統(tǒng)一開發(fā)環(huán)境的,如果你之前接觸過Vagrant的話,Dockerfile有點類似于vagrantfile文件。
一言以蔽之,Dockerfile就是描述了你要構(gòu)建一個什么樣的鏡像,好比你要建立一棟大樓,你需要把每一步寫進(jìn)一張藍(lán)圖中,然后交給工人(docker build [dockerfile文件所在路徑]),然后你就擁有了一棟房子,懂了么?懂了么?懂了么?
我們來看下dockerfile長什么樣子吧?
# Nginx # # VERSION 0.0.1 FROM ubuntu MAINTAINER Victor VieuxLABEL Description="This image is used to start the foobar executable" Vendor="ACME Products" Version="1.0" RUN apt-get update && apt-get install -y inotify-tools nginx apache2 openssh-server
這個是官方給出的例子。
FROM指明了這里鏡像繼承Ubuntu的基礎(chǔ)系統(tǒng)。
MAINTAINER是指明了作者信息,一般是名字和郵箱。
LABEL是為你即將打造的鏡像寫上一些標(biāo)簽信息。
RUN這個是執(zhí)行一條命令,等價于你在終端打了一條命令
當(dāng)然,遠(yuǎn)遠(yuǎn)不止這些命令,我列舉幾條比較常用的還有一些注意點吧。
FROM指令FROM:
這里大家要注意一點就是,docker官方源鏡像被墻,所以如果你要使用國內(nèi)源的話需要這樣來書寫:FROM daocloud.io/ubuntu:latest,這是很多新人一直摸不著頭腦經(jīng)常要問的,這里給大家提示下。
RUN指令RUN
這條命令相當(dāng)于你在終端執(zhí)行了一條命令,當(dāng)然這條命令一般是一條能夠帶來內(nèi)容寫入的命令,比如RUN apt-get install vim這樣的安裝程序的命令,或者是RUN echo "Hello" > /hello.txt這樣的腳本命令。RUN可以在dockerfile中存在多條,大家要注意了。
當(dāng)然還有RUN ["/bin/bash", "-c", "echo hello"]這樣也是可以的。
CMD ["executable","param1","param2"]
CMD指令一般用來指明啟動容器時需要運行什么進(jìn)程。一般我們是跑一條無輸入有輸出的前臺進(jìn)程,比如官方ghost啟動時就運行了/entrypoint.sh npm start,這就是一條無輸入有輸出的命令,輸出將會作為容器的日志顯示。但是你看到ghost的Dockerfile會發(fā)現(xiàn):
... COPY docker-entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] EXPOSE 2368 CMD ["npm", "start"]
ENTRYPOINT是配置容器啟動后執(zhí)行的命令,CMD此時為它提供了兩個參數(shù),所以等價于CMD /entrypoint.sh npm start。CMD只能執(zhí)行一次,重復(fù)寫會覆蓋哦。
EXPOSE指令EXPOSE[ ...]
這條命令是指明最后容器需要暴露哪些端口號,這樣其他系統(tǒng)才能使用這個端口。比如常見的80、3306這些,PHP開發(fā)者對這些端口應(yīng)該是非常熟悉的了。在這里多說幾句,就是寫明了這個指令不代表你可以從外面就直接連進(jìn)來,因為你的dockerfile最后生成的是鏡像文件,你需要用這個鏡像文件來run容器。所以你要在run的時候使用-P參數(shù)來隨機分配映射口或者使用-p來指定端口映射。
ADD、COPY指令ADDCOPY
這兩個都是復(fù)制命令,比如Ubuntu下需要換源(替換/etc/apt/source.list文件)就可以用這個命令,推薦使用COPY
VOLUME掛載指令VOLUME ["/data"]
顧名思義,就是掛載一個主機目錄到你的容器內(nèi),對于PHP開發(fā)者而言就是你可以在本地寫好代碼在目錄/workdir/test,然后掛載進(jìn)去來省去繁雜的復(fù)制代碼進(jìn)入容器的過程。但是靈活性不高,后面我在編排的時候會教大家用編排來統(tǒng)一開發(fā)環(huán)境。
更多還有更多指令大家看下官方文檔,我自己覺得上面的指令算是使用比較多的了。作為PHP開發(fā)者只要認(rèn)識這幾個我覺得夠用了。
構(gòu)建鏡像前面說了好多,目的就只是為了自動化構(gòu)建一個屬于自己的鏡像。哈哈,別不耐煩,但凡官方給出的鏡像都會附帶一份dockerfile的,不信到hub上去look look。你的PHP官方也是給出了dockerfile:Docker Official Image packaging for PHP
好了,該給出這道命令了
docker build [dockerfile所在目錄]
比如我的dockerfile路徑是~/project/dockerfile,那么我構(gòu)建鏡像的命令是:
docker build -t cnbrucehong/myimg ~/project/ | | -t指明了你要給這個鏡像什么名字 注意這里沒有dockerfile
然后你鍵入
docker images
你就能看到你創(chuàng)建的鏡像啦,趕緊run一下試試吧!~有問題可以在下面留言哦!~
下節(jié)預(yù)告下屆我們來說說如何在Mac下優(yōu)雅的搭建Docker,哈哈如果你是linux的用戶可以直接跳過,如果是window的話也是可以看看的,因為里面介紹的軟件在window也是有的,但是我還是推薦大家使用mac啦,下節(jié)見咯!~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26544.html
摘要:指令這條命令是指明最后容器需要暴露哪些端口號,這樣其他系統(tǒng)才能使用這個端口。但是靈活性不高,后面我在編排的時候會教大家用編排來統(tǒng)一開發(fā)環(huán)境。更多還有更多指令大家看下官方文檔,我自己覺得上面的指令算是使用比較多的了。 前言 上一篇文章呢,我們簡單的了解了Docker的基本命令,這篇文章呢,我們來了解下Dockerfile這個文件。 一個神奇的文件:Dockerfile 我不知道有多少同學(xué)...
摘要:三部署架構(gòu)說明這個方案僅適用于小公司敏捷項目團(tuán)隊聯(lián)調(diào)測試環(huán)境的部署,同時也可以作為學(xué)習(xí)入門的,并不適用于有一定規(guī)模的生產(chǎn)環(huán)境。另外,建議把測試域名泛解析到部署這臺服務(wù)的機器。模塊配置部署腳本業(yè)務(wù)模塊的配置基本是通過部署腳本來操作的。 項目地址: https://github.com/xiongwilee...基本特性: 快捷部署多人nginx+php的開發(fā)測試環(huán)境,也可以擴展構(gòu)建其...
摘要:三部署架構(gòu)說明這個方案僅適用于小公司敏捷項目團(tuán)隊聯(lián)調(diào)測試環(huán)境的部署,同時也可以作為學(xué)習(xí)入門的,并不適用于有一定規(guī)模的生產(chǎn)環(huán)境。另外,建議把測試域名泛解析到部署這臺服務(wù)的機器。模塊配置部署腳本業(yè)務(wù)模塊的配置基本是通過部署腳本來操作的。 項目地址: https://github.com/xiongwilee...基本特性: 快捷部署多人nginx+php的開發(fā)測試環(huán)境,也可以擴展構(gòu)建其...
摘要:導(dǎo)讀要從容器化開始,而容器又需要從開始,本文將介紹如何寫出一個優(yōu)雅的文件。只要記住以上三點就能寫出不錯的。執(zhí)行完成項目的構(gòu)建。 導(dǎo)讀 Kubernetes要從容器化開始,而容器又需要從Dockerfile開始,本文將介紹如何寫出一個優(yōu)雅的Dockerfile文件。 文章主要內(nèi)容包括: Docker容器 Dockerfile 使用多階構(gòu)建 感謝公司提供大量機器資源及時間讓我們可以實踐...
摘要:更換源更新源使用的源通過安裝腳本安裝應(yīng)用所需要的依賴。 showImg(https://segmentfault.com/img/remote/1460000011106825); 有了第二篇《使用 Docker 搭建簡易的 Java Web 環(huán)境 (二)》,懂了如何通過單一鏡像創(chuàng)建 Docker 環(huán)境,這篇主要學(xué)習(xí)如何使用「docker-compose」。目標(biāo)是:搭建 Laravel...
閱讀 1215·2023-04-26 00:47
閱讀 3568·2021-11-16 11:53
閱讀 795·2021-10-08 10:05
閱讀 2739·2021-09-22 15:19
閱讀 2981·2019-08-30 15:55
閱讀 2755·2019-08-29 16:55
閱讀 2921·2019-08-29 15:20
閱讀 1111·2019-08-23 16:13