欧洲大带宽服务器,珠海百度关键字优化,中国招聘网,互联网电商网站建设✅Dockerfile概述应用场景#xff1a;通过一个Dockerfile#xff0c;生成自定义镜像为什么要使用Dockerfile 我们目前都是手动拉取镜像#xff0c;手动进行配置#xff0c;手动安装依赖#xff0c;手动编译安装#xff0c;创建用户…手动配置步骤繁琐#xff0c;不方便重…✅Dockerfile概述应用场景通过一个Dockerfile生成自定义镜像为什么要使用Dockerfile我们目前都是手动拉取镜像手动进行配置手动安装依赖手动编译安装创建用户…手动配置步骤繁琐不方便重复执行书写Dockerfile把之前手动创建自定义镜像的过程通过Dockerfile里面的指令实现类似playbookDockerfile根据要求自动创建镜像✅常见 Dockerfile 指令说明指令说明FROM指定基础镜像比如 Python、Node.js、Ubuntu 等WORKDIR设置工作目录后续命令都在这个目录下执行VOLUME告诉使用者数据卷挂载到哪个目录COPY将本地文件复制到镜像中不支持解压ADD类似 COPY但支持解压文件等高级功能推荐优先用 COPYRUN构建镜像时执行的命令CMD容器启动时默认执行的命令可以被运行时覆盖ENTRYPOINT容器启动时执行的命令不会轻易被覆盖EXPOSE声明容器运行时监听的端口ENV设置环境变量ARG构建参数只在构建时使用✅自定义小鸟飞飞镜像准备站点代码和配置文件server{listen80;server_name bird.zhubl.xyz;root /app/code/bird/;location /{index index.html;}location ~*\.(html|js|css)${expires 1d;}location ~*\.(jpg|jpeg|bmp|gif|png)${expires max;}}书写Dockerfile文件vim Dockerfile FROM nginx:1.24 LABEL authorzhu desccustom bird image RUN mkdir -p /app/code/bird/ ADD bird.tar.gz /app/code/bird/ ADD default /etc/nginx/conf.d/ EXPOSE 80 443 CMD [nginx,g,daemon;]说明#指定基础镜像 FROM nginx:1.24 #基本信息 LABEL authorzhu desccustom bird image #对镜像进行操作执行命令 RUN mkdir -p /app/code/bird/ #添加本地文件到镜像中 ADD bird.tar.gz /app/code/bird/ ADD default /etc/nginx/conf.d/ #告诉镜像使用者映射的端口是80 443端口 EXPOSE 80 443 #入口指令运行容器后默认运行下面的命令 CMD [nginx,g,daemon;]生成镜像dockerbuild-tweb:bird_v3..表示Dockerfile在当前目录下-t表示给自定义镜像命名☀️运行容器dockerrun-d--namebird_v2-p80:80-p443:443--restartalways web:bird_v2浏览器访问http://10.0.0.81:80✅Dockerfile相关故障1️⃣dockerfile书写问题2️⃣docker run 看容器运行状态3️⃣docker logs 容器名字看logs日志4️⃣docker run -itd --name 容器名字 -p 80:80 web:bird_v2 /bin/bash替换掉CMD指定的命令5️⃣docker exec -it 容器名字 /bin/bash 进入容器执行检查类命令(nginxt -t/php-fpm -t)检查配置文件6️⃣执行nginx -g ‘daemon off;’ 看运行状态和提示✅Dockerfile变量Dockerfile使用ENV变量FROM nginx:1.24 LABELauthorzhudesccustom bird imageENVCODE_DIR/app/code/bird/ ENV CODE_NAME bird.tar.gz WORKDIR${CODE_DIR}RUNmkdir-p${CODE_DIR}ADD${CODE_NAME}${CODE_DIR}ADD default.conf /etc/nginx/conf.d/ EXPOSE80443CMD[nginx,-g,daemon off;]生成镜像dockerbuild-tweb:bird_v3.进入容器时自动到工作目录dockerexec-itbird_v3 /bin/bash✅面试题CMD,ENTRYPOINT区别1️⃣CMD或ENTRYPOINT 二选一选择1个使用2️⃣CMD和ENTRYPOINT 一起使用CMD和ENTRYPOINT区别共同点区别CMD运行容器的时候默认运行CMD或ENTRYPOINT后面的命令运行容器的时候如果指定了命令则CMD的内容就会被替换ENTRYPOINT运行容器的时候默认运行CMD或ENTRYPOINT后面的命令运行容器的时候如果指定了命令则entrypoint指定的命令自定义镜像 FROM test:1.1 CMDls运行容器dockerrun-dtest:1.1sleep99CMD指定的ls命令就会被替换为sleep99sleep99自定义镜像 FROM test:1.1 ENTRYPOINTls运行容器dockerrun-dtest:1.1sleep99ENTRYPOINT指定的ls命令添加sleep99参数lssleep99同时使用ENTRYPOINT和CMDCMD写的内容作为ENTRYPOINT内容的选项参数FROM nginx:1.24 ENTRYPOINT [nginx] CMD [-g,daemon off;]✅自定义zrlog镜像war包自定义镜像方案01系统镜像jdktomcat自定义镜像方案02tomcat镜像war包1️⃣编写Dockerfile文件FROM tomcat:9.0-jdk8 LABEL authzhu desczrlog docker image ENV CODE_NAME ROOT.war WORKDIR /usr/local/tomcat/webapps/ ADD ${CODE_NAME} . EXPOSE 8080 CMD [catalina.sh, run] # 监控业务是否正常 HEALTHCHECK --interval5s --timeout20s --retries2 CMD curl 127.0.0.1:80802️⃣生成zrlog镜像dockerbuild-tweb:zrlog_v1.3️⃣运行zrlogdockerrun-d--namezrlog-p8080:8080--restartalways web:zrlog_v14️⃣浏览器访问http://10.0.0.81:8080