Docker-Dockerfile讲解(二)

Docker 安装 Apache 阅读详情

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:

Docker基本情况

Docker基本命令

Dockerfile(本小节属于)

Docker镜像

Docker仓库

Docker原理

Docker网络&存储&日志

Docker-Compose

Docker番外篇

接上一节讲过的FROM,MAINTAINER,RUN,EXPOSE,WORKDIR,USER,我们这一节继续讲解其他参数。

ENV

设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。包括运行的容器也可以使用该环境变量,当然我们也可以在run容器的手工注入环境变量。如果出现冲突的环境变量,run的优先级最高,dockerfile自带的env次之,最后是操作系统自带的最低。

ENV <key> <value> 设置 NODE_VERSION = 7.2.0 , 在后续的指令中可以通过 $NODE_VERSION 引用。

ENV a=b

ARG

构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

ARG NODE_ENV=development

#也可以在构建的添加
docker build --build-arg NODE_ENV=production -t myapp:latest .

ADD

ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件拷贝到镜像中。同时如果文件是压缩格式,ADD后会自动解压。支持的压缩格式包括:tar.gz ,tgz ,tar.bz2 ,tar.xz (个人习惯一般都用tar.gz)

其格式是:ADD 源路径 目标路径

# 如果abcd是个文件
# 把当前目录abcd文件复制到/root目录下
ADD abcd /root
# 如果aaa是个目录
# 把aaa目录下的文件复制到 /root目录下
ADD aaa /root

​​​​​​

# 如果aaa是个目录
# 把aaa目录及目录下的文件复制到/root目录下
ADD aaa /root/aaa

[root@b034f711ba34 /]# cd /root/
[root@b034f711ba34 ~]# ls
aaa  abcd  anaconda-ks.cfg
[root@b034f711ba34 ~]# cd aaa/
[root@b034f711ba34 aaa]# ls
xxx


# 会把这个文件解压到/root/目录下
ADD centos.tar.gz /root/


#下载文件上传到/root目录
ADD https://example.com/centos.tar.gz /root/centos.tar.gz

​​​​​​​

注意:解压和url不能同时使用。

COPY

COPY指令和ADD指令功能和使用方式类似。只是COPY指令不支持自动解压工作,同时也无法下载url中的文件。

VOLUME

数据卷,当容器运行的时候自动创建一个volume,挂载到容器指定的目录,不需要在docker run的时候添加任何参数,就会自动创建。

#容器里面自动创建2个目录  /voluuem1和 /volume2
VOLUME ["/volume1", "/volume2"]
#可以看到匿名的数据卷
docker volume ls

这个问题以前我曾经踩过坑,使用了某开源的镜像,具体是那个已经忘记,这个容器运行中会产生较多的数据的数据在这个volume里面。由于经常删除重建,所以遗留了很多volume,占用了大量的磁盘;而当时对docker的理解并没有现在深入,找了很久才找到原因。

volume是不会跟着容器和镜像的删除而会自动删除的,只有使用docker volume才能进行删除,而且由于是匿名的,你根本不知道谁是谁,谁在用,谁没用。下图就是上面的dockerfile构建的镜像运行过后的情况。而且我们在讲Docker-详细信息和目录的时候也说过,docker的目录下有一个专门的目录就是存储这个volume的。

图片

图片

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

Docker Dockerfile Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。 阅读详情

相关推荐

Vivado IP核调参大师:高效配置RS编码器的避坑指南

本文深入解析Vivado中RS编码器IP核的高效配置方法,涵盖符号宽度选择、码长优化和AXI4-Stream接口控制等关键参数。重点指导如何避开常见陷阱,实现FPGA设计中的资源优化与性能平衡,提升RS编码在通信系统中的可靠性。

metaverse5vr的博客 221

Docker系列(二十)——Docker实例二Docker安装Nginx实例

《Docker实例二Docker安装Nginx实例 》 前言 在前面一篇文章种,完成了 《Docker安装Apache实例 》,本篇将继续镜像安装教程,并完成Docker安装Nginx实例。 Docker实例二Docker安装Nginx实例 第一种:使用docker pull 镜像名拉取镜像 ...

Spring Boot-Common On With You 1175

51单片机自学笔记(六)数码管动态扫描与消影实战

本文详细解析了51单片机数码管动态扫描原理与视觉暂留效应,通过硬件电路分析和C语言代码实战,重点介绍了三种数码管消影技术(段选清零法、位选屏蔽法、硬件消影法),解决了显示重影问题,并提供了常见问题调试技巧与定时器中断优化方案,帮助开发者掌握稳定的多位数码管显示技术。

y9z0a1b的博客 1104

Docker镜像制作

Docker镜像制作

DZSpace,专注于计算机科学与技术领域的技术博主,致力于分享实用知识与技巧,帮助读者快速掌握技术要点,共同探索计算机世界的无限可能。欢迎访问DZSpace的博客,一起学习进步! 468

DP_AUX辅助通道介绍

DisplayPort(简称DP)是一个由PC及芯片制造商联盟开发,视频电子标准协会(VESA)标准化的数字式视频接口标准。其中辅助通道(AUX)是一条独立双向半双工的传输通道,它也是一对差分信号线。其数据传输速率1Mbps,用来传输配置参数与指令。

cjie221的博客 5352

ST7102驱动移植与调试实战

本文详细介绍了在君正T40平台上移植和调试ST7102 LCD驱动芯片的实战经验。内容涵盖硬件接口配置、时序参数调整、寄存器初始化序列编写及常见问题解决,重点解析了ST7102单芯片集成显示与触控功能的特性,为嵌入式设备显示驱动开发提供实用指南。

k6l7m8n9的博客 1412

Docker上部署goweb项目

本篇博客介绍了使用较为火热的技术Docker部署Golang项目,第一种方法是直接将编译好的exe文件编排进Docker镜像,第二种方法是将go语言环境编排进Docker镜像,无论使用哪一种方法均可实现我们的目标,这也得益于Go语言的交叉编译功能。

一个非常Cool的人 1234

LVGL colorwheel组件教程一(调色板)

【代码】LVGL colorwheel组件教程一(调色板)

摸鱼专家 434

Docker教程(Docker 安装 Tomcat)

Docker 安装 Tomcat方法一、通过 Dockerfile构建创建Dockerfile首先,创建目录tomcat,用于存放后面的相关东西。runoob@runoob:~$ mkdir -p ~/tomcat/webapps ~/tomcat/logs ~/tomcat/confwebapps目录将映射为tomcat容器配置的应用程序目录logs目录将映射为tomcat容器的日志目录conf...

架构师必备技能 334

【Pix4d精品教程】Pix4d空三后处理:点云分类与过滤、DSM精编生成DEM、生成等高线案例详解

本文详细介绍了利用Pix4D软件进行无人机摄影测量后处理的关键步骤,主要包括点云分类与分配、DEM精编生成和等高线绘制三个核心环节。首先通过点云分类区分地面、植被等7种地物类型,然后通过点云分配将地面点云归并到Ground类别,剔除植被等干扰要素。随后重新运行DSM生成步骤获取精确DEM,最后在附加输出中设置参数生成标准等高线。文中配有详细的操作截图和注意事项,如处理前需备份原始DSM/DOM数据,并解释了DEM与DSM的本质区别。该教程为无人机摄影测量内业处理提供了完整的解决方案。

智慧空间实验室 1万+

在鸿蒙中使用AVPlayer完成视频的播放【坚果派】

播放的全流程包含:创建AVPlayer,设置播放资源和窗口,设置播放参数(音量/倍速/缩放模式),播放控制(播放/暂停/跳转/停止),重置,销毁资源。5.准备播放:调用prepare(),AVPlayer进入prepared状态,此时可以获取duration,设置缩放模式、音量等。8.退出播放:调用release()销毁实例,AVPlayer进入released状态,退出播放。6.视频播控:播放play(),暂停pause(),跳转seek(),停止stop() 等操作。今天我们来看一下视频如何正常播放。

坚果的博客 4057

docker部署jar的两种方式

在没有学习docker之前,部署项目都是直接启动文件,比如java项目就是java –jar xxxx.jar的方式,python项目就是python xxxx.py。如果采用docker的方式去部署这些项目,一般有两种方式,以jar包项目为例 方式一挂载部署 这种方式类似于常规部署,通过数据卷的方式将宿主机的jar包挂载到容器中,然后执行jar包的jdk选择容器中的而非采用本地的。 1. 将jar包上传到服务器的指定目录,比如/root/docker/jar。 2.通过docker pull

人生二两酒 6996

分享6款文字语音生成驱动虚拟数字人说话的开源项目

对定性和定量结果的大量实验表明,我们的算法实现了高质量的照片真实感对话头部视频,包括根据语音节奏进行的各种面部表情和头部运动,并超过了最先进的水平。我们的系统包含三个阶段。当然,FACEGOOD Audio2face 部分也可根据自己的喜好进行重新训练,比如你想用自己的声音或其它类型的声音,或者不同于 FACEGOOD 使用的模型绑定作为驱动数据,都可以根据下面提到的流程完成自己专属的动画驱动算法模型训练。兼顾生成的韵律和外表的相似,除了面部,考虑到了头部的动作,虑了背景区域的artifact。

南七小僧的学海无涯 3050

系统制成docker镜像_如何制作Docker镜像(image)?

制作Docker镜像一般有2种方法:使用hub仓库中已有的环境,安装自己使用的软件环境后完成image创建通过Dockerfile,完成镜像image的创建下面通过展示具体操作方法:第一种:使用hub仓库中已有的环境,安装自己使用的软件环境后完成image创建。制作自己的Docker镜像环境,里面包括:(1)centos(2)golang1、docker pull centos(pull最新的ce...

weixin_34536454的博客 564

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Docker实战:从定制镜像到容器内软件配置的完整指南

你是不是也遇到过这样的场景:在本地开发环境跑得好好的服务,一到测试或生产环境就各种依赖缺失、版本冲突?或者团队新成员入职,光是配环境就要花掉一整天? 这正是 Docker 要解决的核心痛点。它通过“集装箱”式的封装,将应用及其所有依赖打包成一个标准化的镜像,实现了“一次构建,处处运行”。但很多初学者在接触 Docker 时,往往止步于 docker run 一个现成的镜像,对于如何从零开始定制自己的镜像、如何在容器内部进行软件安装和配置,仍然感到无从下手。 这篇文章要解决的,正是这个从“会用”到“会做”的关

weixin_34295316的博客 433

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Docker】Docker容器数据卷、容器卷之间的继承和DockerFIle的详细讲解

Docker容器数据卷、容器卷之间的继承和DockerFIle的详细讲解

H1727548的博客 8558

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

利用Dockerfile制作自己的Docker镜像

制作属于自己的Docker镜像,一般有两种方式,第一种为commit方式,利用已有的镜像,运行后安装定制自己需要的环境,然后生成镜像;另一种就是build方式,通过编写Dockerfile命令脚本进行生成镜像。 方法2:docker build # 编写Dockerfile命令脚本文件自动化制作 image 使用Dockerfile是更推荐的方式,这样可以让使用者更清晰地看到这个镜像的制作细节,逻辑清晰,便于管理。 创建存放Dockerfile的目录,后续操作将在这个目录下进行。 mkdir

u010797364的博客 1万+

关于制作Docker镜像?| Dockerfile快速开始

要落地云原生架构,其中的一个核心点是通过容器来部署我们的应用。如果要使用容器来部署应用,那么制作应用的 Docker 镜像就是我们绕不开的关键一步。

西京刀客 3万+

【Docker】利用Dockerfile制作个人的镜像文件详细讲解

【Docker】利用Dockerfile制作个人的镜像文件详细讲解:Dockerfile简介、Dockerfile相关指令、Dockerfile编写、requirements.txt、build构建镜像文件等讲解

m0_75058342的博客 4209

Docker-Dockerfile讲解(一)

我们前面讲解了很多docker的操作命令,也使用了几个镜像,但是这些镜像都是我们从仓库里面下载的,具有通用性。如果要满足自己的业务需求,所以我们需要根据自己的需要制作自己的镜像,下面我将讲解下如何制作自己的镜像。

803

Docker Dockerfile讲解

Docker 是一种开源容器化平台,基于操作系统级别的虚拟化,允许开发者将应用程序及其依赖封装到一个可移植的容器中。Dockerfile 是构建 Docker 镜像的核心文件,包含了一条条构建镜像所需的指令和说明。通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。研究表明,Dockerfile 广泛用于开发、测试和生产环境,解决了传统虚拟机资源占用高、启动慢的问题。特别是在中国大陆,由于网络限制(如 GFW),配置国内镜像源是关键步骤。

likuoelie的博客 825

Docker之数据卷和Dockerfile

在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作。 容器中的管理数据主要有两种方式: 数据卷(Data Volumes):容器内数据直接映射到本地主机环境; 数据卷容器(Data Volume Containers): 使用特定容器维护数据卷;

空空bye. 4864

[Docker][DockerFile]详细讲解

[Docker][DockerFile]详细讲解

SnowK博客 6446
上一篇: Docker-Dockerfile讲解(一)
下一篇: Docker-Dockerfile讲解(三)
dessler
博客等级 码龄20年 3057粉丝 434原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值