Dockerfile常用指令
- FROM: 繼承基礎鏡像
- MAINTAINER:鏡像制作作者資訊
- RUN: 用來執行shell指令
- EXPOSE: 暴露端口号
- CMD: 啟動容器預設執行的指令,會被覆寫
- ENTRYPOINT: 啟動容器真正執行的指令,不會被覆寫
- VOLUME:建立該挂載點
- ENV: 配置環境變量
- ADD: 複制檔案到容器,一般拷貝檔案,壓縮包自動解壓
- COPY:複制檔案到容器,一般可拷貝目錄
- WORKDIR:設定容器的工作目錄
- USER:容器使用的使用者
接下來,列舉幾個Dockerfile的執行個體。
Dockerfile執行個體
1.使用RUN建立一個使用者
Dockerfile檔案内容如下所示。
FROM centos:6
MAINTAINER binghe
RUN useradd binghe
執行建構,如下所示。
docker build -t centos:user .
2.使用ENV定義環境變量并用CMD執行指令
FROM centos:6
MAINTAINER binghe
RUN useradd binghe
RUN mkdir binghe
ENV envir=test version=1.0
CMD echo "envir:$envir version:$version"
執行建構并啟動測試:
#執行建構
docker build -t centos:evn-cmd .
#啟動鏡像驗證EVN和CMD
docker run centos:env-cmd
3.使用ADD添加一個壓縮包,使用WORKDIR改變工作目錄
FROM nginx
MAINTAINER binghe
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html
4.使用COPY拷貝目錄
使用COPY拷貝指定目錄下的所有檔案到容器,不包括本級目錄。此時隻會拷貝webroot下的所有檔案,不會将webroot拷貝過去:
FROM nginx
MAINTAINER binghe
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html
COPY webroot/ .
5.設定啟動容器的使用者
設定啟動容器的使用者,在生産環境中一般不建議使用root使用者啟動容器,是以,可以根據公司業務場景自定義啟動容器的使用者:
FROM centos:6
MAINTAINER binghe
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html
COPY webroot/ .
RUN useradd -m tomcat -u 1001
USER 1001
6.使用VOLUME建立容器可挂載點
FROM centos:6
MAINTAINER binghe
VOLUME /data
挂載目錄到/data,注意:對于主控端路徑,要寫絕對路徑:
docker run -ti --rm -v `pwd` /web:/data centos:volume bash