docker的数据卷和自定义镜像

devtools/2025/1/18 3:41:12/

docker的数据卷:
容器与宿主机之间,或者容器和容器之间的数据共享(目录)。
创建容器的时间,通过指定目录,实现容器于宿主机之间,或者容器和容器之间的数据共享。
容器的生命周期有限,一旦销毁,内部数据消失,所以创建了数据卷的方式,将容器内的数据永久保存到宿主机。

docker run -itd --name nginx1 -v  宿主机目录:容器目录 -p 容器端口:宿主机端口  镜像文件
-v /opt/test1:/opt/test1:ro 数据卷的默认权限是rw,ro:只读模式
已宿主机的目录为准。容器的生命周期是有限的,保存到宿主机目录的数据

数据卷容器:
容器和容器之间共享数据:docker run -itd --name test2 -v /opt/data2 centos:7
-v指定目录,如果没有:,这个目录就是容器内部的目录 ,不会和宿主机挂载
docker run -itd --name test3 --voiumes-from test2 centos:7
--voiumes-from:另外一个容器,使用的其他容器提供的数据目录,这个目录仅限于容器内数据共享,一旦容器销毁,内部的数据目录也会一并销毁。
 
问题:创建容器,指定挂载卷容器内的nginx的日志目录和宿主机挂载,nginx的映射端口为随机端口。然后访问容器,可以在宿主机显示日志的内容。
docker run -itd --name test1 -v /opt/123:/var/log/nginx -P nginx:1.22

**创建容器三要素:①一定要做宿主机和容器之间的端口映射(容器对外提供访问)
②一定要对容其对资源限制
③一定要做数据卷


****核心:dockerfile
自定义镜像*
基于dockerfile创建,
联合文件系统,UnionFs 是创建docker镜像的基础,镜像可以通过分层来进行集成,基于基础的镜像可以制作各种应用的镜像。
特点:一次性加载多个文件系统,但是创建好容器后,对于用来说只有一个文件系统。
docker镜像的定制化操作实际上就是定制每一层索要添加的配置和未见等。
把所有的需要的操作写入到一个脚本中,然后一键运行,就是dockerfile   dockerfile作为一个脚本,由四部分组成:
1.基础镜像:程序的运行环境
2.维护者信息(可选项,相当于注释)
3.镜像的操作命令
4.容器启动的命令(容器没有可执行的命令,就是退出stop,必须要个i容器一个可执行的持久化命令)
dockerfile的命令格式:
EROM:指定程序的基础镜像
MAINTAINER:维护者信息(可忽略)
镜像的操作命令:
RUN:在基础镜像运行命令,结果提交到新镜像,没执行一次run就相当于镜像的一层,run的命令太多,镜像的分层就越多,镜像越大。
ADD:将宿主机的文件复制到镜像的内部,可以URL和解压
COPY:将宿主机的文件复制到镜像的内部,只能是宿主机的文帝文件,不支持下载。
ENV:指定镜像内的容器运行之后的环境变量
WORKDIR:容器的工作目录,也是进入容器之后的默认目录 /opt/test1
USER:指定容器运行时的用户名或者uid
VOLUME:创建容器内的而挂载点,可被外部使用,即可以和宿主机挂载,也可以和容器使用
EXPOSE:声明容器对外的网络端口
ARG:用来传递变量,把宿主机的参数传递到容器内部的参数

容器启动命令:
CMD:指定容器运行的默认命令
ENTRYPOINT:指定容器运行的默认命令
区别:①cmd可以个ientrypoint传参,②entrypoint会覆盖cmd的命令,③当创建容器时,外部定义了参数,如果是cmd,会被外部的传参覆盖,只会执行的外部传参的命令,但是entrypoint的命令不会被外部传参的命令覆盖 ④如果有多个cmd和entrypoint只会执行最后一个

vim Dockerfile
docker build -t centos:test1
开启镜像操作
-t:创建完成之后个i镜像指定的名称和标签
 

run命令在一个dockerfile当中不能太多,命令太多,镜像分层越多,镜像就越大。

&&:在run命令中,表示连接多个命令。确保前一个命令执行成功,才会运行第二个命令。

add和copy

1.add和copy在复制文件时,表现的是一致的。复制本地文件。
找和dockerfile在一个目录下的。自动复制到指定路径
2.解压和下载     add
ADD的优点,没有格式的限制       解压,gz.bz2直接上路劲,自动解压到目标路径
缺点:再不解压的前提下,无法复制tar的而压缩文件
 


http://www.ppmy.cn/devtools/151451.html

相关文章

mysql 双主双从 + proxysql 代理

环境 主机ipmaster1192.168.233.101master2192.168.233.102slave1192.168.233.103slave2192.168.233.104client192.168.233.105 需求 master1和master2互为主从,slave1是master1的从,slave2是master2的从。 master主机通过proxysql代理实现负载均衡的…

字符串dp系列

647. 回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。 示例 1: 输入: "abc" 输出: 3 解释: 三个回文子串: "a&qu…

闲谭SpringBoot--ShardingSphere分布式事务探究

文章目录 0. 背景1. 未分库分表时2. 仅分表时3. 分库分表时3.1 不涉及分库表3.2 涉及分库表,且分库表处于一个库3.3 涉及分库表,且分库表处于多个库3.4 涉及分库表,且运行中某库停机 4. 小结 0. 背景 接上篇文章《闲谭SpringBoot–ShardingS…

计算机网络(四)——网络层

目录 一、功能 二、IP数据报分片 三、DHCP动态主机配置协议 四、网络地址转换(NAT)技术 五、无分类编址CIDR 六、ARP地址解析协议 七、ICMP网际控制报文协议 八、IPv4和IPv6的区别 九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术 十、路由…

深入Node.js集群:原理、优势与搭建实战,如何应对高并发

文章目录 一、Node.js 集群简介二、Node.js 集群原理剖析2.1 主从模型2.2 负载均衡机制2.3 进程间通信(IPC) 三、Node.js 集群优势详解3.1 性能提升3.2 高可用性3.3 资源利用率优化 四、Node.js 集群搭建实战4.1 准备工作4.2 创建主控制节点4.3 工作节点…

文件操作的训练(python)

一、在文件夹中新建多个文件并写入内容 #写入函数 def file_write(file_name):#打开文件fileopen(file_name,"w")#写入内容file.write("Hello world")#关闭文件file.close() import os #新建一个文件夹"images" os.mkdir("images") #…

Golang|单机并发缓存

var m sync.Mutex //sync.Mutex 是一个互斥锁,可以由不同的协程加锁和解锁。 //sync.Mutex 是 Go 语言标准库提供的一个互斥锁 //当一个协程(goroutine)获得了这个锁的拥有权后,其它请求锁的协程(goroutine)就会阻塞在 Lock() 方法的调用上,直…

Spring Boot中使用AOP实现权限管理

权限管理的实现方法有很多种,也有很多集成不错的框架。现在用AOP和自定义注解实现一个简单易理解的权限管理~ 默认已经有做好了RBAC(role based access control),基于角色的访问控制。就是数据库中已经有了用户表,角色表,权限表…