一 DockerFile命令
1.FROM指令
DockerFile第一条必须为From指令,指定基础镜像
2.MAINTAINER
指定维护者信息
3.RUN
每条run指令在当前基础镜像执行,并且提交新镜像
4.CMD
每个容器只能执行一条CMD命令,多个CMD命令时,只最后一条被执行
5.EXPOSE
暴露镜像的端口到宿主机上,例:EXPOSE 22 80
6.ENV
指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持
7.ADD
复制宿主机上指定的文件到容器中指定的目录中 。 其中 可以是Dockerfile所在目录的一个相对路径,还可以是一个tar文件(自动解压为目录)
8.COPY
复制宿主机上的文件到容器中的指定目录下
9.ENTRYPOINT
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖
每个Dockerfile中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效
10.VOLUME
格式为 VOLUME [“/data”]
创建一个可以从宿主机挂载的挂载点
11.USER
格式为 USER username
指定运行容器时的用户名或UID,后续的 RUN 也会使用指定用户
当服务不需要管理员权限时,可以通过该命令指定运行用户
12.WORKDIR
格式为 WORKDIR /path/to/workdir
为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录(类似linux的cd)。
可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径
通过Docker Build 创建镜像
-t 可以指定生成镜像的标签,/root/dockerfile为Dockerfile所在的目录
docker build -t 10.243.16.17:5000/centos7.2tomcat:7.8 /root/dockerfile
二 Dockerfile配置解释
# 设置基础镜像
FROM simon/java8:1.0
# 配置容器和宿主机的映射文件夹(docker run中使用 -v 命令类似同样效果)
VOLUME /tmp
# 拷贝宿主机当前Dockerfile文件同级目录的文件及文件夹到容器/usr/local/xy_pay_risk目录
COPY . /usr/local/xy_pay_risk
# 定义变量(docker run中使用 -e 命令可以传参数到Dockerfile里)
ENV JAVA_OPTS=""
ENV ACTIVE=""
# 选择容器内的当前路径 /usr/local/xy_pay_risk
WORKDIR /usr/local/xy_pay_risk
# 启动java程序 后面跟着exec 则后面跟着的java进程的pid=1
ENTRYPOINT exec java ${JAVA_OPTS} -jar /usr/local/xy_pay_risk/xy-pay-risk.jar --spring.profiles.active=${ACTIVE}
三 使用镜像启动容器
#运行命令(映射/usr/local/xy_pay_main整个文件夹) -e(可以传参到Dockerfile里) -v(映射容器与宿主机类似 VOLUME) -d(使用镜像的名字)
#docker run -p 8099:8099 --name xy_pay_risk
#-e JAVA_OPTS='-server -Xmx512m -Xms512m'
#-e ACTIVE="test"
#-v /usr/local/xy_pay_risk:/usr/local/xy_pay_risk
#-v /usr/local/xy_pay_risk/tmp:/tmp
#-d xy-pay-risk:1
#运行命令(只映射几个想要的文件)
#docker run -p 8099:8099 --name xy_pay_risk
#-e JAVA_OPTS='-server -Xmx512m -Xms512m'
#-e ACTIVE="test"
#-v /usr/local/xy_pay_risk/logs:/usr/local/xy_pay_risk/logs
#-v /usr/local/xy_pay_risk/tmp:/tmp
#-d xy-pay-risk:1