DockerFile的入门与使用

news2024/11/16 3:18:45

什么是 DockerFile?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

参考Tomcat的dockerFile文件

在这里插入图片描述
在这里插入图片描述

DockerFile指令

  1. FROM 指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令
  2. MAINTAINER :维护者
  3. RUN: 容器创建的时候执行一段命令 构建镜像时执行的命令
  4. ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
  5. COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
  6. CMD:构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件
  7. ENV: 设置环境变量
  8. EXPOSE: 指定于外界交互的端口
  9. VOLUME 用于指定持久化目录
  10. WORKDIR 设置进入容器时的路径 默认访问的目录

DockerFile编写规范

  • #、 代表注释
  • 指令必须要大写,后面至少需要带至少一个参数;
  • 指令是按照从上到下,顺序执行;

使用 Dockerfile 定制镜像

  1. 下面以定制一个 cnetos镜像,下面是官网的文件内容:
    在这里插入图片描述
    运行后发现会自动进入容器里面
    在这里插入图片描述
    原因是centos的dockerfile下面的这个命令
CMD ["/bin/bash"] 

我们都知道,如果要进入一个容器里面需要执行

docker exec -it [CONTAINER ID] bash

所以说
CMD [“/bin/bash”] 等于 docker exec -it [CONTAINER ID] bash

自定义镜像需求

  1. 需求定制修改centos根目录,运行的时候自动进入/user目录
  2. 实现支持vim插件;

实现逻辑

  • 需要自己制作一个dockerfile文件
  • 继承docker hub中的centos自带的dockerfile文件
  • 在docker hub centos 上加入以下两个功能
  • 结果如下
# 继承docker hub 中centos的镜像文件
FROM  centos
# 作者名
MAINTAINER tujr
# 配置环境变量
ENV  MYPATH /usr
# 设置进入到容器的时候默认打开 /user目录
WORKDIR $MYPATH
# 安装下载 vim
RUN yum -y install vim
# 外部访问端口
EXPOSE 80
# 启动容器后自动进入到容器里面
CMD /bin/bash
  • 将该dockerfile文件上传到linux服务器中
  • Dockerfile→使用docker 将该Dockerfile实现打包成镜像文件→容器运行该镜像文件。
  • 使用docker build—将该Dockerfile实现打包成镜像文件
docker build -f DockerfileName -t mycs:1 .
  • DockerfileName ------配置文件

  • mycs----打包镜像文件名称

  • 1 ----tag 版本号码

  • 运行

docker run -it mycs:1 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深入理解C语言】-- 关键字2

🐇 🔥博客主页: 云曦 📋系列专栏:深入理解C语言 💨吾生也有涯,而知也无涯 💛 感谢大家👍点赞 😋关注📝评论 文章目录 前言一、关键字 - static&…

规则的加载与管理者——KieContainer的获取与其类型的区别(虽然标题是KieContainer,其实说的还是KieServices)

之前梳理了一下有关KieServices的获取,与获取中的代码走向,详情请见: “万恶”之源的KieServices,获取代码就一行,表面代码越少里面东西就越多,本以为就是个简单的工厂方法,没想到里面弯弯绕绕…

vue3跳转页面后 海康监控实例不销毁

第一个页面是这样的 跳转到新的页面 只有海康的监控没有消失 使用控制台审查元素也审查不到 解决方法:在vue3的销毁周期把海康的监控销毁掉 import { reactive, onDeactivated} from "vue"; const state reactive({oWebControl: null as any, //监控绑…

数字乡村三维可视化监控管理平台

数字乡村是伴随网络化、信息化和数字化在农业农村经济社会发展中的应用,既是乡村振兴的战略方向,也是建设数字中国的重要内容。为了进一步提升乡村治理智能化、专业化水平,解决建设顶层缺失、数据孤岛等问题,数字孪生技术被广泛应…

16.4 【Linux】特殊文件与程序

16.4.1 具有 SUID/SGID 权限的指令执行状态 SUID 的权限其实与程序的相关性非常的大!为什么呢?先来看看 SUID 的程序是如何被一般使用者执行,且具有什么特色呢? SUID 权限仅对二进制程序(binary program)…

LL库实现SPI MDA发送方式驱动WS2812

1,首先打卡STM32CubeMX,配置一下工程,这里使用的芯片是STM32F030F4P6。 时钟 SPI外设 SPI DMA 下载接口,这个不配置待会下程序后第二次就不好下载调试了。 工程配置,没啥说的 选择生成所有文件 将驱动都改为LL库 然后直…

python知识:什么是字符编码?

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 我们的MySQL使用latin1的默认字符集, 也就是说,对汉字字段直接使用GBK内码的编码进行存储, 当需要对一些有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时…

【Mysql 连接报错】

文章目录 遇到问题查看用户信息修改加密规则成功连入mysql 遇到问题 socket: auth failed …/…/lualib/skynet/socketchannel.lua:482: errno:1251, msg:Client does not support authentication protocol requested by server; consider upgrading MySQL client,sqlstate:080…

高效解决Anaconda Prompt报错Did not find VSINSTALLDIR这类问题

文章目录 回忆问题解决问题step1step2 回忆问题 类似于划红线部分然后还有很多行的报错信息,最后一行肯定是红色划线部分 解决问题 step1 找到 D:\Anaconda\envs\pytorch\etc\conda\activate.d在这个文件夹内会有两个文件,删除 vs2017_compiler_v…

Java版本+企业电子招投标系统源代码+支持二开+Spring cloud tbms

​ 项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以…

考研算法第46天: 字符串转换整数 【字符串,模拟】

题目前置知识 c中的string判空 string Count; Count.empty(); //正确 Count ! null; //错误c中最大最小宏 #include <limits.h>INT_MAX INT_MIN 字符串使用发运算将字符加到字符串末尾 string Count; string str "liuda"; Count str[i]; 题目概况 AC代码…

桃红葡萄酒的品尝笔记记录

桃红葡萄酒通常都是用红葡萄品种来制作的&#xff0c;葡萄皮接触和saign方法会降低葡萄酒中的红色。因此&#xff0c;歌海娜、西拉、赤霞珠、坦普拉尼洛、桑娇维塞、马尔贝克、穆韦德、佳丽酿、仙粉黛、辛索和黑皮诺都是用于桃红葡萄酒甚至混合葡萄酒的常见品种。味道偏向水果味…

常见的逻辑运算符

计算机组成原理常见的逻辑运算符及其真值规则 逻辑运算名称 符号 规则 与运算 同真则真&#xff0c;有假则假 或运算 有真则真&#xff0c;同假则假 非运算 非真为假&#xff0c;非假为真 异或逻辑 相同为假&#xff0c;不同为真 与非逻辑 将与运算…

【数据分析入门】Numpy进阶

目录 一、数据重塑1.1 透视1.2 透视表1.3 堆栈/反堆栈1.3 融合 二、迭代三、高级索引3.1 基础选择3.2 通过isin选择3.3 通过Where选择3.4 通过Query选择3.5 设置/取消索引3.6 重置索引3.6.1 前向填充3.6.2 后向填充 3.7 多重索引 四、重复数据五、数据分组5.1 聚合5.2 转换 六、…

depcheck 检查依赖插件使用及报错

1.全局安装 npm i depcheck -g 2.使用depcheck 指令进行依赖检查 报错 &#xff1a; 无法加载 xxx\npm\depcheck.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。…

AI绘图(9)stable diffusion Lora 用法

Lora模型是配合Stable Diffusion使用的。可以简单的把Lora当成化妆师&#xff0c;当Stable Difusion生成的人不好看时&#xff0c;使用Lora可以帮它化妆&#xff0c;让它从丑小鸭变成白天鹅。 简单来说&#xff1a;就是一个修饰作用。 使用文生图功能 1、不使用Lora模型 Pr…

10、Redis单线程 VS 多线程

Redis单线程 VS 多线程 redis到底是单线程还是多线程&#xff1f; IO多路复用听说过吗&#xff1f; redis为什么快&#xff1f; 2、Redis为什么选择单线程&#xff1f; 这种问法其实并不严谨&#xff0c;为啥这么说呢? Redis的版本很多3.x、4.x、6.x&#xff0c;版本不同架构…

【2024】MySQL中常用函数和窗口函数的基本使用方式

MySQL中常用函数和窗口函数的基本使用方式 一、基础函数1、聚合函数&#xff1a;2、字符串函数&#xff1a;3、日期和时间函数4、数值函数5、条件函数 二、窗口函数(*OVER*) 一、基础函数 1、聚合函数&#xff1a; SELECT COUNT(*) FROM table_name;&#xff1a;计算表中的行…

在不破坏原有隔离状态的情况下,怎么实现网间数据安全摆渡?

随着网络技术的演进&#xff0c;网络攻击、数据窃取、数据泄露事件也愈发频繁&#xff0c;给企业造成损失和负面影响&#xff0c;企业数据防泄漏治理是大趋势&#xff0c;也是自身迫切需求。 2021年1月&#xff0c;中国农业银行因存在数据泄露风险、互联网门户网站泄露敏感信息…

数据接入体验再升级!TDengine 推出支持 MQTT 协议的数据接入功能

我们非常高兴地宣布&#xff0c;TDengine 企业版和 TDengine Cloud 正式推出重磅功能&#xff0c;这一功能主打无缝数据接入支持&#xff0c;旨在帮助用户彻底改善数据接入体验。作为一款创新性的解决方案&#xff0c;TDengine 企业版和 TDengine Cloud 可以直接将 MQTT 服务器…