编写Dockerfile
命令
FROM (指定基础image)
FROM <image>:<tag>
例:FROM ubuntu:14.04
MAINTAINER (指定image创建者信息)
MAINTAINER <name>
例:MAINTAINER bbman
RUN (在创建image时会运行的指令,可以写多条)
RUN <command>
例:如果基础image是ubuntu,需要安装maven时命令为,RUN apt-get install maven -y
ADD (向容器内添加文件或目录)
ADD <src> <dst>
例:ADD src/ /app/src/
CMD (启动容器后默认执行的命令,会被docker命令行传入的参数覆盖,最后一个生效)
CMD ["executable", "param1", "param2"]
CMD command param1 param2
例:CMD [“/bin/echo”, “this is a echo test ”]
ENTRYPOINT (与CMD类似,如果CMD 传入的参数里,没有可执行文件,则这些参数就作为entrypoint的参数,
如果传入的参数里,包含可执行文件,则entrypoint 不执行)
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2
WORKDIR (设置RUN,CMD, ENTRYPOINT命令的工作路径)
WORKDIR /path/to/work/dir
EXPOSE (指定对外开放的端口)
EXPOSE <port> [<port>...]
例:EXPOSE 80 3306
开放 80 与 3306 端口VOLUME (使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器使用)
VOLUME <mountpoint>
例:VOLUME ["/tmp/data"]
EVN (设置环境变量)
EVN <key> <value>
一个将spring-boot 打包为 image 的示例
链接
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]