docker 第三期上 容器数据卷 挂载

本文介绍了如何使用Docker数据卷实现容器数据的持久化,通过`-v`参数将宿主机目录挂载到容器内,确保即使容器删除数据也不会丢失。此外,还详细解释了`--volumes-from`选项,它允许将一个容器的数据卷挂载到另一个容器中,实现了数据的共享。通过实例展示了挂载操作,并提供了`docker inspect`命令检查挂载是否成功。最后,强调了挂载卷在启动新容器时的必要性和其生命周期特点。
摘要由CSDN通过智能技术生成

前言

在有些场景下,我们可能会去使用mysql容器,但是作为数据库,我们肯定是要保证数据的安全与稳定,而不是当容器被删了之后,对应存储的数据也没有了。并且我们如果需要改数据库配置,也不可能说每次都进入到容器里面去修改。所以这个时候就推荐容器挂载技术了,将容器内的数据挂载到宿主机上,保证持久化和稳定性。接下来我们来看看具体的操作。

执行命令

为了更好的显示操作步骤,我们先从创建文件目录开始

root@VM-8-11-ubuntu:/home# pwd
/home
root@VM-8-11-ubuntu:/home# mkdir lnmp  // 用于存放后期我们要放的web环境数据,挂载目录基本在这
root@VM-8-11-ubuntu:/home# cd lnmp/
root@VM-8-11-ubuntu:/home/lnmp# docker run -p 8080:80 --name some-nginx -v /home/lnmp/nginx:/usr/share/nginx/html:ro -d nginx
d4a19ff0d273b48e4a0f9178fcd1b903a340ed4f49854b65edc3d24ba2b84054
root@VM-8-11-ubuntu:/home/lnmp# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
d4a19ff0d273   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   some-nginx
// 此时我们去访问网站就可以看到nginx已经运行成功了

在这里插入图片描述

root@VM-8-11-ubuntu:/home/lnmp# ls
nginx								 // 我们看到生成了一个目录,接下来看看能不能与容器同步
root@VM-8-11-ubuntu:/home/lnmp/nginx# ls
test.txt 							 // 在宿主机中创建了一个测试文件,我们再进入容器查看
root@VM-8-11-ubuntu:/home/lnmp/nginx# docker exec -it some-nginx /bin/sh
# cd /usr/share/nginx/html
# ls
test.txt  // 这时容器里也有这个文件了

–volumes-from

root@VM-8-11-ubuntu:/home/centos# docker run -it --name=mycentos -v /home/centos:/home/centos centos
root@VM-8-11-ubuntu:/home/centos# docker run -it --name=mycentos01 --volumes-from=mycentos centos
// 验证下
root@VM-8-11-ubuntu:/home/centos# ls
text.txt
root@VM-8-11-ubuntu:/home/centos# docker exec -it mycentos /bin/sh
sh-4.4# cd /home/centos
sh-4.4# ls
text.txt
sh-4.4#

root@VM-8-11-ubuntu:/home/centos# docker exec -it mycentos01 /bin/sh
sh-4.4# cd /home/centos
sh-4.4# ls
text.txt

// 我们可以看到两个容器内都有txt文件了

解析命令

docker run -p 8080:80 --name some-nginx -v /home/lnmp/nginx:/usr/share/nginx/html:ro -d nginx
说明:
-p 8080:80 宿主8080 映射容器的80端口
-v /home/lnmp/nginx:/usr/share/nginx/html:ro 这个就是挂载了,/home/lnmp/nginx 宿主目录 /usr/share/nginx/html 容器目录 ro 代表只读

注意

如果想要查看是否挂载成功 可以使用 docker inspect 容器id查看

"HostConfig": {
            "Binds": [
                "/home/centos:/home/centos"  // 挂载地址
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },

总结

  • 启动新容器的时候挂载卷必须有–volumes-from,你想同步那个 就from哪个
  • 这个卷的生命周期是持续到没有容器为止
  • 如果你使用-v将数据持久化到宿主机上容器删除也不会丢失
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值