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

ops/2024/10/15 2:39:15/

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里,输出并创建一个文件,看宿主文件夹是否会同步创建

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

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


http://www.ppmy.cn/ops/119112.html

相关文章

科研绘图系列:R语言堆积图(stacked barplot)

文章目录 介绍加载R包导入数据数据预处理画图导出数据系统信息介绍 微生物堆积图是一种数据可视化工具,通常用于展示微生物群落中不同物种的相对丰度。这种图表通过将每个样本中的微生物按照其分类学等级(如门、属等)进行分类,并以不同颜色的块状图表示,每个块的大小代表…

【优选算法】(第四篇)

目录 三数之和(medium) 题目解析 讲解算法原理 编写代码 四数之和(medium) 题目解析 讲解算法原理 编写代码 三数之和(medium) 题目解析 1.题目链接:. - 力扣(LeetCode&…

策略(政策)模式

简介 策略模式(Strategy Pattern)又叫作政策模式(Policy Pattern),它将定义的算法家族分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户,属于行为型…

vue 流式加载mp4文件

video组件 传入assetURL视频地址即可&#xff0c;组件内配置了代理&#xff0c;注意配置/video-api 代理 <template><video ended"emits(ended)" autoplay muted ref"video"><source type"video/mp4" />Your browser does no…

腾讯邮箱上传附件卡、慢、无法上传,下载慢问题处理

1、检查文件中转站容量是否已满 2、建议用户打开链接https://exmail.qq.com/qy_mng_logic/wasmHelper?typehashv2&#xff0c;看是否可以正常访问。&#xff08;能打开下载就表示可以正常访问&#xff09; 3、让用户切换到4G或者其他网络再重新上传附件是否会重现问题&#xf…

【WSL——Windows 上使用 Linux 环境】

引入 以前在windows上使用linux工具链&#xff0c;一般都要安装虚拟机&#xff08;VMware/virtualBox)。虚拟机的缺点是&#xff0c;因为是完整的虚拟环境&#xff0c;消耗系统资源比较多。 windows自己开发了WSL功能&#xff0c;实现了虚拟机的功能&#xff0c;但是比虚拟机性…

goland使用redis实现签到功能

签到封装&#xff1a;直接调用即可&#xff0c;基本满足所有签到操作 package mainimport ("context""fmt""time""github.com/go-redis/redis/v8" )type UserSign struct {rdb *redis.Client }func NewUserSign(opt *redis.Options) …

Linux云计算 |【第四阶段】PROJECT2-DAY1

综合项目内容&#xff1a; 部署数据库服务MySQL、部署共享存储NFS、配置网站服务、测试配置 一、项目拓扑结构 PROJECT1回顾&#xff1a; PROJECT2-DAY1拓扑&#xff1a; 服务器IP及角色规划&#xff1a; 主机名 IP地址 角色 mysql11 192.168.4.11 MySQL数据库服务器 m…