美文网首页我爱编程
Docker学习之:Data Volume

Docker学习之:Data Volume

作者: __apple | 来源:发表于2018-05-26 10:57 被阅读0次

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

    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是在的,怎么样小伙伴们我这里看的差不多了,你学会了嘛!!!!!!

    相关文章

      网友评论

        本文标题:Docker学习之:Data Volume

        本文链接:https://www.haomeiwen.com/subject/dmhudftx.html