FROM centos:centos7RUN ["yum", "install", "-y", "vim"]# 仅仅声明该服务使用的端口EXPOSE 8081ENV BASE_PATH=/apps/dataWORKDIR $BASE_PATHADD test.txt .ADD apache-tomcat-10.0.16.tar.gz .RUN mv apache-tomcat-10.0.16 tomcat-10.0.16WORKDIR tomcat-10.0.16COPY test.txt .WORKDIR $BASE_PATH# 仅仅声明,告诉使用者容器可以挂载这个目录到宿主机中VOLUME $BASE_PATHENTRYPOINT ["ls"]CMD ["/apps/data"]
CMD 和 ENTRYPOINT
- CMD 和 ENTRYPOINT作用
作用:都用来指定容器启动时默认执行命令
注意:CMD指令可以存在多个,但是存在多个只有最后一个生效
- 使用语法
1)直接使用命令
java -jar xxx.jar
2)json数组方式
[“java”, “-jar”, “xxx.jar”]
- 区别是什么
1)当容器使用CMD命令,运行容器时覆盖命令的方式
docker run 镜像:版本号 覆盖自定义命令 ls /
docker run mycentos:05 ls /
2)entrypoint里面命令如何在运行容器时进行覆盖
docker run —entrypoint=覆盖命令 镜像:版本号 传递参数
docker run —entrypoint=ls mycentos:03 /
- 如何使用
docker-compose
# 代表使用docker-compose项目的版本号,版本选择和docker引擎相关,详情:https://docs.docker.com/compose/compose-file/compose-file-v3/version: "3.8"services:mytomcat01:image: tomcat:8.0.53ports:- 8080:8080mytomcat02:image: tomcat:8.0.53ports:- 8081:8080myredis01:image: redis:6.2.2ports:- "6379:6379"mysql:image: mysql:5.6ports:- "3306:3306"environment:#- MYSQL_ROOT_PASSWORD: root- "MYSQL_ROOT_PASSWORD=root"volumes:#- /root/mysqldata1:/var/lib/mysql- mysqlData:/var/lib/mysqlvolumes:mysqlData: #生命数据卷别名
