首页 > 其他分享 >Dockerfile 详解

Dockerfile 详解

时间:2024-09-03 18:25:08浏览次数:12  
标签:容器 例如 CMD 详解 指令 镜像 Dockerfile

Dockerfile 是一个用于定义 Docker 镜像构建过程的文本文件。它包含了一系列的指令,这些指令描述了如何从基础镜像创建一个新的镜像。Docker 使用这些指令自动化地构建镜像,并且可以确保创建出的镜像是一致的、可重复的。

Dockerfile 的常用指令

  1. FROM
  • 指定基础镜像。例如:

    FROM ubuntu:20.04
    
  • 每个 Dockerfile 必须以 FROM 指令开头,指定基础镜像。

  1. RUN
  • 在镜像内运行命令。常用于安装软件包或修改系统状态。例如

    RUN apt-get update && apt-get install -y nginx
    
  • RUN 指令会创建一个新的镜像层。

  1. CMD
  • 设置容器启动时默认执行的命令。如果 docker run 命令中没有指定命令,则使用 CMD 指令中的命令。例如

    CMD ["nginx", "-g", "daemon off;"]
    
  • CMD 只能有一个有效的指令,如果有多个 CMD 指令,只有最后一个会生效。

  1. ENTRYPOINT
  • 指定容器启动时的主命令,并且可以配合 CMD 使用以提供默认参数。例如

    ENTRYPOINT ["/usr/bin/nginx"]
    CMD ["-g", "daemon off;"]
    
  • ENTRYPOINT 指令不会被 docker run 命令中的参数覆盖。

  1. COPY
  • 将文件和目录从构建上下文复制到镜像内。例如

    COPY ./myapp /usr/src/myapp
    
  1. ADD
  • 类似于 COPY,但还支持解压缩和从 URL 下载文件。例如:

    ADD http://example.com/big.tar.gz /var/www/html/
    
  1. WORKDIR
  • 设置工作目录。后续的 RUNCMDENTRYPOINT 指令将在这个目录下运行。例如

    WORKDIR /usr/src/myapp
    
  1. EXPOSE
  • 声明容器内的应用程序将使用的端口。例如

    EXPOSE 80
    
  • 这只是一个声明,实际的端口映射需要在运行容器时进行配置。

  1. ENV
  • 设置环境变量。例如:

    ENV APP_ENV=production
    
  1. VOLUME
  • 创建一个挂载点,可以挂载外部存储到容器。例如

    VOLUME ["/data"]
    
  1. USER
  • 设置容器运行时的用户。例如

    USER www-data
    
  1. ARG
  • 定义构建时可用的变量。例如

    ARG VERSION=1.0
    

示例 Dockerfile

以下是一个示例 Dockerfile,展示了如何创建一个简单的 Node.js 应用镜像

# 使用 Node.js 官方镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 将 package.json 和 package-lock.json 复制到工作目录
COPY package*.json ./

# 安装应用的依赖
RUN npm install

# 将应用源代码复制到工作目录
COPY . .

# 暴露应用运行的端口
EXPOSE 3000

# 启动应用
CMD ["node", "app.js"]

构建镜像

使用 docker build 命令来构建镜像

```
docker build -t my-node-app .
```
  • -t 选项用于为构建的镜像指定标签(例如 my-node-app)。

  • . 指定了构建上下文的路径,通常是 Dockerfile 所在的目录。

运行容器

使用 docker run 命令来运行基于构建镜像的容器

```
docker run -p 3000:3000 my-node-app
```
  • -p 选项用于将宿主机端口映射到容器端口。

  • my-node-app 是镜像的名称。

标签:容器,例如,CMD,详解,指令,镜像,Dockerfile
From: https://www.cnblogs.com/wuruixing/p/18395153

相关文章

  • Docker-compose 详解
    docker-compose是一个用于定义和运行多容器Docker应用程序的工具。它使用一个docker-compose.yml文件来配置应用程序的服务、网络和数据卷,并通过简单的命令来管理这些服务。以下是docker-compose的一些核心概念和常用命令:docker-compose.yml文件docker-compose.yml是一......
  • MySQL like用法详解
    MySQLLIKE语法LIKE运算符用于WHERE表达式中,以搜索匹配字段中的指定内容,语法如下:WHEREcolumnLIKEpatternWHEREcolumnNOTLIKEpattern在LIKE全面加上NOT运算符时,表示与LIKE相反的意思,即选择column不包含pattern的数据记录LIKE通常与通配符%一起使用,%表示通配pattern中出现的......
  • MySQL之mysqldump的使用详解
    一、mysqldump简介mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。二、备份命令2.1命令格......
  • 【AI视频】Runway注册、基本设置、主界面详解
    博客主页:[小ᶻZ࿆]本文专栏:AI视频|Runway文章目录......
  • Java高级编程—Stream流(从0到1详解,附有代码+案例)
    文章目录Stream流26.1获取Stream流26.2Stream流中间方法26.3Stream流终结方法(一)26.4Stream流终结方法(二)Stream流相当于把数据源加载到一条流水线上,即在一条传输管道中对数据进行操作,26.1获取Stream流获取方式方法名说明单列集合defaultStreamstream()Col......
  • 25. shell当中的函数详解,管理函数,定义函数,交互式环境调用函数,查看删除函数,脚本中的函
    文章目录前言管理函数定义函数交互式环境调用函数查看函数删除函数脚本中的函数定义及使用函数使用函数文件环境函数示例总结友情链接前言函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独......
  • 阿里云2024年返点政策详解:企业如何最大化优惠获取
    代理商等级与返点比例阿里云代理商分为标准级、优选级、领先级、精英级和旗舰级五个等级,不同等级的代理商享受不同的返点比例。具体来说,标准级代理商返点比例为15%,优选级为20%,领先级为25%,精英级可达30%,旗舰级最高可达35%或更高。这些比例不仅反映了代理商的业绩水平,也体现......
  • 12.Linux当中如何搜索文件,find详解,示范
    在Linux当中查找文件的命令但多,但个人觉得最重要的搜索文件的命令是find,这个命令使用非常频繁,需要熟练掌握文章目录前言find使用详解1.介绍2.语法详解3.find选项示例(option)4、可选项总结友情链接前言在Linux当中查找文件的命令但多,但个人觉得最重要的搜索文件的命令是find......
  • MybatisPlus 主键策略之type=IdType.ASSIGN_ID等详解
    雪花算法(雪花)是微博开源的分布式ID生成算法其核心思想就是:使用一个64位的长型的数字作为全局唯一ID,主要介绍了MybatisPlus 主键策略(type=IdType.ASSIGN_ID等详解),需要的朋友可以参考下: 我们可以通过@TableId注解的 类型属性来设置主键id的增长策略,一共有几个多个主键策略,......
  • web安全认证详解
    什么是认证(Authentication)通俗地讲就是验证当前用户的身份,证明“你是你自己”互联网中的认证(只要你能收到邮箱/验证码,就默认你是账号的主人):用户名密码登录邮箱发送登录链接手机号接收验证码什么是授权(Authorization)用户授予第三方应用访问该用户某些资源的权......