一、怎么把本地的文件夹挂载到docker container中去
docker可以支持把一个宿主机上的目录挂载到镜像里。
docker run -it -v /home/dock/downloads:/usr/downloads ubuntu64 /bin/bash
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
现在镜像内就可以共享宿主机里的文件了。
默认挂载的路径权限为读写。如果指定为只读可以用:ro
docker run -it -v /home/dock/downloads:/usr/downloads:ro ubuntu64 /bin/bash
docker还提供了一种高级的用法。叫数据卷。
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
看示例:
docker run -v /home/dock/downloads:/usr/downloads --name datavol ubuntu64 /bin/bash
创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)。
再创建一个新的容器,来使用这个数据卷。
docker run -it --volumes-from datavol ubuntu64 /bin/bash
--volumes-from用来指定要从哪个数据卷来挂载数据。
二、docker 安装在哪个目录下
你是说 docker container安装在宿主机的那个位置吗?一般是/var/lib/docker/container这样的目录。
三、如何查看docker挂载的目录
1.--privileged=true改为--privileged试试;2.另外在容器内部可以试试命令前加上sudo
四、docker 可以映射 nfs 的本地目录到容器内部进行共享么
可以的,docker只管映射到本地目录,至于本地目录又nfs到了其他机器它是感知不到的。
五、Docker网站目录是挂载方式好还是拷贝进容器好
把nginx和php作为两个容器,代码另外放在volume,分别供php和nginx两者挂载
好处:代码更新灵活
坏处:感觉这作为一个服务来说很“山寨”(可以和Java/NodeJS的服务类比一下);另外,如果你用到了composer,依赖部分无法在制作镜像中过程中自动化安装
把nginx作为一个容器,php和代码放在另一个容器,但其中代码目录也需要供nginx挂载
好处:相比1,可以把composer放入PHP容器中,制作镜像时帮你安装依赖
坏处:作为服务依然很“山寨”
把nginx、php和代码全放入同一个容器
好处:更符合微服务的定义,整体对外构成一个服务;nginx和php之间可以直接用unix socket通信
坏处:除了灵活性之外,不太符合Docker官方一个容器只跑一个服务的建议
|