当前位置: 首页 > news >正文

dockerfile示例

dockerfile使用注意准则

1.CMD指令

CMD指定在 Dockerfile中只能使用一次,如果有多个,则只有最后一个会生效。

CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。

CMD会在启动容器的时候执行,build 时不执行,而RUN只是在构建镜像的时候执行,后续镜像构建完成之后,启动容器就与RUN无关了

2.启动容器并启动bash(交互方式):

$docker runi-t /bin/bash

表示当前用户使用的shel1是/bin/bash,所谓的she1l你可以理解为操作系统和人之间交互的平台

3.前台运行

CMD指令就是用于指定默认的容器主进程的启动命令的。Docker 不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样,用 upstart/systemd 去启动后台服务,容器内没有后台服务

为什么要这么做呢?因为Docker容器仅在它的1号进程(PID为1)运行时,会保持运行。如果1号进程退出了,Docker容器也就退出了。

4.将多个RUN指令合并为一个

Docker镜像是分层的,Dockerfile中的每个指令都会创建一个新的镜像层。

5.设置默认的环境变量,映射端口和数据

ENV MEDIA DIR=/media \

NODE ENV=production \

APP PORT=3000

VOLUME SMEDIA DIR

EXPOSE SAPP PORT

6.ADD和ICOPY

虽然ADD和COPY功能相似,但一般来讲,更建议使用COPY。因为COPY比ADD更透明,COPY只支持从本地文件到容器的拷贝

ADD的最优用处是本地tar包自动解压缩到镜像中

任务:

方法一:

mkdir tomcat cd tomcat/ docker images

我们先把已有的先干掉

docker rm -f `docker ps -aq`

给容器起个名字叫做c1

docker run -it --name c1 rockylinux:8 /bin/bash

先把jdk传到rocky-8.10-1里

然后把jdk传到192.168.6.11:/root/tomcat

然后把jdk拷到容器c1底下,比如说是opt底下

进入容器

rpm -ivh /opt/jdk-8u202-linux-x64.rpm

因为有依赖所以报错了

那就换另一种

yum install /opt/jdk-8u202-linux-x64.rpm

在容器里

在外面下载

应该在容器里这样写

拷进容器里面

解压

启动

提交一下

看下是不是在运行中

用这个给提起来

把这个删了换一种方式

看一下日志,启动起来了,但好像端口映射好像没有

要加一个监控他的日志

还是有问题

用另一种方法吧

然后进到里面去

方法二:dockerfile的方式做

vim Dockerfile

在后台运行

docker run -d --name c3 -p 8888:8080 tomcat:v2

还是没起来

看下日志是什么原因

内存溢出,通过查找资料发现由于文件描述符不够导致的

这样加参数就好了

http://www.dtcms.com/a/330731.html

相关文章:

  • 【论文阅读-Part1】PIKE-RAG: sPecIalized KnowledgE and Rationale Augmented Generation
  • ACCESS SQL句子最长是多少个字符?
  • 机器学习-支持向量机器(SVM)
  • 如何查看SQL Server的当前端口
  • mysql 提示符及快捷执行
  • 苹果新专利曝光-或将实现六面玻璃外壳 iPhone
  • GO学习记录五——数据库表的增删改查
  • DataHub IoT Gateway:工业现场设备与云端平台安全互联的高效解决方案
  • DataHub OPC Gateway:实现OPC UA与OPC DA无缝集成的高性能网关
  • 解密Redis速度神话:从I/O多路复用到零拷贝
  • MySQL工具包中的其他程序
  • uniapp自定义封装支付密码组件(vue3)
  • RK3506开发板PWM输入捕获驱动调试记录
  • 网络通信全过程:sk_buff的关键作用
  • 算法基础 第3章 数据结构
  • DBSCAN 算法的原理
  • 使用DevEco Studio运行鸿蒙项目,屏蔽控制台无关日志,过滤需要的日志
  • 鸿蒙NEXT如何通过userAgent区分手机端和pc端
  • uni.setStorage 详解
  • MySQL客户端命令
  • pygame的帧处理中,涉及键盘的有`pg.event.get()`与`pg.key.get_pressed()` ,二者有什么区别与联系?
  • LT3045EDD#TRPBF ADI亚德诺 超低噪声LDO稳压器 电子元器件IC
  • Trae x Figma MCP一键将设计稿转化为精美网页
  • Docker build创建镜像命令入门教程
  • Redis (REmote DIctionary Server) 高性能数据库
  • 【cmake】编译cpp文件,安装MinGW
  • 《Leetcode》-面试题-hot100-动态规划
  • 《嵌入式 C 语言编码规范个人笔记》参考华为C语言规范标准
  • 标贝科技「十万音色·自然语音数据集」 重构AI语音训练基础设施
  • 机器视觉之图像处理篇