一、特点
-
文件名不能改。
-
用来构建镜像的宿主机端文本文件,会将相对路径下所有文件打包。
-
每一次RUN都会在docker上新建一层,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。
二、常用命令
FROM:基于基础镜像。
RUN:等同于,在终端操作的 shell 命令。
COPY:从上下文目录中复制文件或者目录到容器里指定路径。
# [--chown=<user>:<group>]:可选参数,用户改变复制到容器内文件的拥有者和属组。路径不存在则自动创建。
COPY [--chown=<user>:<group>] <源路径1>... <目标路径>
CMD:类似于 RUN 指令,用于运行程序。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
- CMD 在docker run 时运行。
- RUN 是在 docker build。
# 多个 CMD 指令,仅最后一个生效。
CMD ["<可执行文件或命令>","<param1>","<param2>",...]
ENTRYPOINT:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖。
ENTRYPOINT ["executable", "param1", "param2"]
# 多个 ENTRYPOINT 指令,仅最后一个生效。
FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参
EXPOSE:声明端口。
ENV:设置环境变量。
VOLUME:设置容器与外界映射的目录。
三、脚本
vi Dockerfile
-
制作nginx镜像
FROM centos7 # 维护者 MAINTAINER adam COPY /home/adam/jdk1.8.0_191 /opt/jdk1.8.0_191 ADD websocket.jar app.jar ENV JAVA_HOME=/opt/jdk1.8.0_191 ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar EXPOSE 8080 # ENTRYPOINT ["executable", "param1", "param2"] ENTRYPOINT ["java","-jar","/jenkins.war"]
四、构建
docker build -t nginx:test -f /Users/wangfugui/Downloads/soft/cbei_isp/Dockerfile/Dockerfile .
- -f:指定Dockerfile路径
- -t:指定name:tag
本文介绍Dockerfile的特点及使用方法,包括如何通过不同命令构建镜像,并提供了一个具体的nginx镜像构建实例。
763

被折叠的 条评论
为什么被折叠?



