使用dockerfile构建自己的镜像

简介: 使用dockerfile构建自己的镜像

一、什么是dockerfile


1.Dockerfile是Image镜像的描述文件
2.dockerfile内容详解
```
#利用FROM命令设置基准镜像
FROM tomcat:latest
#cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
#ADD用于复制本地文件到镜像中
ADD docker-web ./docker-web
```
  它的作用是对我们的镜像进行描述,描述我们的镜像到底要做哪些工作,在这个文件中它书写了一系列的指令,通过这些指令docker就知道我们如果要安装一个tomcat,需要哪几步,安装 一个redis需要哪几步,这非常像我们linux中的shell脚本或者是windows中的bat。


二、Dockerfile基础指令


1.from-基于基准镜像
    from  centos #制作基准镜像
    from  scratch  #不依赖任何基准镜像 base image
    from tomcat: 9.0.22-jdk8-openjdk
    尽量使用官方提供的Base Image
2.label-说明信息(注释)
    label  maintainner='caiweiwei'
    label  version='10'
    label description='caiweiwei应用'
3.workdir-设置工作目录
      workdir /usr/local
      workdir /usr/local/caiweiwei  #自动创建
      尽量使用绝对路径
4.add & copy-复制文件
      add hell /  #复制到根路径
      add test.tar.gz / #添加根目录并解压
       add除了复制,还具备添加远程文件功能
  5.env-设置环境常量
        env java_home /usr/local/openjdk8
        run${java_home}/bin/java -jar test.jar
        尽量使用环境常量,可提高程序维护性
6.expose -暴露容器端口
        expose 8080
        expose 3306
        将容器内部端口暴露给物理机


三、Dockerfile运行指令


1.RUN :在build构建时执行命令
    run yum install -y vim  #Shell命令格式
    run["yum","install","-y","vim"] #Exec命令格式
2.entrypoint: 容器启动时执行的命令
    entrypoint(入口点)用于容器启动时执行命令
    dockerfile中只有最后一个entryfile会被执行
    entrypoint["ps"] #推荐使用Exec格式
3.cmd: 容器启动后执行默认的命令或参数
    cmd用于设置默认执行的命令
    如果dockerfile中出现多个cmd,则只有最后一个被执行
    如容器启动是附加指令,则cmd被忽略
    cmd["ps","-ef"]  #推荐使用Exec格式



相关文章
|
存储 负载均衡 Cloud Native
gRPC的原理和实践
gRPC的原理和实践
1166 1
gRPC的原理和实践
|
机器学习/深度学习 存储 算法
神经网络中的量化与蒸馏
本文将深入研究深度学习中精简模型的技术:量化和蒸馏
449 0
|
JSON Shell Linux
docker-registry 私有仓库镜像 之 查看与删除
docker-registry 私有仓库镜像 之 查看与删除
3644 0
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
316 10
|
自然语言处理 Kubernetes 异构计算
推理降本与提升资源效率的实践
本课程从业务角度探讨大模型推理部署及资源利用率提升。首先分析大模型与GPU发展趋势,包括模型开源、规模增长及多模态能力增强;其次介绍高效部署大模型推理业务的步骤,涵盖业务场景选择、架构优化及显存规划;接着讲解如何通过DeepCPU-LLM框架和DeepNCCL通讯库优化推理效率;最后探讨通过KuberGPU实现细粒度GPU资源管理,提升整体资源利用率,降低推理成本。
|
存储 C++ 索引
【C++打怪之路Lv9】-- vector
【C++打怪之路Lv9】-- vector
338 1
|
数据可视化 数据处理 开发者
构建高效的数据流图:Python与PyGraphviz的实践
【9月更文挑战第13天】在本文中,我们将探索如何利用Python和PyGraphviz库来创建和操作数据流图。我们将通过一个具体示例,展示如何从零开始构建一张数据流图,并讨论如何优化图表以提高可读性。文章旨在为初学者提供一个清晰的入门指南,同时为有经验的开发者提供一些高级技巧。
|
分布式计算 Kubernetes Spark
大数据之spark on k8s
大数据之spark on k8s
851 2
|
机器人 API 开发工具
替代微信ipad协议
替代微信ipad协议

热门文章

最新文章