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