Docker学习之:Data Volume

这一节开始之前呢给大家介绍一个把文件上传到服务器里面的工具

vagrant plugin install vagrant-scp
sudo vagrant scp ../chapter5/labs/ docker-node1:/home/vagrant/labs

这里大家需要注意的一点就是如果你用sudo创建的虚拟机,你就一定要使用sudo执行上面的命令不然它会报uid不对的情况,如果你的/home/vagrant/labs没有权限你也可以

sudo chmod 777 labs/

我们首先在后台运行一个名字为mysqlone的mysql容器

sudo docker run -d --name mysqlone -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
stevendeAir:chapter4 steven$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
ed5f4ee8b42d        mysql               "docker-entrypoint.s…"   16 seconds ago      Up 26 seconds       3306/tcp            mysqlone
stevendeAir:comment steven$ docker volume ls
DRIVER              VOLUME NAME
local               6e4fbcba13c479fa9dd8a036273661a6700210c21ddfd4bca4504e562fc9ca95

此时我们发现多了一个数据卷,然后我们看一下volume详细的细节

stevendeAir:comment steven$ docker volume inspect 6e4fbcba13c479fa9dd8a036273661a6700210c21ddfd4bca4504e562fc9ca95
[
    {
        "CreatedAt": "2018-04-22T03:34:29Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/6e4fbcba13c479fa9dd8a036273661a6700210c21ddfd4bca4504e562fc9ca95/_data",
        "Name": "6e4fbcba13c479fa9dd8a036273661a6700210c21ddfd4bca4504e562fc9ca95",
        "Options": {},
        "Scope": "local"
    }
]

然后我们在创建一个

sudo docker run -d --name mysqltwo -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
stevendeAir:chapter4 steven$ sudo docker volume ls
DRIVER              VOLUME NAME
local               5fc6196e1a061041eb82dfb9094199ff29e9dc42c59adab9da9c223e08f2c80c
local               6e4fbcba13c479fa9dd8a036273661a6700210c21ddfd4bca4504e562fc9ca95

接下来我们把这两个容器停止并删除

sudo docker stop mysqlone mysqltwo
sudo docker rm mysqlone mysqltwo
stevendeAir:chapter4 steven$ sudo docker volume ls
DRIVER              VOLUME NAME
local               5fc6196e1a061041eb82dfb9094199ff29e9dc42c59adab9da9c223e08f2c80c
local               6e4fbcba13c479fa9dd8a036273661a6700210c21ddfd4bca4504e562fc9ca95

但是同学们我们的volume还是存在的,但是这个volume的名字有点太长了,不知道大家发现了没有,我们可以给它起个别名,我们先把这两个volume删除
我们重新创建mysqlone

stevendeAir:chapter4 steven$ sudo docker run -d -v mysql:/var/lib/mysql --name mysqltwo -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
526b4bf79c59f0dd50fe1b5c36ed67987d5481d0c15f82828392d1a0b05abb34
stevendeAir:chapter4 steven$ docker volume ls
DRIVER              VOLUME NAME             
local               mysql

此时我们多了一个mysql的volume,那么现在我们就来验证一下到底有没有起作用。。。。我们首先进入到mysqlone 容器里面

stevendeAir:chapter4 steven$ sudo docker exec -it mysqltwo /bin/bash
root@526b4bf79c59:/# mysql -u root
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
create database docker; //我们创建一个数据库
exit

然后我们强制删除正在运行的容器

stevendeAir:chapter4 steven$ sudo docker rm -f mysqltwo
mysqltwo

那么现在我们在创建一个mysqlone的container,我们还用之前的volume看看可不可以

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| docker             |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

我们发现mysqltwo的databases是在的,怎么样小伙伴们我这里看的差不多了,你学会了嘛!!!!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么模棱两可的选择题,总会选择错误的那个;为什么每次过马路,总会遇到红灯闪烁;为什么要坐的公交车,总会来不及错过...
    李书仁阅读 310评论 0 0
  • 接手了一项新任务呢。
    Aliciahappy1127阅读 258评论 0 0
  • 践行发光……理事出彩…… 思悟聚光……理性充盈…… 成文放光……理论传播…… 今天上午,开心老师与宁阳复圣...
    晓行育童阅读 332评论 0 0