docker的具名挂载与匿名挂载实现

大家好,今天我们分享一下docker 的具名挂载与匿名挂载

以这条命令举例

[root@localhost ~]# docker run -d -P --name nginx02  -v /etc/nginx/  nginx
d8e9b9084cf884e7e0d11c560c3f50d94f2d4a2d9c77fccb3f52b5cfd8e55392
[root@localhost ~]#

这里我们就没有给它指定端口: 它对应的外网端口是随即的

查看一下正在运行的容器:

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
d8e9b9084cf8   nginx          "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   0.0.0.0:49153->80/tcp, :::49153->80/tcp   nginx02
6d6fa6a4c6d7   5d0da3dc9764   "/bin/bash"              32 hours ago     Up 32 hours                                               nice_panini
[root@localhost ~]#

对应的外网端口是49153

我们可以使用浏览器上访问:http://192.168.1.12:49153

这是docker数据卷命令的帮助:

[root@localhost ~]# docker  volume  --help 

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.

这些都是匿名的挂载 ,因为没有给它起名字

DRIVER    VOLUME NAME
local     3f0cc224bb62dceae38c25d6eaee76512b39ec786590099f4b2930674640756f
local     8e16818bb95e740e59e5ef920e54751eb64db44f4cf43841a9c45aa6ad6646cc
local     686e9b7764c19581aea3107940fc28c68121759ce28b31fabc0fce00659ff7ca
local     882c0d1810e3ac6fddabcff2c65f1022605f450a6c49504edf57e78de14da1e5
local     1490f17c760b935d926fb1fedc7de4e0e07f1084fcf8c769c672d50f43757f8f
local     471762be4837d40ad175b7cfe74b81a51b4b3e752cb6f15e7e79d09ffc5f65fc
local     af4dc486d8335ec0e524c0e30a0ae037ef05dfa7a4ed3e4e0dd59954c5084a9e
local     c26b0f08ebdb140d91cb450313e9e314239c1c3553a612e6534154006aa19744
local     c52728c97a7ee672216ccb2d4392fa83bc480dd9646ddb5577e1124eb98e15b6

这里写一个具名挂载

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

看最后的一行,就是具名挂载

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     3f0cc224bb62dceae38c25d6eaee76512b39ec786590099f4b2930674640756f
local     8e16818bb95e740e59e5ef920e54751eb64db44f4cf43841a9c45aa6ad6646cc
local     686e9b7764c19581aea3107940fc28c68121759ce28b31fabc0fce00659ff7ca
local     882c0d1810e3ac6fddabcff2c65f1022605f450a6c49504edf57e78de14da1e5
local     1490f17c760b935d926fb1fedc7de4e0e07f1084fcf8c769c672d50f43757f8f
local     471762be4837d40ad175b7cfe74b81a51b4b3e752cb6f15e7e79d09ffc5f65fc
local     af4dc486d8335ec0e524c0e30a0ae037ef05dfa7a4ed3e4e0dd59954c5084a9e
local     c26b0f08ebdb140d91cb450313e9e314239c1c3553a612e6534154006aa19744
local     c52728c97a7ee672216ccb2d4392fa83bc480dd9646ddb5577e1124eb98e15b6
local     juming-nginx

显示数据卷的具体信息

[root@localhost ~]# docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2022-03-05T18:16:53+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/juming-nginx/_data",

我们可以通过具名挂载找到卷的位置,大多数情况下,我们使用具名挂载

关于docker的挂载问题,有三个比较容易混淆的概念: (区分的方式)

1.具名挂载:-v 参数 卷名:容器内路径

2.匿名挂载:-v 参数后面 没有写上容器之外的地址, docker 自己会在docker内部给你找个位置

3.指定路径挂载: -v /宿主机路径::容器内路径

这里有一个权限问题:

[root@localhost ~]# docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw  nginx
6590da464b6ea5cecf58f1cfcdfe2df35092383adb7aaddac4ca5d463367c979

rw :可读可写的权限
ro : 可读权限

[root@localhost ~]# docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro  nginx

这个会对我们挂载出来的内容进行限定

ro 权限说明命令只可以被宿主机操作,容器的内部将无法进行操作

平时不需要动它

到此这篇关于docker的具名挂载与匿名挂载实现的文章就介绍到这了,更多相关docker具名挂载与匿名挂载内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker匿名挂载和具名挂载的具体使用

    目录 数据卷volume 匿名挂载和具名挂载 数据卷的位置 数据卷volume 提到这个匿名挂在和具名挂载,其实要先普及一个知识,就是什么是volumes,这个volumes就是数据卷的意思.我们docker挂载会用到这个卷. 数据卷的用处就是一个可供一个或者多个容器使用的特殊目录,他绕过UFS就是什么联合文件系统,提供了很多功能: (1)数据卷可以多个容器共享或者重用 (2)对数据卷修改会立马生效 (3)对数据卷的更新不会影响镜像 (4)数据卷默认会一直存在,即使容器被删除了(结合2,3点特别

  • docker容器数据卷之具名挂载和匿名挂载问题

    目录 什么是容器数据卷 为什么需要容器数据卷 使用 如何查看是否使用了数据卷 具名挂载和匿名挂载 指定路径挂载 具名挂载 匿名挂载 容器与容器之间的数据共享 --volumes-from 什么是容器数据卷 容器数据卷就是目录的挂载,将我们的容器的目录挂载到宿主机上,从而实现打通宿主机和容器之间的文件共享功能: 为什么需要容器数据卷 docker理念就是将应用和环境打包成一个镜像:但是数据怎么办呢?且不说数据库,一个项目在运行过程种肯定会产生大量的日志,这些日志对开发人员来说是非常重要的, 因为有

  • docker的具名挂载与匿名挂载实现

    大家好,今天我们分享一下docker 的具名挂载与匿名挂载 以这条命令举例 [root@localhost ~]# docker run -d -P --name nginx02 -v /etc/nginx/ nginx d8e9b9084cf884e7e0d11c560c3f50d94f2d4a2d9c77fccb3f52b5cfd8e55392 [root@localhost ~]# 这里我们就没有给它指定端口: 它对应的外网端口是随即的 查看一下正在运行的容器: [root@localho

  • 解决docker run中使用 ./ 相对路径挂载文件或目录失败的问题

    docker-compose.yml文件中允许使用'./'相对路径 version: '3' ... volumes: - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro - ./mongo-volume:/data/db ... 会将当前路径下的init-mongo.js文件挂载到容器中的/docker-entrypoint-initdb.d/init-mongo.js,并且设置为只读方式; 会将当前路径下的mongo-

  • Docker 最常用的镜像命令和容器命令详解

    本文列出了 Docker 使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份.熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习 Docker 的镜像构建.备份恢复迁移.镜像仓库.网络.集群等等更多的内容. 镜像相关命令 官方文档:https://docs.docker.com/reference/ 查看镜像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZ

  • Docker容器数据卷原理及使用方法解析

    什么是容器数据卷 如果数据都在容器中,一旦容器删除,数据就会丢失! eg : mysql容器删了,就是我们常说的删库跑路. 需求:数据可以持久化,即时删掉容器,我们的数据还在 容器直接可以有一个数据共享的技术!Docker容器产生的数据,同步到本地! 这就是卷技术!目录的挂载,将我们容器的目录挂载到linux上面! 总结:卷技术就是为了实现数据的持久化和同步操作,容器间也是可以数据共享的 使用数据卷 方式一:直接使用命令来挂载 -v # 命令 docker run -it -v 主机的目录:容器

  • Python开发加薪利器之Docker的使用实践

    1. Docker概述 Docker为什么火,因为十分的轻巧. Docker是基于Go语言开发的. 1.1 虚拟机技术VS容器化技术 虚拟机技术: 资源占用 多冗余步骤多 启动慢 容器化技术:容器化技术不是模拟一个完整的操作系统. 1.2 名词概念 镜像(image) docker镜像好比是一个模版,可以通过这个模版来创建容器服务,mysql镜像==>run==>mysql01容器(提供服务),通过这个镜像可以创建多个容器. 容器(container) docker利用容器技术,独立运行一个或

  • docker中容器数据卷volume介绍

    目录 docker 容器数据卷volume 使用数据卷 方式一:直接使用命令挂载 -v 方式二:Dockerfile 数据卷容器 总结 docker 容器数据卷volume 如果数据都在容器中,那么我们删除容器的时候数据就会丢失,所以我们希望数据可以持久化. 例如MySQL容器,我们希望数据可以存储在本地,当MySQL容器删除的时候,数据不会丢失. 容器之间可以有一个数据共享的技术,Docker容器中产生的数据,同步到本地,这就是卷技术.也就是数据挂载技术,将我们容器内的目录,挂载到Linux上

  • 详解挂载运行的docker容器中如何挂载文件系统

    前言 感觉最近很多人都在问docker相关的问题,关于怎么操作一个已经启动的docker容器的文件系统,首先我发现这非常困难,因为 mnt的命名空间. 为了登录进入一个已经启动的docker容器,我们需要这么做: 使用nsenter来在临时挂载点上挂载整个docker容器的文件系统. 创建一个特定目录的绑定挂载来当作卷来使用. 卸载临时挂载. 好吧,开始实践. 启动一个名为charlie的docker实例: $ docker run --name charlie -ti ubuntu bash

  • Docker中运行nginx并挂载本地目录到镜像中的方法

    1 从hup上pull镜像 docker pull nginx 2 创建将要挂载的目录 mkdir -p /data/nginx/{conf,conf.d,html,logs} 3 先要有配置文件才能启动容器 3.1 vim /data/conf/nginx.conf user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_co

随机推荐