Docker的小白之路八(Docker使用篇之路径映射(挂载本地目录))
一、直接挂载本地目录到容器
在使用docker过程中,我们经常需要利用docker 容器的环境,但是又不想将代码传到容器中,这时我们就需要docker把宿主机上的目录挂载到容器中
root@felaim-pc:/home/felaim# docker run -it -v /home/felaim/Documents/docker_tutorial:/usr/Downloads --name felaim_test ubuntu:16.04 /bin/bash
参数说明:
- -t: 在新容器内指定一个伪终端或终端
- -i: 允许你对容器内的标准输入(STDIN)进行交互
- -v: 是将宿主机目录,必须为绝对路径,冒号后为容器内挂载的路径
- –name: 这里注意是双短线,来命名容器,不然每次docker会对容器进行自动命名,容器多了就分不清楚到底不同容器之间的关系了。
我们进入容器中,可以看到宿主机的目录已经映射到容器中了。
我们可以看到容器中Dockerfile的内容如上。
如果我们在本地端对文件进行修改呢?添加了一行test_modify的用户
再次在容器中打开Dockerfile文件,可以看到文件也是实时修改的!
这样你就可以在本地愉快的调试代码,减少了代码传输的麻烦和本地环境的配置,怎么现在才知道这个好东西/(ㄒoㄒ)/~~
咱们再使用一下docker ps,验证一下容器的名字,是felaim_test,验证无误。
我们也可以使用 -p 标识来指定容器端口绑定到主机端口。
两种方式的区别是:
- -P :是容器内部端口随机映射到主机的高端口。
- -p : 是容器内部端口绑定到指定的主机端口。
这个在端口映射那章已经有具体示例了,就不讨论对应参数设定了。
二、使用数据卷
1. 创建数据卷容器
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
root@felaim-pc:/home/felaim# docker run -v /home/felaim/Documents/docker_tutorial:/usr/Downloads --name dataVol ubuntu:16.04 /bin/bash
可以看到我们的dataVol已经创建成功
2. 创建使用数据卷的新容器
root@felaim-pc:/home/felaim# docker run -it --volumes-from dataVol --name test_dataVol ubuntu:16.04 /bin/bash
参数说明:
- –volumes-from: 这个也是双短线,这个参数用来指定使用哪个数据卷来挂载数据
在本地进行修改之后,再次查看容器中对应文件,发现容器中的文件内容也对应修改了,也就是咱们使用的数据卷也成功了。
参考地址: