【Dockerfile核心命令】
1、FROM 指定基礎鏡像構建
寫法:
FROM 指定基礎鏡像
2、COPY 複製命令。從上下文目錄中複製文件或者目錄到容器裏指定路徑。
寫法:
COPY 源路徑,目標路徑
COPY ["源路徑","目標路徑"]
3、RUN運行指令。構建的時候運行的指令
主要在於鏡像構建的時候運行,運行build命令的時候
後面接的命令就是shell輸入的命令
寫法
RUN shell命令 參數1 參數2
RUN ["shell命令 ","參數1"," 參數2"]
例如:
RUN ["echo",">"," /usr/share/index.html"]
4、CMD運行指令。運行容器時候運行的指令
主要在於鏡像運行容器的時候生成,運行run的時候運行
寫法
CMD <shell 命令>
CMD ["<可執行文件或命令>","<param1>","<param2>",...]
例如:
CMD ["dotnet","netcore.dll"]
缺點:在run 命令後面可以進行覆蓋
docker run -d -P netcore dotnet netcore.dll 進行覆蓋掉
5、ENTRYPOINT運行指令。運行容器時候運行的指令(不會被覆蓋)
寫法
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
可以和CMD動態結合,設置動態的配置參數
例如
ENTRYPOINT ["nginx", "-c"] 定參
CMD ["/etc/nginx/nginx.conf"]變參
6、EXPOSE暴露端口指令
僅僅聲明端口,就是指定鏡像暴露的端口
在run 的時候,通過docker run -p 會自動隨機映射到EXPOSE端口
寫法
EXPOSE 端口
EXPOSE 端口
例如
EXPOSE 5000
EXPOSE 5001
7、WORKDIR工作目錄指令
用於應用在容器內的工作目錄,就好比:netcore目錄
寫法
WORKDIR <工作目錄路徑>
例如
WORKDIR /netcore
或者
WORKDIR /nginx
【Ubuntu 中 Nginx 原始配置】
- 安裝 nginx 所需工具 =》apt -y install gcc make pcre-devel zlib-devel tar zlib
- 下載 nginx =》wget http://nginx.org/download/nginx-1.16.1.tar.gz
- nginx 解壓/nginx 目錄 =》tar -zxvf nginx-1.16.1.tar.gz
- 切換到/nginx/nginx-1.16.1 執行 ./configure , make ,make install =》cd nginx-1.16.1 && ./configure && make && make install
- 切換到/usr/local/nginx/sbin,執行 ./nginx 啓動nginx =》=》cd /usr/local/nginx/sbin && ./nginx
【配置nginx的Dockerfile文件】
FROM ubuntu
RUN apt -y install gcc make pcre-devel zlib-devel tar zlib
WORKDIR /nginx
COPY nginx-1.16.1.tar.gz /nginx
RUN tar -zxvf nginx-1.16.1.tar.gz
RUN cd nginx-1.16.1 && ./configure && make && make install
EXPOSE 80
CMD /bin/bash
- 運行Dockerfile配置構建 nginx =》docker build -t nginx .
- 耐心等待,最後一步提示:
Successfully built [image-id]
Successfully tagged nginx:latest
【啓動 nginx 命令】
- 運行 nginx =》 docker run -itd -P nginx 參數 -it 交互式命令,d後臺運行,-P暴露端口
- 查看運行的容器信息 =》docker ps / docker container ls 查看所有,添加參數 -a
- 進入 nginx =》docker exec -it nginx /bin/bash 參數 -it 交互式命令,bash 是 Bash Shell (Linux 默認)
- 切換到 nginx 安裝路徑 =》cd /usr/local
- 查看當前目錄列表 =》ls 顯示 conf html logs sbin
- 進入 sbin 文件夾 =》cd sbin
- 再次查看當前目錄列表 =》ls 顯示 nginx
- 直接啓動 nginx =》./nginx
【Dockerfile 指令詳解】
指令 | 說明 |
FORM | 指定基礎鏡像(FROM是必備的指令,並且必須爲第一條指令)。 |
RUN |
用來執行命令行命令。其基本格式: shell格式: RUN <命令> ,輸入在bash環境中的命令即可,一個dockerfile允許使用RUN不得超過127層,所以,使用一次RUN, 使用 ‘ \ ’ 換行,使用‘ && ’執行下一條命令。一般使用此種格式; exec格式: RUN <"可執行文件", "參數1", "參數2">,此種方式像是函數調用中的格式; |
COPY |
複製文件。 其基本格式: 格式1:COPY <源路徑>...<目標路徑> 格式2:COPY [“<源路徑1>”,....."<目標路徑>"] |
ADD | 更高級的複製文件,在COPY的基礎上增加了一些功能,如果複製的是壓縮包的話,會直接解壓,而不需要在使用RUN解壓; |
CMD |
容器啓動命令。其基本格式: shell格式: CMD <命令> exec格式: CMD ["可執行文件", "參數1", "參數2"...] 參數列表格式: CMD [“參數1”, “參數2”...],在指定了ENTRYPOINT指令後,用CMD指定具體的參數 |
ENTRYPOINT | 入口點。其基本格式分爲exec和shell,ENTRYPOINT的目的和CMD一樣,都是在指定容器啓動程序及參數。ENTRYPOINT在運行中可以替代,不過比CMD繁瑣,需要通過docker run 的參數--entrypoint 來指定。當指定了ENTRYPOINT後,CMD的含義就發生了改變,不在是直接運行其命令,而是將CMD的內容作爲參數傳遞給ENTRYPOINT指令。其執行時就變成了: <ENTRYPOINT> "<CMD>" |
ENV |
設置環境變量。(都可以使用這裏使用的變量)其基本格式: 格式1:ENV <key> <value> 格式2:ENV <key1>=<value1> <key2>=<value>... |
ARG |
構建參數。構建參數和ENV的效果一樣,都是設置環境變量,所不同的是ARG所構建的環境變量在將來容器運行時是不存在的。其基本格式: 格式1: ARG <參數名> [=<默認值>] 格式2: 該默認值可以在構建命令 docker build 中用 --build-arg <參數名>=<值> 來覆蓋 |
VOLUME |
定義匿名卷。 其基本格式: 格式1: VOLUME ["<路徑1>", "<路徑2>"...] 格式2: VOLUME <路徑> |
EXPOSE |
暴露端口。EXPOSE指令是聲明運行時容器所提供的端口,在啓動容器時不會在因爲這個聲明而開啓端口。 其基本格式: 格式1: EXPOSE <端口1> [<端口2>...] |
WORKDIR |
指定工作目錄。其基本格式: 格式1: WORKDIR <工作目錄路徑> |
USER |
指定當前用戶。USER是幫助你切換到指定用戶。 其基本格式: 格式1: USER <用戶名> |
HEALTCHECK |
健康檢查,判斷容器的狀態是否正常。 其基本格式: 格式1: HEALTCHECK [選項] CMD <命令> :設置檢查容器健康狀況的命令 格式2: HEALTCHECK NONE: 如果基礎鏡像有健康檢查指令,使用此格式可以屏蔽掉其健康檢查指令 |