docker_practice/image/dockerfile/volume.md
Tao Wang 5aec4fae19 重写定制镜像章节
由于定制镜像是 Docker 使用环境的重中之重,因此将原来的 `image/create.md` 扩展为4篇:`image/commit.md`, `image/build.md`, `image/dockerfile/*`, `image/other.md`。其中 `dockerfile` 进一步扩展,包括大部分指令详解。

由于 `image/dockerfile/*` 已经涵盖了 `dockefile/*` 的内容,并且增加了很多。因此去掉了原有的 `dockerfile/` 章节。从另一个角度来看,相当于是将后续 `dockerfile` 章节前移。
Dockerfile 是镜像构建必须掌握的技能,在介绍镜像定制的时候,就应该将其详细讲解。

将 `image/save_load.md` 合并到 `image/other.md` 并重写。docker import, export, save, load 是不常使用的命令,他们是早期 Docker 生态环境不完善的时候留下来的东西,现在已经不推荐使用,因此将这些方法合并到一篇里作为了解即可。

Signed-off-by: Tao Wang <twang2218@gmail.com>
2016-11-26 05:02:43 +11:00

21 lines
1.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### VOLUME 定义匿名卷
格式为
* `VOLUME ["<路径1>", "<路径2>"...]`
* `VOLUME <路径>`
之前我们说过容器运行时应该尽量保持容器存储层不发生写操作对于数据库类需要保存动态数据的应用其数据库文件应该保存于卷(volume)后面的章节我们会进一步介绍 Docker 卷的概念为了防止运行时用户忘记将动态文件所保存目录挂载为卷 `Dockerfile` 我们可以事先指定某些目录挂载为匿名卷这样在运行时如果用户不指定挂载其应用也可以正常运行不会向容器存储层写入大量数据
```Dockerfile
VOLUME /data
```
这里的 `/data` 目录就会在运行时自动挂载为匿名卷任何向 `/data` 中写入的信息都不会记录进容器存储层从而保证了容器存储层的无状态化当然运行时可以覆盖这个挂载设置比如
```bash
docker run -d -v mydata:/data xxxx
```
在这行命令中就使用了 `mydata` 这个命名卷挂载到了 `/data` 这个位置替代了 `Dockerfile` 中定义的匿名卷的挂载配置