docker 的数据管理

docker 容器中数据主要有两种方式
数据卷( Data Volumes )

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录往载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于 Linux 下对目录进行的 mount 操作。
2.

数据卷容器(DataVolumes Containers)

如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用

docker 镜像结构的分层

镜像不是一个单一的文件,而是有多层构成。容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。

(1)dockerfile 中的每个指令都会创建一个新的镜像层

(2)镜像曾将被缓存和复用

(3)当 dockerfile 的指令修改了,复制的文件变化了或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效

(4)某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效

(5)镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件

docker 镜像的创建

创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建

1、基于现有镜像创建

docker run 创建并且启动容器,再通过docker exec/cp 等容器操作指定修改容器内容 ,再去用 docker commit 提交成新的镜像

2、基于本地模板创建

从网上先下载现有的镜像模板,或使用 docker export 到处本地容器快照模板,再用 docker import 将我们的快照导入成本地镜像

3、基于dockerfile创建
Dockerfile结构大致分为四个部分:

基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以"#"号开头的注释

dockerfile 常用指令
FROM 镜像

指定新镜像所基于的基础镜像,第一个指令必须为 FROM 指令,每创建一个镜像就需要一条 FROM指令
2.

MAINTAINER 名字

说明镜像的维护人信息
3.

RUN 命令

所基于的镜像上执行命令,并提交到新的镜像中
4.

ENTRYPOINT 【"要运行的程序","参数1","参数2"】

设定容器启动时第一个运行的命令及其参数。
5.

CMD 【"要运行的程序","参数1","参数2"】

启动容器时默认执行的命令或者脚本,dockerfile只能有一条 CMD命令,如有多条,只执行最后一条
6.

EXPOSE 端口号

指定新镜像加载到 Docker 时要开启的端口 EXPOSE 8090
7.

ENV 环境变量 变量值

设置一个环境变量的值,会被后面的 RUN 使用
8.

ADD 源文件/目录 目标文件/目录

将源文件复制到镜像中,源文件要与 Dockerfile 位于相同目录中,或者是一个 URL
9.

COPY 源文件/目录 目标文件/目录

只复制本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile 在相同的目录中
10.

复制代码
###### VOLUME \["目录"\]

在容器中创建一个挂载点
复制代码
###### USER 用户名/UID

指定运行容器时的用户
复制代码
###### WORKDIR 路径 /home

为后续的RUN、CMD、ENTRYPOINT 指定工作目录
复制代码
###### ONBUILD 命令【坑,注意】

指定所生成的镜像作为一个基础镜像时所要运行的命令
复制代码
###### healthcheck:

健康检查

dockerfile搭建lnmp

1、创建虚拟网关

2、Dockerfile 搭建nginx(容器IP 为 172.18.0.10)

将压缩包拖至nginx目录下

Vim编辑Dockerfile文件

生成镜像

创建容器并指定端口号和 ip

3、Dockerfile 搭建 mysql(容器IP 为 172.18.0.20)

在opt目录下创建mysql目录,并将mysql压缩包拖至目录

编辑vim Dockerfile文件

创建my.cnf文件

生成镜像

创建并启动容器

4、Dockerfile 搭建 php(容器IP 为 172.18.0.30)

Vim 编辑Dockerfile文件

生成镜像

创建容器

切换到mysql容器,进入数据库,创建名为wordpress的库,并赋权

5、浏览器访问:192.168.86.55/wordpress/index.php

相关推荐
Dobby_0529 分钟前
【Docker】容器网络探索(二):实战理解 host 网络
网络·docker·云原生
马达加斯加D9 小时前
k8s --- Intro
云原生·容器·kubernetes
Gauss松鼠会10 小时前
【openGauss】构建一个兼容Oracle模式支持创建package的openGauss的docker镜像
数据库·docker·oracle·opengauss
梁正雄12 小时前
16、Docker swarm-3
运维·docker·容器
Freshman小白13 小时前
python算法打包为docker镜像(边缘端api服务)
python·算法·docker
麦兜*13 小时前
Spring Boot 应用 Docker 监控:Prometheus + Grafana 全方位监控
spring boot·后端·spring cloud·docker·prometheus
爱吃糖的小秦同学13 小时前
Docker爆红且安装非C盘处理方案
运维·docker·容器
!chen14 小时前
k8s-应用部署和组件及常用命令
云原生·容器·kubernetes
亿牛云爬虫专家15 小时前
用 Playwright + 容器化做分布式浏览器栈:调度、会话管理与资源回收
分布式·docker·容器·浏览器·爬虫代理·新闻网站·playwright
tnan252216 小时前
基于阿里云效实现cicd记录
阿里云·ci/cd·docker·容器·自动化