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

相关推荐
努力的小T22 分钟前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
东风微鸣2 小时前
TTRSS 迁移实战
docker·云原生·kubernetes·可观察性
转身後 默落4 小时前
04.Docker 镜像命令
docker·容器·eureka
IT_张三4 小时前
Docker+Kubernetes_第一章_Docker入门
java·docker·kubernetes
jessezappy4 小时前
记录:Docker 安装记录
docker·安装·ollama·软链接
三天不学习4 小时前
如何在 Ubuntu 上安装 Docker:详细步骤指南
ubuntu·docker·eureka
企鹅侠客5 小时前
kube-proxy怎么修改ipvs规则?
云原生·kubernetes·kubelet
仇辉攻防5 小时前
【云安全】云原生- K8S 污点横移
web安全·网络安全·云原生·容器·kubernetes·k8s·安全威胁分析
stone.eye6 小时前
阿里云通过docker安装skywalking及elasticsearch操作流程
elasticsearch·阿里云·docker·skywalking
望获linux7 小时前
如何在望获实时 Linux & 京博航友善 NanoPC-T6 上部署 Docker
linux·运维·服务器·docker·eureka·开源软件