当docker中容器运行时,如何将目录和宿主机进行挂载

这篇具有很好参考价值的文章主要介绍了当docker中容器运行时,如何将目录和宿主机进行挂载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

容器已运行,但还想挂载文件

容器已经运行起来了,突然想给容器的目录进行挂载,通常是在运行容器时加上 -v 命令进行挂载。运行起来的容器想挂载文件夹可以通过修改容器在宿主机的配置文件进行解决。

在配置文件中加入新的挂载

1.查看容器存放目录

[root@linuxchen ~]# docker info | grep 'Root'
 Docker Root Dir: /var/lib/docker

2.进入该目录

[root@linuxchen ~]# cd /var/lib/docker
[root@linuxchen docker]# ls
buildkit  containers  engine-id  image  network  
overlay2  plugins  runtimes  swarm  tmp  volumes

3.文件夹containers就包含的是各个容器的配置文件的目录

[root@linuxchen docker]# cd containers/
[root@linuxchen containers]# ls
01cd5154b4e4b36f3c70774cb22c9f61f6058b90383f423f7c8bb5b7d3e14d3b  9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2
0552b78c6b7eec42e1ef26767054bbcc273ce1ce45a669846bc180ef1047aa1c  9d23423647373b08215f3778ebca871baffd3375b6f5b7f23c226dab15a955c3
155d3b8a66bbdf5c7321cd90d9acbbc41d61f2bdce75dc0b86f42fc002bce87b  bb2567b9c2ddf9d9c7b5ad35c3a6fa20ca429e7e074c36db7c3ded50058e178c
3f1e1ca864b88e616e13359b2d919487b05103cc54a6d28280494d68fef0ba6c  bcd680044d1c8602f54f679a759306827b44cf62ded902596899a931f29790cc
6441463ea608447fc484937eceec7e55db1ac65c57c9c7e4e9ab6316d7504c0f  c957b6f352686df7aaa03ae14357dce9c496803e15f660ab204f3d1654c63221
6e2afdb382e6e78ebfae28cd35fca65004822906be8c6befe88d9b8b8417376a  d997473f71241688421081319df0dd6bbca888fc072e3713311c269fe07f6051
900e4b6fa19cff7fb2444fec93e2f041e226e48fdae86fe7095d232936cc5824  f67880be8e92c2262290244f7ed6b889cc3361a49adb0ce26c6f91f8aeab69f9
9301eedc7ea843d39da502e4c1a37e1c88b8401e21893a8b5001f6b9ebccf76c  fecaaaf35867f448b298f05a1f1da3a289533fb6be422edd49e7431f6828e09f
993633e3936dd583cd0bfb64716ac32b6b7a305b037411bb91d20ea5c38046b8  ffb4fa8fbeda9724d72c6d118090ed9b6d8564fa6fbc56bb93e47d6e7cededbf

4.查看你的容器id,容器id就是配置目录的前缀名,cd进该容器的配置文件夹(粘贴上容器id,使用tab补全即可)

[root@linuxchen containers]# docker  ps
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS          PORTS                               NAMES
9a26f7183290   nginx     "/docker-entrypoint.…"   2 days ago   Up 35 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
[root@linuxchen containers]# cd 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2/
[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# ll
total 404
-rw-r----- 1 root root 376531 Nov 19 16:02 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2-json.log
drwx------ 2 root root   4096 Nov 17 13:05 checkpoints
-rw------- 1 root root   3519 Nov 19 15:33 config.v2.json
-rw------- 1 root root   1585 Nov 19 15:33 hostconfig.json
-rw-r--r-- 1 root root     13 Nov 19 15:33 hostname
-rw-r--r-- 1 root root    174 Nov 19 15:33 hosts
drwx--x--- 2 root root   4096 Nov 17 13:05 mounts
-rw-r--r-- 1 root root    149 Nov 19 15:33 resolv.conf
-rw-r--r-- 1 root root     71 Nov 19 15:33 resolv.conf.hash

5.配置config.v2.json和hostconfig.json

挂载需求:1.将宿主机的文件夹 /root/music 和容器中的文件夹 /usr/share/nginx/html/music进行挂载
                  2.将宿主机的文件夹/root/images 和容器中的文件夹 /usr/share/nginx/html/images进行挂载 

5.0 !!! 修改配置文件前一定要关掉容器并且停掉docker服务,否则配置过的内容会被冲刷掉

                 在关闭docker时,假如跟我一样出现了docker.socket并未关闭,一定要使用命令systemctl stop docker.socket 将其关闭再去关闭docker

[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# docker stop 9a26f7183290
9a26f7183290
[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# systemctl stop docker.socket
[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# systemctl stop docker

注:要修改的两个配置文件都是json文件,如果使用vi或者vim打开后的文件内容不是格式化的JSON格式,可在vim中使用命令:%!python3 -m json.tool 来格式化文件内容,以方便查看和修改。

5.1 配置config.v2.json

config.v2.json文件中找到MountPoints,配置如下,只需更改为你的目录即可。要注意逗号的问题,符合json格式。

    "MountPoints": {
        "/usr/share/nginx/html/images": {
            "Source": "/root/images",
            "Destination": "/usr/share/nginx/html/images",
            "RW": true,
            "Name": "",
            "Driver": "",
            "Type": "bind",
            "Propagation": "rprivate",
            "Spec": {
                "Type": "bind",
                "Source": "/root/images",
                "Target": "/usr/share/nginx/html/images"
            },
            "SkipMountpointCreation": false
        },
        "/usr/share/nginx/html/music": {
            "Source": "/root/music",
            "Destination": "/usr/share/nginx/html/music",
            "RW": true,
            "Name": "",
            "Driver": "",
            "Type": "bind",
            "Propagation": "rprivate",
            "Spec": {
                "Type": "bind",
                "Source": "/root/music",
                "Target": "/usr/share/nginx/html/music"
            },
            "SkipMountpointCreation": false
        }
    },

5.2 配置hostconfig.json

 "Binds": [
        "/root/music:/usr/share/nginx/html/music",
        "/root/images:/usr/share/nginx/html/images"
    ],

6.重启docker 重启容器

[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# systemctl start docker
[root@linuxchen 9a26f71832905af40316ff2a17d709f22c658de0276677e6bd980f350e3d30a2]# docker start 9a26f7183290
9a26f7183290

7.查看文件挂载情况

    宿主机

[root@linuxchen music]# ls
jay2.mp3  jay.mp3  withoutyou.mp3  wozaideng-suxingjie.mp3  zood.mp3

    容器文章来源地址https://www.toymoban.com/news/detail-824803.html

root@9a26f7183290:/usr/share/nginx/html/music# ls
jay.mp3  jay2.mp3  withoutyou.mp3  wozaideng-suxingjie.mp3  zood.mp3

到了这里,关于当docker中容器运行时,如何将目录和宿主机进行挂载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker从容器中项目如何访问到宿主机MYSQL

            使用 Docker 能实现服务的容器化,并使用容器间网络在它们之间进行通信。有时您可能需要一个容器来与宿主机上非容器化的服务通信。以下是如何从 Docker 容器中访问本地主机或 127.0.0.1的具体方法。         适用于 Windows 和 Mac 的 Docker Desktop 18.03+ 支持 host.

    2024年02月12日
    浏览(41)
  • Docker】容器里面拷文件到宿主机[或]宿主机拷文件到容器里面

    【Docker】容器里面拷文件到宿主机[或]宿主机拷文件到容器里面 - 知乎 答:在宿主机里面执行以下命令 docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 示例: 假设容器名为webnphp,要从容器里面拷贝的文件路为: 现在要将tox.ini从容器里面拷到宿主

    2024年02月06日
    浏览(62)
  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(42)
  • 【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本

    我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作。 注意: 要先安装 sshpass命令才行。 Dockerfile文件可以在你部署容器的时候自动安装。 docker部署springboot项目

    2024年02月11日
    浏览(63)
  • Docker挂载-宿主机软连接目录-问题

    挂载宿主机软连接的路径问题【 -v /usr/local/nginx/:/home/test/nginx/ 】,软连接可以映射任何路径,但有一个前提是:其所映射的路径必须要在容器中存在,否则就无法访问到数据 1、如果软连接路径在容器中已经存在,如 /root/home ,或者在当前挂载命令 -v 前面的 -v 命令已经将软

    2024年02月22日
    浏览(59)
  • docker搭建nginx并且挂载宿主机目录

    1、安装docker,这里就不赘述了 2、查看nginx版本 3、设置nginx对外的挂载目录 4、拷贝一份nginx.conf文件到/root/docker/nginx/conf/目录下 5、拉取相应的docker镜像 6、搭建nginx服务器 7、搭建完成之后查看容器的运行状态 8、至此,nginx就搭建完成了!!

    2024年02月11日
    浏览(42)
  • docker 容器与宿主机时间同步

    1.docker run 2.Docker file 3.docker-compose 4.宿主机直接执行命令给某个容器同步时间 注意:这种方式需要重启容器 docker exec -it 70ec41893d66 /bin/bash 回车后输入date验证即可

    2024年02月08日
    浏览(54)
  • Docker容器内执行宿主机指令

            最近项目有个需求,需要程序配置服务器IP并且可以重启服务器。如果程序直接部署在服务器,相信大家都会操作。但是程序是用docker运行的,在docker中执行指令就很麻烦了。这时候需要添加容器一些特殊的权限和执行一些特殊的命令就可以执行宿主机上面的指令

    2024年02月09日
    浏览(56)
  • Jenkins容器使用宿主机Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: 添加数据卷

    2024年01月18日
    浏览(50)
  • 【Docker】数据卷挂载以及宿主机目录挂载的使用

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包