DockerfileDocker可以通過讀取Dockerfile中的指令自動構(gòu)建image。 Dockerfile是一個文本文檔,文檔中包含用戶可以在命令行上調(diào)用以構(gòu)建image的所有命令。 使用docker build 命令用戶可以創(chuàng)建一個連續(xù)執(zhí)行多個命令行指令的自動構(gòu)建程序。
使用docker build Path命令根據(jù)Dockerfile來構(gòu)建一個鏡像, Path可以是磁盤上的文件夾或是git倉庫 命令FROM 指定基礎(chǔ)鏡像,必須是第一行非注釋指令
MAINTAINER 指定鏡像的作者信息
RUN 指定鏡像中運行的指令, 例如: 你想要構(gòu)建你的django應(yīng)用,那么你在django中所有使用的模塊,應(yīng)當(dāng)在鏡像構(gòu)建時裝載,所以此時應(yīng)使用 RUN pip install -r requirements.txt
EXPOSE 指定一個或多個端口 但是同樣需要在RUN命令需要指定端口的映射
CMD 指定容器運行中的默認(rèn)命令, docker run指令會將其覆蓋 容器運行時執(zhí)行舉例: 當(dāng)容器運行時你應(yīng)當(dāng)啟動你的django程序,此時應(yīng)使用: CMD python manage.py runserver 0.0.0.0:8000
ENTRYPOINT 與CMD類似但是不會被docker run 時指定的命令覆蓋, 如果想覆蓋需要添加指令
ADD 將文件或目錄復(fù)制到Dockerfile創(chuàng)建的鏡像中 包含類似的解壓功能
COPY 將文件或目錄復(fù)制到Dockerfile創(chuàng)建的鏡像中 單純的復(fù)制文件
VOLUME 掛載,大家知道容器有隔離的作用,你可以把系統(tǒng)和容器想象為兩個互不干擾的環(huán)境,那么我們要想要將兩個環(huán)境中的某一個文件進(jìn)行共通,那么就用到此命令 VOLUME /opt/logs /var/logs 上面命令表示將系統(tǒng)的/opt/logs文件夾掛載到容器內(nèi)的/var/logs文件夾上,這就意味在系統(tǒng)/opt/logs的文件夾發(fā)生改變,相應(yīng)的容器內(nèi)的/var/logs文件夾立即會讀取到發(fā)生的變化;反之亦然
WORKDIR 在容器內(nèi)部創(chuàng)建工作目錄, 絕對目錄,我們在容器內(nèi)的文件路徑就都可以依照此處的WORKDIR來使用相對路徑
ENV 設(shè)置環(huán)境變量
USER 指定運行鏡像的用戶身份
ONBUILD 為鏡像添加觸發(fā)器,當(dāng)被用于子鏡像時,將會觸發(fā)
shell和exec模式 RUN CMD ENTRYPOINT都支持這兩種命令模式
shell模式 RUN /bin/bash -c 'echo $HOME' exec模式 RUN ["/bin/bash", "-c", "echo hello"]
e.g: FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD python manage.py runserver 0.0.0.0:8000
docker build .
基礎(chǔ)鏡像使用python,tag為3
設(shè)置環(huán)境變量PYTHONUNBUFFERED值為1
執(zhí)行命令: mkdir /code
將容器內(nèi)的/code目錄設(shè)置為工作目錄
將當(dāng)前目錄下的requirements.txt文件拷貝到容器內(nèi)的/code下
執(zhí)行命令: pip install -r requirements.txt
將當(dāng)前目錄下的所有文件拷貝到容器內(nèi)的/code下
docker run image
執(zhí)行命令: python manage.py runserver 0.0.0.0:8000 docker build Path 來源:https://www./content-4-454301.html
|