当前位置:   article > 正文

Dockerfile的使用_dockerfile怎么运行

dockerfile怎么运行

Dockerfile是一个用来构建镜像的文本文件,包含了一条条构建镜像所需的指令和说明

1. 基本语法

1)FROM:指定基础镜像

语法:FROM <image>或者FROM <image>:<tag>

示例:

FROM ubuntu:18.04

第一条指令必须为FROM指令。并且,如果同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令

2)RUN:想在制作过程中运行哪些命令,在命令前面加上RUN即可

语法:RUN或者RUN ["executable","param1","param2"]

前者将在 终端中运行 ,即/bin/sh -c;后者使用exec执行。每条RUN指令将在当前镜像基础上执行指令 ,并提交为新的镜像。当命令较长时,可以使用\来换行。

示例:

RUN mkdir -p ~/.pip/

3)CMD:指定容器启动时执行的命令

语法:

支持三种格式:

CMD ["executable","param1","param2"] #使用exec执行,推荐的方式 CMD command param1 param2 #在/bin/sh中执行,提供给需要交互的应用 CMD ["param1","param2"] #提供给ENTRYPOINT的默认参数

指定启动窗口时执行的命令,每个Dockerfile只能有一条CMD命令。如果指定了多条,只有最后一条会被执行。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。

示例:

CMD ["daphne","-b","0.0.0.0","-p","8000","Django_project.asgi:application"]

4) ENV:指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持

示例:

ENV DEBIAN_FRONTEND noninteractive  #静默安装

5)ADD:COPY文件,会自动解压,该命令将复制指定的文件到容器中。可以是Dockerfile所在目录的一个相对路径,一个url,也可以是一个tar文件(自动解压为目录)。ADD是增强版的COPY。

示例:

ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo

6)COPY:与ADD类似,复制本地主机的到容器中,目标路径不存在时,会自动创建。如果不需要解压,优先使用COPY命令,效率更高,更节约资源。

7)WORKDIR:设置当前工作目录

为后续的RUN、CMD等指令配置容器中的工作目录。可以使用多个WORKDIR指令。

示例:

  1. WORKDIR /app
  2. COPY . .

2. 使用Dockerfile编译镜像

  1. cd path/to/Dockerfile # 切换到dockerfile所在路径
  2. docker build -t harbor.company.com/repo1/dev:tag . # harbor.company.com为harbor平台,repo1为harbor仓库名,这样编译好的镜像可以直接推送到harbor仓库
  3. docker push harbor.company.com/repo1/dev:tag # 推送镜像

3. Dockerfile示例

  1. FROM ubuntu:18.04
  2. # updata apt source to tuna source
  3. RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list && \
  4. echo "deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list && \
  5. echo "deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
  6. echo "deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list && \
  7. echo "deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
  8. # Update pip source to tuna
  9. RUN mkdir -p ~/.pip/ && \
  10. echo "[global]" > ~/.pip/pip.conf && \
  11. echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> ~/.pip/pip.conf && \
  12. echo "[install]" >> ~/.pip/pip.conf && \
  13. echo "trusted-host = https://pypi.tuna.tsinghua.edu.cn" >> ~/.pip/pip.conf
  14. # configure timezone
  15. #RUN echo Asia/Shanghai > /etc/timezone
  16. RUN apt update \
  17. && DEBIAN_FRONTEND=noninteractive apt install -y tzdata --no-install-recommends \
  18. && echo "Asia/Shanghai" > /etc/timezone \
  19. && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  20. && dpkg-reconfigure -f noninteractive tzdata
  21. # install
  22. RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
  23. git make=4.2.1-1.2 g++=4:9.3.0-1ubuntu2 file python3.8 bison=2:3.5.1+dfsg-1 flex=2.6.4-6.2 openssl \
  24. libssl-dev bc=1.07.1-2build1 libarchive-zip-perl=1.67-2 \
  25. bsdmainutils=11.1.2ubuntu3 wget=1.20.3-1ubuntu2 cpio=2.13+dfsg-2ubuntu0.3 \
  26. unzip=6.0-25ubuntu1.1 rsync=3.1.3-8ubuntu0.5 patch=2.7.6-6 device-tree-compiler=1.5.1-1 && \
  27. ln -s /usr/bin/python3.8 /usr/bin/python3 && \
  28. apt clean

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/58138?site
推荐阅读
相关标签
  

闽ICP备14008679号