• Docker 具名和匿名挂载


    一、匿名挂载

    1.启动一个nginx 容器

    语法格式:

    -v   容器内路径!

    [root@yang ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx
    328790a86f3b5956dabb636c02f8c006ec3c9688eda97dc66c2dd0e82b7855c

    2.查看所有 volume 的情况

    [root@yang ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               4dcdd5b0a408438d90683df372cbc31f0fc48497c4252f61cf9d9c2a03747c01

    以上匿名挂载的卷,就由系统随机生成一个乱码式的卷名,如上!

    3.这里发现,这种就是匿名挂载,在 -v 的时候只加容器内路径,没有加容器外路径!

    二、具名挂载

    1.重新启动一个nginx 容器

    语法格式:

    -v  卷名:容器内路径

    注:卷名前面不加路径/

    [root@yang ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
    00a30275a6db4650fb84915fdb725ec83815353aea7c913d61b319fa8e01074

    2.查看所有 volume 的情况

    [root@yang ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               4dcdd5b0a408438d90683df372cbc31f0fc48497c4252f61cf9d9c2a03747c01
    local               juming-nginx

    3.查看具名卷的信息

    [root@yang ~]# docker volume inspect juming-nginx
    [
        {
            "CreatedAt": "2021-01-27T15:54:14+08: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/xxx/_data”目录下。    # xxx为启动容器时设置的卷名

    # 进入具名挂载的目录查看卷内的数据,可以看到nginx的配置文件存在!

    [root@yang ~]# cd /var/lib/docker/volumes/juming-nginx/_data/
    [root@yang _data]# ls
    conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf

    !!!具名挂载可以方便找到一个卷,大多数情况下,推荐使用【具名挂载】

    三、如何确定是匿名挂载,具名挂载,或者是指定路径挂载?

    -v   容器内路径          # 匿名挂载
    
    -v   卷名:容器内路径       # 具名挂载
    
    -v   / 宿主机目录:容器内目录   # 指定路径挂载

    四、拓展

    1.通过 -v 容器内路径,ro rw 改变容器内权限

    ro    readonly   # 只读
    
    rw    readwrite    # 可读可写

    2.一旦设置了容器内权限,容器对我们挂在出来的内容就有限定了

    [root@yang _data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
    [root@yang _data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

    3. ro 只要看到ro,就说明这个路径只能通过宿主机来修改,容器内部无法操作!

  • 相关阅读:
    Java的常量接口思考,项目中的常量是放在接口里还是放在类里呢?
    有些时候会看到url参数上出现%BF之类
    mysql 取整
    MySQL使用判断
    java 获得当前时间前指定几个小时的时间?
    SVN集成compare4比较软件
    JAVA去重
    连接SQL常见问题
    springMVC项目部署 服务器启动spring容器报错bean未从类加载器中找到
    Java 中Timer和TimerTask 定时器和定时任务使用的例子
  • 原文地址:https://www.cnblogs.com/yangzp/p/14335648.html
Copyright © 2020-2023  润新知