docker的数据卷和自定义镜像

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的而压缩文件

相关推荐
程序猿小三1 小时前
Linux下基于关键词文件搜索
linux·运维·服务器
虚拟指尖2 小时前
Ubuntu编译安装COLMAP【实测编译成功】
linux·运维·ubuntu
椎4953 小时前
苍穹外卖前端nginx错误之一解决
运维·前端·nginx
刘某的Cloud3 小时前
parted磁盘管理
linux·运维·系统·parted
极验3 小时前
iPhone17实体卡槽消失?eSIM 普及下的安全挑战与应对
大数据·运维·安全
爱倒腾的老唐3 小时前
24、Linux 路由管理
linux·运维·网络
yannan201903133 小时前
Docker容器
运维·docker·容器
_清浅3 小时前
计算机网络【第六章-应用层】
运维·服务器·计算机网络
正在努力的小河4 小时前
Linux 自带的 LED 灯驱动实验
linux·运维·服务器
李子圆圆4 小时前
电力专用多功能微气象监测装置在电网安全运维中的核心价值是什么?
运维·安全