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

Docker自定义构建镜像dockerfile和使用数据卷

Docker自定义构建镜像dockerfile和使用数据卷

DockerFile

Dockerfile 是一个文本文件,包含了一系列用于构建 Docker 镜像 的指令和配置信息。通过编写
Dockerfile ,用户可以定义镜像的构建过程,包括基础镜像、运行命令、设置环境变量、暴露端口等。
Dockerfile Docker 镜像的构建蓝图,通过执行 docker build 命令可以根据 Dockerfile 构建出一个完整的
镜像。每个指令都会生成一个镜像层,这些镜像层会被堆叠在一起以构建最终的镜像。
DockerFile指令
说明
FROM
指定基础镜像,用于后续的指令构建。
MAINTAINER
指定 Dockerfile 的作者 / 维护者。(已弃用,推荐使用 LABEL 指令)
LABEL
添加镜像的元数据,使用键值对的形式。
RUN
在构建过程中在镜像中执行命令。
CMD
指定容器创建时的默认命令。(可以被覆盖)
ENTRYPOINT
设置容器创建时的主要命令。(不可被覆盖)
EXPOSE
声明容器运行时监听的特定网络端口。
ENV
在容器内部设置环境变量。
ADD
将文件、目录或远程 URL 复制到镜像中。
COPY
将文件或目录复制到镜像中。
VOLUME
为容器创建挂载点或声明卷。
WORKDIR
设置后续指令的工作目录。
USER
指定后续指令的用户上下文。
ARG
定义在构建过程中传递给构建器的变量,可使用 "docker build" 命令设置。
ONBUILD
当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL
设置发送给容器以退出的系统调用信号。
HEALTHCHECK
定义周期性检查容器健康状态的命令。
SHELL
覆盖 Docker 中默认的 shell ,用于 RUN CMD ENTRYPOINT 指令。
构建步骤
先创建一个dockerfile的文件,用来创建我们的docker镜像,我们需要的tar包要放在同级目录下
编辑文件
FROM centos:7 
# 基础镜像是centos7# 作者
MAINTAINER cxy 2099289294@qq.com# 设置环境变量
ENV MYPATH /usr/local
# 指定工作目录
WORKDIR $MYPATH# 修改yum源   阿里的yum源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存并生成新的缓存
RUN yum clean all && yum makecache# vim
RUN yum -y install vim# net-tools
RUN yum -y install net-tools
#jdk
# 	1.解压tar 包  自动解压 
RUN mkdir /usr/local/java
ADD jdk-23_linux-x64_bin.tar.gz /usr/local/java/# 设置环境变量ENV JAVA_HOME /usr/local/java/jdk-23
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATHEXPOSE 80# 要运行的程序
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

from拉过来基础镜像centos,下载我们需要的vim和net-tools,解压jdk包和设置jdk的环境变量,放出来一个80端口

创建镜像

语法:Docker build 【-f 文件的名字】-t 镜像的名字 .

docker build -t mycentos .

文件的名字不写的时候默认使用的是dockerfile

创建好之后使用命令查看

查看所有镜像

docker images

创建容器运行容器,并进入到容器内部

docker run -it --name=容器名字  镜像名字  bash

导出镜像
docker save -o mycentos.tar mycentos

可以看到~目录下会出现我们的镜像

导入镜像

将镜像远程传递给另一台服务器

scp ./mycentos.tar root@192.168.184.35:/usr/aaa

进入到另一台的服务器中加载镜像

cd /usr/aaa
docker load -i mycentos.tar 

查看镜像是否加载

docker images

导入成功

数据卷

卷就是目录或文件,存在于一个或多个容器中,是 Docker 容器中用于持久化数据的一种机制,它可以将
容器内的数据存储到宿主机中,由 docker 挂载到容器,但不属于联合文件系统,因此能够绕过
UnionFS ,提供一些用于持续存储或共享数据。
特性
卷设计的目的就是数据的持久化,完全独立于容器的生存周期,因此 Docker 不会在容器删除时删除其挂
载的数据卷。
特点
数据卷可以在容器之间共享或重用数据
卷中的更改可以直接实施生效
数据卷中的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用它为止

作用:

1. 数据的共享

2. 容器删除的时候数据不丢失

添加数据卷

直接添加

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
 docker run -it -v /opt/myvolume:/opt/v1 --name=mycentos2 mycentos bash

运行了一个容器mycentos2  容器中opt/v1目录下面的所有的内容全部都挂载到了宿主目录中的opt/myvolume 里面

测试

进入容器内部

docker exec -it 容器名/id bash

进入刚和宿主机绑定的文件夹v1里,输出并创建一个文件,看宿主文件夹是否会同步创建

可以看到在我们的宿主机的文件夹里也同样会创建

即使容器被删除后也可以留下文件

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • lettuce引起的Redis command timeout异常
  • Linux入门2
  • 设计支持 50 万 QPS 的站内未读消息系统
  • 【ShuQiHere】 探索数据挖掘的世界:从概念到应用
  • 安全测试|如何使用burpsuite+xray实现联动测试
  • windows远程控制[机房电脑-本机] 解决黑屏问题
  • Java项目实战II基于Java+Spring Boot+MySQL的读书笔记共享平台(开发文档+数据库+源码)
  • c++中类模板的使用
  • 借条空白处签字,“见证人”还是“共同借款人”?
  • Frontiers出版社系列SCISSCI合集
  • 数据分析学习之学习路线
  • 1.1 HuggingFists简介(二)
  • 李宏毅2023机器学习HW15-Few-shot Classification
  • Python3网络爬虫开发实战(17)爬虫的管理和部署(第一版)
  • 如何重置企业/媒体/组织/个体户类型管理员微信号
  • 【Leetcode】101. 对称二叉树
  • [译] React v16.8: 含有Hooks的版本
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Magento 1.x 中文订单打印乱码
  • PAT A1092
  • Python语法速览与机器学习开发环境搭建
  • Solarized Scheme
  • SQLServer之创建显式事务
  • Vim Clutch | 面向脚踏板编程……
  • Webpack 4x 之路 ( 四 )
  • 简单实现一个textarea自适应高度
  • 理解在java “”i=i++;”所发生的事情
  • 马上搞懂 GeoJSON
  • 数据仓库的几种建模方法
  • 走向全栈之MongoDB的使用
  • PostgreSQL之连接数修改
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​数据链路层——流量控制可靠传输机制 ​
  • #include
  • #微信小程序(布局、渲染层基础知识)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (超详细)语音信号处理之特征提取
  • (第二周)效能测试
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (黑马C++)L06 重载与继承
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (五)网络优化与超参数选择--九五小庞
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net MVC + EF搭建学生管理系统
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)