前情提要:
1.docker 运行nginx容器作为代理服务器。
2.上传项目文件到宿主机的文件目录里。
3.nginx无法直接访问宿主机里的文件目录,会导致nginx代理无法跳转和访问项目。
如何解决呢?
挂载目录后镜像内就可以共享宿主机里的文件
挂载:指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。
docker操作命令:
安装容器后,运行容器并指定一些信息
docker run -d --name nginx01 -p 3334:80 nginx
-d 后台运行
--name 给容器命名
-p 3334:80 将宿主机的端口3334映射到该容器的80端口
-v 是分别将本机目录映射到容器目录(-v /宿主机绝对路径目录:/容器内目录)
docker inspect 来获取元数据,包含挂载目录信息等。
docker inspect container_name | grep Mounts -A 20
docker inspect container_id | grep Mounts -A 20
使用 exec 命令进入容器:docker exec -i -t 784fd3b294d7 /bin/bash
使用 exit 退出容器 (使用 exec 方式进入容器,执行 exit 容器不会被关闭)
进入容器内部,通过 ls -a 命令查看文件夹
问题示例:nginx容器如何访问宿主机的项目静态文件。
1.查看nginx配置文件中的静态文件的访问地址:
2.配置文件中的文件目录,在宿主机中不存在。查看nginx容器内部文件目录。
得出:
该容器文件夹目录挂载了 宿主机的源目录,映射关系如下:
Project1:
Source: /home/application (宿主机目录)
Destination: /home/application_prd/ (nginx容器内目录)
Project2:
Source: /home/application_fy_prd
Destination: /home/application_fy_prd/
安装启动nginx容器时,设置了这些文件夹的映射关系。
文章中,所有linux docker操作命令已在文章开头展示。
参考资料:
Docker学习笔记
Docker快速入门总结笔记_Code0cean的博客-CSDN博客_docker快速入门
Docker:常用命令 与 挂载目录