Docker Dockerfile
一般來說,使用者主要使用Dockerfile和dockers build命令來完成一個新映象的建立。
命令格式如下: docker build PATH|URL
PATH或URL所指向的檔案成為context(上下文),PATH通常是一個含有Dockerfile檔案的目錄,URL可以是一個Github的地址。
如:docker build -t 映象名稱 目錄
二:Dockerfile簡介
Dockerfile描述了組裝映象的步驟,其中每條指令都是單獨執行的。除了FROM指令,其他每一天指令都會在上一條指令所生成映象的基礎上執行,執行完成後生成一個新的映象層,新的映象層覆蓋在原來的映象之上從而形成了新的映象。Dockerfile所生成的最終映象就是在基礎映象上面疊加一層層的映象層組建的。
為了提高映象構建的速度,Docker daemon會快取構建過程中的中間映象。
三:Dockerfile指令
在Dockerfile中,指令不區分大小寫,但是為了與引數區分,推薦大寫。Docker會順序執行Dockerfile中的指令。在Dockerfile中以#開頭的行是註釋,而在其他位置出現的#會被當成引數。
1. 第一條指令必須是FROM指令,它用於指定構建映象的基礎映象。
2. MAINTAINER
維護者 通常放到FROM後面
3. ADD
ADD命令有兩個引數,源和目標。它的基本作用是從源系統的檔案系統上覆制檔案到目標容器的檔案系統。如果源是一個URL,那該URL的內容將被下載並複製到容器中。
如:ADD /my_app_folder /my_app_folder
4. CMD
和RUN命令相似,CMD可以用於執行特定的命令。和RUN不同的是,這些命令不是在映象構建的過程中執行的,而是在用映象構建容器後被呼叫。
Dockerfile.中只能有一個CMD指令。 如果你指定了多個,那麼最後個CMD指令是生效的。
CMD application "argument", "argument"
如:CMD "echo" "Hello docker!"
5. ENTRYPOINT
配置容器啟動後執行的命令,並且不可被 docker run 提供的引數覆蓋。
每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個起效。
ENTRYPOINT 幫助你配置一個容器使之可執行化,如果你結合CMD命令和ENTRYPOINT命令,你可以從CMD命令中移除“application”而僅僅保留引數,引數將傳遞給ENTRYPOINT命令。
# Usage: ENTRYPOINT application "argument", "argument", ..
# Remember: arguments are optional. They can be provided by CMD
# or during the creation of a container.
ENTRYPOINT echo
# Usage example with CMD:
# Arguments set with CMD can be overridden during *run*
CMD "Hello docker!"
ENTRYPOINT echo
6. ENV
ENV命令用於設定環境變數。這些變數以”KEY=VALUE”的形式存在,並可以在容器內被指令碼或者程式呼叫。這個機制給在容器中執行應用帶來了極大的便利。
如:ENV SERVER_WORKS 4
7. EXPOSE
EXPOSE用來指定埠,使容器內的應用可以透過埠和外界互動。
如:EXPOSE 8080
8. RUN
RUN命令是Dockerfile執行命令的核心部分。它接受命令作為引數並用於建立映象。不像CMD命令,RUN命令用於建立映象(在之前COMMIT的層之上形成新的層)。
# Usage: RUN [command]
RUN aptitude INSTALL -Y riak
9. USER
USER命令用於設定執行容器的UID。
# Usage: USER [UID]
USER 751
10. VOLUME
VOLUME命令用於讓你的容器訪問宿主機上的目錄。透過 VOLUME 指令建立的掛載點,無法指定主機上對應的目錄,是自動生成的。
# Usage: VOLUME ["/dir_1", "/dir_2" ..]
VOLUME ["/my_files"]
11. WORKDIR
WORKDIR命令用於設定CMD指明的命令的執行目錄。
# Usage: WORKDIR /path
WORKDIR ~/
12. COPY
COPY
複製本地所指向的檔案或目錄,將它新增到新映象中。
13. LABEL
定義一個映象標籤
四:舉例
redis 主從複製,透過Dockerfile建立redis-master,redis-slave映象
Dockerfile
點選(此處)摺疊或開啟
-
FROM redis:4.0.2
-
COPY redis.conf /usr/local/bin/redis.conf
- CMD ["redis-server","/usr/local/bin/redis.conf"]
檔案目錄
建立redis-master映象
docker build -t redis-master:latest .
建立redis-slave映象
docker build -t redis-slave:latest .
啟動redis-master容器
docker run -v /home/redis/6379:/data --name redis-master -d redis-master
啟動redis-slave1容器
docker run -v /home/redis/6380:/data -it --name redis-slave1 --link redis-master:master -d redis-slave
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2146118/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小白學Docker(九) Docker DockerfileDocker
- Docker 入門:DockerfileDocker
- Docker_07 DockerfileDocker
- Docker的Dockerfile指令Docker
- Docker學習—DockerFileDocker
- Docker 基礎 : DockerfileDocker
- Docker映象中提取DockerfileDocker
- docker容器dockerfile詳解Docker
- Docker--DockerFile與映象Docker
- Docker筆記之DockerfileDocker筆記
- docker之Dockerfile實踐Docker
- 【Docker】動手寫Dockerfile學習DockerDocker
- Docker, Dockerfile, 和Docker Compose區別 | BaeldungDocker
- Docker | dockerfile 檔案編寫Docker
- Docker(4):Dockerfile命令一覽Docker
- Docker實戰-編寫DockerfileDocker
- [第十二篇]——Docker DockerfileDocker
- Docker容器資料卷、DockerfileDocker
- Docker(二):Dockerfile 使用介紹Docker
- Docker(三):Dockerfile 命令詳解Docker
- Docker映象的構成__DockerfileDocker
- docker之Dockerfile指令介紹Docker
- 用dockerfile構建docker映象Docker
- Docker 映象構建之 DockerfileDocker
- Docker入門02——Dockerfile詳解Docker
- Docker如何製作映象-Dockerfile的使用Docker
- Docker與Dockerfile極簡入門文件Docker
- 跟我一起學docker(八)--DockerfileDocker
- Docker從入門到精通(五)——DockerfileDocker
- [Docker 系列]docker 學習七,DockerFile 編寫和實戰Docker
- 【Docker 系列】docker 學習七,DockerFile 編寫和實戰Docker
- Docker 入門系列四:Dockerfile-映象原理Docker
- Docker框架使用系列教程(七)Dockerfile映象建立Docker框架
- Docker - 02 建立映象 Dockerfile 指令速查表Docker
- Docker(3):Dockerfile介紹及簡單示例Docker
- Docker的基本使用及DockerFile的編寫Docker
- 【Docker】(10)---詳細說說 Dockerfile檔案Docker
- Docker容器學習梳理 - Dockerfile構建映象Docker