赞
踩
我们在使用Dockerfile构建镜像的时候需要搞清楚DockerFile中常用的指令有哪些
From: - 说明:指定该镜像的基础镜像 - 格式:FROM <image>或FROM <image>:<tag> - 示例:FROM python:3.8 - 注意:FROM一般出现在文件头,因为每个镜像都需要有一个FROM来指定基础镜像。 MAINTAINER: - 说明:用以指定作者信息 - 格式:MAINTAINER <name> - 示例:MAINTAINER jibu "455636959@qq.com" WORKDIR: - 说明:设置工作目录 - 格式:WORKDIR /path - 示例:WORKDIR /app - 注意:可以使用绝对路径,也可以使用相对路径,设置后会自动切换到该目录下以后所有操作都将在这个目录下完成,一般会设置/app目录 RUN: - 说明:在构建镜像时执行脚本 - 实例:RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ ENTRYPOINT: - 说明:在运行容器时执行脚本 - 格式如:ENTRYPOINT ["exec", "comm1", "comm2"]、ENTRYPOINT command comm1 comm2 - 示例:ENTRYPOINT ["test.sh", "run"] - 注意:一个Dockerfile中只有一条ENTRYPOINT,如果有多条只执行最后一条;不会被容器运行时的命令所覆盖 CMD: - 说明:在运行容器时执行脚本 - 示例:CMD ["cd"] - 注意:一个Dockerfile中只有一条CMD,如果有多条只执行最后一条;在运行容器时如果用户指定了运行命令则Dockerfile中的CMD将被覆盖。 EXPOSE: - 说明:让Docker暴露容器的端口号,供其他容器使用,在宿主机以外的网络中是无法使用的 - 格式如:EXPOSE <port> ... - 示例:EXPOSE 8000 ENV: - 说明:指定环境变量,在Dockerfile文件中的后续代码中使用,在容器运行时也可以使用 - 格式如:ENV <key> <value> - 示例:ENV PYTHONUNBUFFERED 1 ADD: - 说明:复制文件(夹)到容器 - 格式如:COPY <src> <goal> - 示例:COPY test.jar /test.jar 宿主机 /容器 - 注意:复制指定的<src>到容器中的<dest>,<src>可以是Dockerfile所在目录的一个相对路径,也可以是一个URL,也可以是一个tar文件(tar文件将自动解压成文件目录) COPY: - 说明:复制文件(夹)到容器 - 格式如:COPY <src> <goal> - 示例:COPY requirements.txt requirements.txt - 注意:与ADD功能相似,只是不能指定URL,使用本地文件(夹)为源文件时,推荐使用COPY VOLUME: - 说明:创建挂载点 - 格式如:VOLUME [path] - 示例:volumes: "/home/lx/user_upload:/home/lx/user_upload" - 作用:就是将宿主机和容器的路径做一个映射,这样同意的目录下存的文件或文件夹相同
总结:
RUN、CMD、ENTRYPOINT三个指令的区别
1. 三个指令都是执行脚本
2. RUN是在创建镜像是执行,即使用docker build命令时执行,在一个Dockerfile里面可以有多个RUN
3. CMD和ENTRYPOINT是在运行容器时执行,即使用docker run命令时执行,这两个指令在Dockerfile中都只有最行一条被执行
4. CMD在使用docker run时可以加参数将Dockerfile中的CMD覆盖
5. ENTRYPOINT在Dockerfile中出现后就一定会在docker run时被执行,不必担心会被其他参数所覆盖。
ADD、COPY复制文件(夹)到容器
1. ADD复制文件(夹)时可以指定本地文件、远程URL地址,如果复制的是tar文件时将会被自动解压成文件夹
2. COPY复制文件(夹)时不可以指定远程URL地址,拷贝tar文件也不会被自动解压成文件夹,在复制本地文件时建议使用COPY
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。