Docker使用教程(2): 数据卷的使用以及使用docker安装mysql

一. 前言

   许久没有更新, 是我偷懒了. 后果也是很严重的, 至少为了写这篇文章我又复习了半个小时, 哈哈. 今天写的是docker中的数据卷, 我们开始吧...

二. 什么是数据卷? 它有什么好处?

   回答上述两个问题之前我先提出一个问题: 经过上一篇文章的入门, 我们学会了docker的基本使用, 诸如拉取镜像、启动容器之类的操作. 那假如我们不小心把容器删除了, 那容器中的数据也会随之消失, 这显然是不对的. 这时我们就需要将容器中的文件备份出来才行, 怎么做?

   docker为我们提供了一个cp命令, 虽然不是本文主题, 但还是有必要提一下, 使用如下:
   docker cp 容器id:/源路径 /目标路径 ---将容器下的文件拷贝到linux
   docker cp /源路径 容器id:/目标路径 ---或者将linux下的文件拷贝到容器

这么看可能有迷...我来演示一下吧, 下图中, 我是将linux系统/home目录下的test.txt文件拷贝到docker容器的/opt目录下:

docker的cp命令.png

   很简单吧? 如果要将docker中的文件拷贝出来, 只需要对调源路径和目标路径就可以了. 不过这种方式虽然简单, 但显然满足不了我们备份的需求. 比如我们mysql的数据文件, 不可能写个脚本就干这事儿, 一是消耗性能, 二是可能数据还不一定同步.

   假如我们能把docker容器内部的文件和linux上的文件建立一个关联, 任何一边修改变动时, 另一边自动同步那该多好. 哈哈, 凑巧的是, docker的数据卷就是干这个事情的. ok, 下面我就来记录一下安装mysql并使用数据卷备份和同步数据文件到linux吧.

三. 使用docker搭建mysql并挂载数据卷

(1) 可以使用-v来挂载路径: docker run -it -v 主机目录:容器目录
(2) 拉取mysql:8镜像, docker pull mysql:8
(3) 启动mysql:8, docker run -d -it --rm -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 --name mysql01 mysql:8

参数说明:
--rm # 容器停止即删除实例, 可以不加
-e # 添加环境变量, MYSQL_ROOT_PASSWORD设置密码
-v # 挂载数据卷, 可以使用多个-v来挂载多个数据卷, 挂载之后, 挂载的两个目录下的文件会进行同步

(4) 不过我遇到一个问题, 就是将mysql容器内部的配置文件挂载到linux外部之后, 会启动失败或配置文件没有同步到宿主机. 具体原因在下也不知道, 欢迎留言告知. 不过, 据我测试, 只要将配置文件事先创建好, 再进行挂载就可以了. 以下是官网的说法:

docker-mysql配置文件.png

官网的示例中挂载的是一个目录, 显而易见那个/my/custom目录中已经存在一个自定义的配置文件, 而且还说是一个叫做config-file.cnf文件. 所以, 我也创建了一个扔在目录下, 并且什么都没配:

docker-mysql配置文件2.png

随后挂载并启动了它:

docker run -itd -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql:8

redis同理:
但是需要下载一份儿配置文件, 如果想要自定义配置的话:
wget http://download.redis.io/redis-stable/redis.conf

由于容器可能取不到宿主机的东西, 给它开放权限: chmod 666 redis.conf

另外注意, 如果docker使用-d参数, 则表示守护进程模式启动, 所以配置文件中的daemonize需要保持为no
daemonize no

docker run -itd -p 6379:6379 -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data --name redis5 redis:5.0.14 redis-server /etc/redis/redis.conf

然后它启动成功了, 不过我想应该是配置文件需要自己创建的原因, 因为我在不挂载配置文件的情况下进入过mysql的容器去查看配置文件, 里边儿的配置文件也是什么都没有配置.

(5) 总而言之, 配置相关只需要挂载文件夹, 然后自己定义配置内容, 配置文件的名称可以是config-file.cnf。

(6) 这时候, 就算不小心将mysql的容器删除了也没有关系, 只要再次指定数据卷的挂载路径, 数据就回来啦.

四. 挂载数据卷的三种方式及区别

挂载的方式分别有如下三种:
(1) 匿名挂载: -v 容器内路径.
比如: docker run -d -it --rm -p 8080:8080 --name tomcat01 -v /usr/local/tomcat/webapps tomcat:9
此时, tomcat的webapps会被挂载到宿主机的/var/lib/docker/volumes文件夹下, 并随机生成一个文件夹. 可以使用docker volumes ls命令查看有哪些匿名挂载的数据卷.

(2) 具名挂载: -v 卷名:容器内路径
比如: docker run -d -it --rm -p 8080:8080 --name tomcat01 -v tomcat01:/usr/local/tomcat/webapps tomcat:9
与匿名挂载的区别在于, 它在/var/lib/docker/volumes目录下生成的文件夹名不再是无意义的了, 而是你指定的名称, 如此处的tomcat01

(3) 指定路径挂载: -v 宿主机路径:容器内路径
这种方式就是上面演示的方式. 区别也是显而易见, 自定义了数据的保存位置.

好了, 数据卷的使用就记录到这里, 欢迎留言指正和交流

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容