天天看點

這次不鴿了,五一假期冰河為你整理了這些Dockerfile基礎知識,拿走不謝!!

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