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

相关推荐
二十雨辰6 分钟前
[linux]docker基础
linux·运维·docker
time never ceases39 分钟前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
YCyjs1 小时前
K8S群集调度二
云原生·容器·kubernetes
Hoxy.R1 小时前
K8s小白入门
云原生·容器·kubernetes
MonkeyKing_sunyuhua3 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林3 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€4 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘4 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
全能全知者5 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
阿尔帕兹7 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker