dockerfile

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

相关推荐
阿明628 分钟前
Linux进程【Linux】
linux·运维·服务器
Android系统攻城狮41 分钟前
Linux Gstreamer深度解析之gst_audio_resampler_update调用流程与实战(三十)
linux·运维·服务器·gstreamer音视频·音视频进阶
微信ipad协议开发1 小时前
微信视频号自动化:内容发布与互动的 API 实现
运维·微信
蓝速科技4 小时前
会议室门牌签到功能选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
逐流人4 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
酣大智7 小时前
网络协议计时器 & 发包间隔汇总
运维·网络·tcp/ip
云运维笔记13 小时前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
码农学院15 小时前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi15 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事15 小时前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯