docker -v挂载文件时遇到的坑

  1. 挂载分为文件挂载和目录挂载
  2. 文件挂载时,宿主机需要自己提前创建好文件,不然会出问题。自己不创建文件的话 执行完命令后会将它创建成目录
  3. 挂载目录时 可以不自己创建目录,会根据目录的挂载路径将 容器内的目录下的文件夹拷贝过来
  4. 挂载成功后,如果修改挂载文件的内容,容器内的文件不会实时更新,需要重启容器。如果修改的是挂载目录下的文件,则会实时更新,所以推荐挂载目录
  5. 下面的nginx容器运行示例
  6. docker run --name nginx100 -p 9001:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d:/etc/nginx/conf.d -d nginx

如果遇到容器运行起来返回了容器id,但是docker ps 发现并没有运行,请严格按照上述步骤。

真实开发版本:
可供参考的运行命令:这是后期显示的,自己拿捏。

docker run
–name=nginx
–hostname=iZ8vbbq5i0f69sglswx8ddZ
–env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
–env=NGINX_VERSION=1.19.2
–env=NJS_VERSION=0.4.3
–env=‘PKG_RELEASE=1~buster’
–volume=/opt/dockervols/nginx/ssl:/etc/nginx/ssl
–volume=/opt/dockervols/nginx/logs:/var/log/nginx
–volume=/opt/dockervols/nginx/nginx.conf:/etc/nginx/nginx.conf
–volume=/opt/dockervols/nginx/html:/usr/share/nginx/html
–volume=/opt/dockervols/nginx/conf.d:/etc/nginx/conf.d
–network=host
–expose=80/tcp
–restart=always
–label=‘maintainer=NGINX Docker Maintainers docker-maint@nginx.com
–log-opt max-size=100m
–log-opt max-file=3
–detach=true
nginx:1.19
nginx -g ‘daemon off;’

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Docker挂载指的是将主机上的目录或文件系统挂载到容器中,使容器可以访问主机上的文件或目录。挂载可以让容器与主机之间共享数据,方便容器中的应用程序对主机上的文件进行读写操作。同挂载还可以让容器中的数据得以持久化,即使容器被删除,挂载的数据也不会丢失。 Docker挂载可以使用`-v`参数或者`--mount`参数来实现。`-v`参数是较早期的挂载方式,而`--mount`参数可以提供更多的挂载选项。挂载的语法为: ``` docker run -v /host/path:/container/path image_name ``` 或 ``` docker run --mount type=bind,source=/host/path,target=/container/path image_name ``` 其中,`/host/path`是主机上的目录或文件系统路径,`/container/path`是容器中的目录或文件系统路径。Docker将主机上的目录或文件系统挂载到容器中的`/container/path`目录或文件系统中,使得容器可以访问主机上的文件或目录。 除了`type=bind`,`--mount`参数还支持其他类型的挂载方式,例如`tmpfs`和`volume`。`tmpfs`类型的挂载可以将主机上的目录或文件系统挂载到容器中的一个临文件系统中,而`volume`类型的挂载可以将主机上的目录或文件系统挂载Docker Volume中,以便其他容器可以共享这个Volume。 ### 回答2: Docker挂载是指将主机文件系统中的目录或文件Docker容器中的对应目录或文件进行关联,实现在不修改容器镜像的情况下对容器内部进行文件操作的功能。它通过将主机文件系统中的目录或文件映射到容器中的对应位置,可以在容器内部读取、写入和修改主机文件系统上的文件Docker挂载的过程可以分为两个步骤。首先,需要在运行容器使用"-v"或"--mount"参数指定要进行挂载的主机目录或文件以及对应的容器目录。其次,当容器在运行过程中对挂载目录或文件进行操作,实际上操作的是主机文件系统上的对应目录或文件Docker挂载具有以下几个优点。首先,它实现了主机与容器之间的文件共享,使得容器可以方便地访问主机上的文件资源。其次,挂载可以使容器在运行过程中对文件进行修改和写入,这对于一些需要持久化储存数据的应用非常重要。此外,挂载还可以实现容器与主机之间的文件共享,用于多个容器之间进行文件共享和数据交换。 然而,Docker挂载也有一些注意事项。首先,当主机文件系统上的文件被容器修改后,主机上的文件也会相应地被修改,因此需要谨慎处理对文件的操作。其次,当挂载目录或文件在主机上不存在,容器可能无法正常执行,因此在进行挂载需要确保目录或文件存在并且具有合适的权限。最后,挂载的目录或文件可能会受到主机系统的限制,例如文件系统的类型、权限等,需注意处理可能遇到的问题。 总之,Docker挂载是一种实现主机与容器之间文件共享和数据交换的机制,它极大地方便了容器的使用和文件的管理。通过合理的使用挂载功能,可以有效地利用Docker的灵活性和便携性。 ### 回答3: Docker 挂载是指将主机上的文件或目录与 Docker 容器中的文件系统进行关联,从而使容器能够访问主机上的文件。通过挂载,可以实现主机与容器之间的文件共享和数据交互。 Docker 提供了多种挂载方式,包括目录挂载文件挂载。目录挂载是将主机上的目录映射到容器中的指定路径,这样容器中的应用程序就可以读取和写入主机上的文件文件挂载则是将主机上的单个文件映射到容器中,容器可以直接读取和修改该文件。 使用 Docker 挂载的好处是可以方便地修改容器中的文件,而无需重新构建镜像。例如,在开发过程中,可以将代码目录挂载到容器中,这样在主机上修改代码后,容器中的代码也会自动更新,从而实现实调试。同,使用挂载还可以保护容器中的数据,将重要的数据文件存储在主机上,以防容器被删除或重新创建。 要实现挂载,可以使用 Docker 命令行中的 `-v` 参数来指定挂载的目录或文件路径。例如,`docker run -v /host/path:/container/path` 表示将主机上的 `/host/path` 目录挂载到容器中的 `/container/path` 路径。 需要注意的是,如果要挂载主机上的文件或目录,需要确保路径存在并有相应的读写权限。此外,挂载的路径必须在容器的文件系统中是空的,否则挂载可能会失败。 总而言之,Docker 挂载是一种非常有用的功能,可以实现主机和容器之间的文件共享和数据交互。通过挂载,可以方便地修改容器的文件,并保护容器中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值