赞
踩
/usr/local/docker
# Jar 包
/usr/local/docker/app.jar
# 配置文件
/usr/local/docker/config/application.yml
FROM openjdk:8-jre # 将 jar 包添加到容器中 , tar 类型文件会自动解压(网络压缩资源不会被解压) , 可以访问网络资源 , 类似 wget ADD app.jar /usr/local/app.jar # 功能和 ADD 相同 , 不会自动解压文件 , 也不能访问网络资源 # COPY ./config/ /usr/local/config # 配置环境变量 # ENV JAVA_HOME=/usr/local/java/jdk-8 # ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # ENV PATH=$JAVA_HOME/bin:$PATH # 切换工作目录 , 相当于 cd WORKDIR /usr/local # 映射端口 EXPOSE 80 # ENTRYPOINT 或 CMD 只会执行一次 , 会覆盖之前的 ENTRYPOINT 或 CMD 命令 ENTRYPOINT ["java" , "-jar" , "app.jar"]
docker build -t app:1.0 .
docker run --name app -p 80:80 -v ./config/:/usr/local/config -d app:1.0
需求:想追加一个命令 -l
, 期望执行 ls -al
docker run 会覆盖 CMD 后面的命令
FROM centos
CMD ["ls","-a"]
此时命令在 docker 启动后自己执行, 我们可以在命令行启动 docker 镜像时, 执行其他命令行参数, 覆盖默认的 CMD
$ docker run demo -l
此时会报错 , '-l' 替换了 'ls -a' 命令 , 没有这个命令导致报错
docker run 不会覆盖 entrypoint 后面的命令,需要使用 --entrypoint
命令覆盖
$ docker run --entrypoint demo -l
此时会报错 , '-l' 替换了 'ls -a' 命令 , 没有这个命令导致报错
$ docker run demo -l
成功执行命令 'ls -al'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。