【docker】Dockerfile

【docker】Dockerfile

转载:

=============================================================

=============================================================

命令

ARG 定义创建镜像过程中使用的变量
    ARG <name>[=<defaul value>] 在执行docker build时,可以通过-build-arg[=]来为变量赋值
FROM 指定所创建镜像的基础镜像
    FROM <image> [AS <name>]
    FROM <image>:<tag> [AS <name>]
    FROM <image>@<digest> [AS <name>]
LABEL 为生成的镜像添加元数据标签信息
    LABEL <key>=<value> <key>=<value> <key>=<value>
EXPOSE 声明镜像内服务监听的端口
    EXPOSE <port> [<port>/<protocol>...]
ENV 指定环境变抵
    ENV <key> <value>
ENTRYPOINT 指定镜像的默认入口命令
    ENTRYPOINT ["executable", "param1 ", "param2"]: exec 调用执行
    ENTRYPOINT command param1 param2: shell 中执行
VOLUME 创建一个数据卷挂载点
    VOLUME ["/data"]
USER 指定运行容器时的用户名或UID
    USER daemon
WORKDIR 配置工作目录
    WORKDIR /path
ONBUILD 创建子镜像时指定自动执行的操作指令
STOPSIGNAL 指定退出的信号值
HEALTHCHECK 配置所启动容器如何进行健康检查
SHELL 指定默认shell类型
    SHELL [” executable”,”parameters ”]默认值为["/bin/sh","-c"]
RUN 运行指定命令
    RUN <command>
    RUN ["executable","param1","param2"]
CMD 启动容器时指定默认执行的命令
    CMD ["executable","param1","param2"]
    CMD command paraml param2
    CMD ["param1","param2"]
ADD 添加内容到镜像
    ADD <src> <dest>
COPY 复制内容到镜像
    COPY <src> <dest>

拉去官方 java8 镜像

docker pull java:8

方式一

打包 spring boot 应用

编辑 Dockerfile

FROM java:8
LABEL maintainer ycx
VOLUME /tmp
ADD demo-service-0.0.1.jar demo.jar
RUN sh -c 'touch /demo.jar'
EXPOSE 9900
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar" ]

加了 EXPOSE 9900 后 -P 才能随机分配端口

FROM java:8
LABEL author=ycx
VOLUME /tmp
RUN mkdir /ycx
COPY demo-service-0.0.1.jar /ycx/demo.jar
EXPOSE 9900
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/ycx/demo.jar"]

命令格式

docker build [options] path

使用.当前目录的 Dockerfile 创建镜像,标签为 ycx/demo:1

docker build -t ycx/demo:1 .

也可指定文件

docker build -t ycx/demo:1 -f /ycx/Dockerfile .
docker run -d -p 0.0.0.0::9900 --name demo demo-service

方式二

原文地址:https://www.cnblogs.com/yangchongxing/p/11491259.html