惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
J
Java Code Geeks
雷峰网
雷峰网
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
V
Vulnerabilities – Threatpost
S
Securelist
The Hacker News
The Hacker News
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
AI
AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
博客园 - 司徒正美
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
Security Latest
Security Latest
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
U
Unit 42
V
V2EX
V2EX - 技术
V2EX - 技术
L
LINUX DO - 最新话题
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
Recorded Future
Recorded Future
P
Privacy & Cybersecurity Law Blog
美团技术团队
小众软件
小众软件
F
Fortinet All Blogs

云端的解构者 | 西行寺岩羊的博客

记录:傻逼win11美化插件导致资源管理器崩溃 炸鸡 武汉 最近在干嘛 当善良成为廉价品:为什么你的帮助换不来感激? Minecraft跨平台服务器搭建记录 防弹笔记法(草稿 CSS纸张阴影二三事 Docker:网络 Docker:DockerFile Docker:镜像讲解 Docker:基本命令 Spring:登录后逻辑:JWT、拦截器与ThreadLocal Spring:Redis
Docker:容器数据卷
西行寺岩羊 · 2025-05-14 · via 云端的解构者 | 西行寺岩羊的博客

Docker:容器数据卷

是什么?可以吃吗?

Docker 理念:把应用和环境打包成一个镜像
那么数据呢?如果数据都在容器里面,那把容器删了不就啥都没有了吗?
需求:数据持久化
比如:我有一个MySQL容器,删了就没有了,我想让数据存在本地而不是在容器里。

容器之间有一个数据共享的技术,Docker容器中产生的数据可以同步到本地。
这就是卷技术,目录的挂载,将我们容器内的目录,挂在到Linux上面。

1
mysql/usr/mysql -> linux/home/mysql

就是容器的持久化和同步操作,容器间的数据也可以共享

如何使用?

直接使用命令挂载 -v

1
docker run -it -v 主机目录:容器内目录

这样主机目录和容器内目录的文件会进行双向同步

实例

MySQL
1
docker run -d -p 1919:3306 -v /home/mysql/conf:/etc/mysql/comf.d -v /home/mysql/data:/var/lib/mysql -e ES_JAVA_OPTS=-Xms64m -Xmx512m -e MYSQL_ROOT_PASSWORD=114514 --name mysql-demo  mysql:latest

假设我们删除这个容器,本地的数据依旧不会丢失,这就实现了容器数据持久化的功能

具名和匿名挂载

匿名挂载
1
2
3
4
5
6
7
8
9
-v 容器内路径
docker run -d -P --name nginx01 -v /ect/nginx nginx
# 查看所有 volume 的情况
docker volume ls
DRIVER VOLUME NAME
local 9af6582b20e390febba278f366682dd8aaf6ab58f0e2b96c21f6eabd40ef5fb2
local 5462336c5e984de19ce4c89b9fbf66920409b9b165e5a5bb6a10c88916698487
local d2e5f63f05a5810ce371fe7a9c5f453c15405053018890ff8e0cee881a84eb9
# 这里发现,这种就是匿名挂载,我们在-V只写了容器内的路径,没有写容器外的路径!
具名挂载
1
2
3
4
5
6
7
8
9
10
-v 卷名:容器内路径
docker run -d -P --name nginx02 -v jvmk-nginx:/ec/nginx nginx
docker volume ls
DRIVER VOLUME NAME
...
local jvmk-nginx
# 查看卷
docker volume inspect jvmk-nginx
...
"Mountpoint":"/var/lib/docker/volumes/juming-ninx/_data",

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxxx/_data
我们通过具名挂载可以方便的找到我们的卷,大多数情况在使用的具名挂载

区别
1
2
3
-v 容器内路径                    #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载!

拓展
通过-v 容器内路径:ro / rw改变读写权限

1
2
3
4
# 只能从外部改变,无法在容器内改变
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
# 可读写
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

数据卷容器

就是专门用来提供数据卷的容器
创建一个容器A,让它管理数据卷,然后别的容器通过 --volumes-from 把它的数据挂过来用,还可以容器间的数据共享

1
2
3
4
# 创建一个数据卷容器
docker create -v /data --name data-container ubuntu
# 其他容器挂载 data-container 的数据卷
docker run -d --volumes-from data-container ubuntu

生命周期持续到没有人使用为止

Dockerfile

Dockerfile 就是用来构建 docker 镜像的构建文件(命令脚本)

创建一个dockerfile文件,名字可以随机,建议 dockerfile

1
2
3
4
5
6
# 文件内容 指令(大写) 参数
FROM centos
VOLUME ["vo1ume01","vo1ume02"]
CMD echo "----end----"
CMD /bin/bash
# 这里每个命令,就是镜像的一层

下一篇文章再讲