Docker容器数据卷

使用数据卷

方式一:直接命令挂载 -v

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

docker run -it -v /home/test:/home centos /bin/bash

docker inspect 容器id            #查看容器信息

修该容器内的目录,主机对应的目录也会修改,相反修改主机的挂载目录文件,容器内也是会修改。即使容器没有启动也是如此。这样方便启动容器,把配置文件挂载在外面,进行修改。不用再进容器里面修改配置文件。

实战:挂载MYSQL

docker run -d -p 3310:3306 -v /home/mysql01/conf:/etc/mysql/conf.d -v /home/mysql01/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Xl5680429 --name mysql01 mysql:8.0;

#说明

-d        后台运行

-p        映射端口(主机端口:容器端口)

-v         数据卷挂载文件:第一个是挂载配置文件,第二个是挂载数据文件

-e        环境配置,配置密码

--name     容器名字

具名和匿名挂载

#匿名挂载

docker run -d -P --name nginx01 -v /etc/nginx nginx;

#具名挂载   docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx;

#这里只指定容器内的路径,没指定容器外的路径,可以通过 docker inspect查看。

# 查看所有卷“volume”的情况

docker volume ls;

#匿名挂载结果

DRIVER      VOLUME NAME                                  

local              fd931a191fcd9b0ced88f8d11595847b18764c5d6af21ac71bd7159d49638206 

#匿名挂载结果                                                                                                                                     

 DRIVER      VOLUME NAME                                                                                                         

 local             juming-nginx

#查看对应的路径

docker volume inspect juming-nginx

所有的docker容器内的卷,没有指定目录的情况下都是在“/var/lib/docker/volumes/卷名”

-v     容器内路径                                #匿名挂载

-v     卷名:容器内路径                        #具名挂载

-v /主机路径:容器内路径                    #指定路径挂载

拓展

#通过 -v 容器内路径,ro    rw 改变读写权限

ro    readonly    只读

rw   readwrite   可读可写

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;

#一定设定了权限 ro 说明这个路径只能通过主机来操作,容器内部无法操作!



数据卷容器

docker run -it --name docker02 --volumes-from docker01 centos:1.0

#使用--volumes-from  来共享一个文件。docker02共享docker01的文件,如果建立docker03也是一样,就是docker01删除后还是依旧可以访问,属于拷贝共享,在任何一个容器内增删改文件,其他容器都会同意操作。

多个MySQL同步数据

docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=Xl5680429 --name mysql02 --volumes-from mysql01 mysql:8.0

结论:

容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

但是一但你持久化到了本地,这个时候,本地的数据是不会删除的!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 思考: 1.Docker容器删除后,在容器中的数据还在吗?2.Docker 容器和外部机器可以直接交换文件吗?3....
    大狗狼阅读 2,649评论 0 0
  • 1.数据卷是什么 先来看看Docker的理念: 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们...
    Minority阅读 2,600评论 0 2
  • 是什么 docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之...
    渣渣进化论阅读 10,403评论 0 1
  • 1.Docker volume使用 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数...
    MoonMonsterss阅读 6,075评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,213评论 16 22

友情链接更多精彩内容