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

【分布式微服务云原生】Dockerfile命令详解

Dockerfile 是一个文本文件,它包含了一系列的指令,用于构建一个 Docker 镜像。下面是 Dockerfile 中常用命令的详细解释和示例。

1. 获取镜像的三种方式

通过命令拉取镜像

docker pull 镜像名称

从镜像仓库拉取指定的镜像。

通过容器创建镜像

docker commit 容器id 镜像名称

从已存在的容器创建一个新的镜像。

通过Dockerfile构建镜像
编写 Dockerfile 文件来自定义和构建镜像。

流程图:获取镜像的三种方式

开始
docker pull 镜像名称
从仓库拉取镜像
开始
docker commit 容器id 镜像名称
从容器创建镜像
开始
编写Dockerfile
构建自定义镜像
2. Dockerfile基础指令

FROM
定义基础镜像信息。

FROM nginx

MAINTAINER
作者维护者信息。

MAINTAINER 作者名 <邮箱>

RUN
运行Linux命令,制作镜像操作指令。

RUN echo '<meta charset=utf8>佳哥带你用docker运行nginx服务' > /usr/share/nginx/html/index.html

ADD
添加文件到容器内,支持自动解压和远程文件下载。

ADD 文件路径 /容器内路径

COPY
复制本地文件到容器内,不自动解压。

COPY 文件路径 /容器内路径

WORKDIR
设置工作目录。

WORKDIR /etc/mysql

USER
切换执行用户。

USER root
USER test

VOLUME
定义挂载卷。

VOLUME /data

EXPOSE
指定对外的端口。

EXPOSE 80

CMD
指定容器启动时要执行的命令。

CMD ["nginx", "-g", "daemon off;"]

ENTRYPOINT
指定容器启动时要执行的程序及参数。

ENTRYPOINT ["nginx", "-g", "daemon off;"]

ENV
设置环境变量。

ENV NAME value

ARG
构建时设置变量。

ARG NAME=value

流程图:Dockerfile基础指令

FROM
定义基础镜像
MAINTAINER
定义维护者信息
RUN
执行命令
ADD
添加文件/目录
COPY
复制文件/目录
WORKDIR
设置工作目录
USER
切换用户
VOLUME
定义挂载卷
EXPOSE
暴露端口
CMD
指定启动命令
ENTRYPOINT
指定启动程序
ENV
设置环境变量
ARG
构建时设置变量
3. Dockerfile构建示例

构建Docker镜像

docker build --no-cache -t 'jiage3122/my_flask_web' .

打标签

docker tag 镜像id 镜像名称

运行容器

docker run -d -p 80:80 my-nginx

流程图:Dockerfile构建示例

编写Dockerfile
docker build
构建镜像
docker tag
打标签
docker run
运行容器
内容汇总表格
章节命令说明
获取镜像docker pull从仓库拉取镜像
获取镜像docker commit从容器创建镜像
获取镜像编写Dockerfile通过Dockerfile构建镜像
基础指令FROM定义基础镜像
基础指令MAINTAINER定义维护者信息
基础指令RUN执行命令
基础指令ADD添加文件/目录
基础指令COPY复制文件/目录
基础指令WORKDIR设置工作目录
基础指令USER切换用户
基础指令VOLUME定义挂载卷
基础指令EXPOSE暴露端口
基础指令CMD指定启动命令
基础指令ENTRYPOINT指定启动程序
基础指令ENV设置环境变量
基础指令ARG构建时设置变量
构建示例docker build构建Docker镜像
构建示例docker tag打标签
构建示例docker run运行容器

相关文章:

  • OJ在线评测系统 后端判题机架构搭建 使用原生实现Java安全管理器环境隔离
  • 付费计量系统标准化未来展望
  • 【源码】询比价管理系统,招投标采购管理系统
  • 【滑动窗口算法】——定长滑动窗口——Python(附题)
  • vue2 将页面生成pdf下载
  • MYSQL-查看函数创建语句语法(五)
  • Ubuntu/Debian网络配置(补充篇)
  • 解决方案:如何区分python里面绝对路径跟相对路径的不同
  • SIP 会议信令
  • Android studio安装问题及解决方案
  • TypeScript高级内容
  • vue中使用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)
  • 解压视频素材下载网站推荐
  • python用两类循环嵌套打印正置九九乘法口诀表和倒置九九乘法口诀表
  • PPT 快捷键使用、技巧
  • (三)从jvm层面了解线程的启动和停止
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • es6
  • ESLint简单操作
  • Fabric架构演变之路
  • JavaScript创建对象的四种方式
  • java第三方包学习之lombok
  • Koa2 之文件上传下载
  • Linux各目录及每个目录的详细介绍
  • Node + FFmpeg 实现Canvas动画导出视频
  • PV统计优化设计
  • Quartz初级教程
  • React中的“虫洞”——Context
  • Sass Day-01
  • tensorflow学习笔记3——MNIST应用篇
  • Transformer-XL: Unleashing the Potential of Attention Models
  • windows下mongoDB的环境配置
  • windows下使用nginx调试简介
  • 汉诺塔算法
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 使用 Docker 部署 Spring Boot项目
  • 微信小程序开发问题汇总
  • 我有几个粽子,和一个故事
  • 写给高年级小学生看的《Bash 指南》
  • 学习Vue.js的五个小例子
  • 你对linux中grep命令知道多少?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​决定德拉瓦州地区版图的关键历史事件
  • #if和#ifdef区别
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C++哈希表01)
  • (补充)IDEA项目结构
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)ssm码农论坛 毕业设计 231126
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (三)SvelteKit教程:layout 文件