docker(容器挂载卷)

  • 挂载卷(linux地址/容器地址)

docker run -it -v /root:/usr/share/nginx/html -p 80:80 nginx

  • 例如:开启mysql 挂载数据目录

-d 后台运行
-p 端口映射(宿主端口:容器端口)
-v 挂载目录卷(宿主路径:容器路径)
-e 配置容器(设置容器配置)
--name 容器别名
docker run -d -p 3310:3306 -v/home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名和匿名挂载

  • 匿名挂载

-v 容器内路径(不指定宿主机路径)
docker run -d -P --name nginx01 -v /etc/nginx nginx

  • 查看所有 卷 (volume)

docker volume ls

[root@z ~]# docker volume ls
DRIVER    VOLUME NAME
local     55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5
  • 查看挂载情况
[root@z ~]# docker volume inspect 55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5
[
    {
        "CreatedAt": "2021-07-09T05:01:45-04:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5/_data",
        "Name": "55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5",
        "Options": null,
        "Scope": "local"
    }
]

  • 具名挂载

-v(卷名:容器内路径)
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx

[root@z ~]# docker volume ls
DRIVER    VOLUME NAME
local     55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5
local     juming-nginx
  • 查看挂载情况
[root@z ~]# docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2021-07-11T22:34:11-04:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
        "Name": "juming-nginx",
        "Options": null,
        "Scope": "local"
    }
]

  • 所有docker容器内的卷,没有指定目录的情况下都是在

/var/lib/docker/volumes/***/_data

通过具名挂载可以方便找到我们的一个卷,最好使用具名挂载

  • 如何确定具名、匿名还是指定路径挂载:

-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 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作的

你可能感兴趣的:(docker(容器挂载卷))