容器数据卷

2022-12-10  本文已影响0人  arkliu

docker是将应用和环境打包成一个镜像,如果数据都在容器中,那么删除容器后,数据就丢失了,
容器之间有一个数据共享的技术,目录的挂载,即将容器内的目录,挂载到linux宿主机上

使用-v命令挂载数据卷

docker run -it -v 外部宿主机目录:容器内目录 要启动的镜像名称 /bin/bash

lh@lh-pc:~$ docker run -it -v /home/lh/test:/home centos /bin/bash
[root@deaea451f3a1 /]#

上述命令挂载完以后,我们宿主机上/home/lh/test目录下的所有修改会同步到容器内的/home目录,容器内/home下的内容,也会同步到宿主机的/home/lh/test目录。

查看容器的挂载内容

使用docker inspect 容器id 来查看

lh@lh-pc:~/test$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
deaea451f3a1   centos    "/bin/bash"   27 minutes ago   Up 27 minutes             beautiful_williams
lh@lh-pc:~/test$ docker inspect deaea451f3a1
image.png

mysql同步数据

下载镜像

docker pull mysql:5.7

运行容器并做数据挂载,还需要配置mysql密码

-d 后台运行
-p  端口映射
-v  数据卷挂载
-e  环境配置
--name  容器名字
lh@lh-pc:~$ docker run -d -p 3310:3306 -v /home/mysql/config:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
c775e8129092ff4453b05976cda5d0c5680f71ab4bfff64ea3ffca650c4b82df
lh@lh-pc:~$ 

匿名挂在和具名挂载

匿名挂载

docker run -d -P --name nginx01 -v /etc/nginx nginx
lh@lh-pc:~$ docker volume ls
DRIVER    VOLUME NAME
local     b9611404bace9defeaa4661eaf05c229e66de4088662109040d5753de8c25bdd
local     eb6a48aa076af428b1ae9b4fd69398e47a31d6c4e6d4cc44fe7fd0a8a18f7b60

具名挂载

lh@lh-pc:~$ docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
51e4211f79e90652034e7c1a3cbf6c7eead259e6d2dfcda27111bc9fb6b2f87a
lh@lh-pc:~$ docker volume ls
DRIVER    VOLUME NAME
local     b9611404bace9defeaa4661eaf05c229e66de4088662109040d5753de8c25bdd
local     eb6a48aa076af428b1ae9b4fd69398e47a31d6c4e6d4cc44fe7fd0a8a18f7b60
local     juming-nginx

image.png

查看下这个卷

lh@lh-pc:~$ docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2022-11-17T10:37:30+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]
![

image.png](https://img.haomeiwen.com/i13167756/c3cab1732203064a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
所有的容器,在没有指定目录的情况下挂载,挂载的目录都是在/var/lib/docker/volumes

设置挂载权限

只读挂载,表示这个路径只能在宿主机上操作,容器内部无法操作
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
上一篇 下一篇

猜你喜欢

热点阅读