Docker-Dockerfile

本文介绍Dockerfile的特点及使用方法,包括如何通过不同命令构建镜像,并提供了一个具体的nginx镜像构建实例。

一、特点

  • 文件名不能改。

  • 用来构建镜像的宿主机端文本文件,会将相对路径下所有文件打包。

  • 每一次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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值