外观
目录挂载与卷映射
目录挂载
上面的例子展示了如何手动进入容器修改内置文件,但显然这样是极为不方便的。Docker 提供了目录挂载的方式,可以将宿主机的一个文件夹映射到 Docker 容器中的一个文件夹,编辑主机的文件就相当于编辑容器的文件。删除容器时,在宿主机中创建的文件夹也不会被删除,保护了数据。
语法:-v 宿主机路径:容器路径,如 -v /app/nghtml:/usr/share/nginx/html,在 docker run 时使用。
docker run -d -p 80:80 --name nginx -v ~/nghtml:/usr/share/nginx/html nginx到这里时,可以看到文件系统内部出现了一个 nghtml 文件夹,只是内部什么文件都没有,所以访问浏览器时也会出现 403 状态。我们创建一个 index.html 并向内部写入内容,nginx 就返回正常页面了。同时在宿主机中修改文件,还是进入容器内部修改文件,两者同步,是完全等价的。
卷映射
容器中的 nginx 配置文件路径为 /etc/nginx/nginx.conf 。由于目录挂载在宿主机创建的文件夹默认为空,如果我们将配置文件所在的文件夹映射到宿主机,会导致配置文件缺失,使 nginx 无法启动。此时我们就需要将容器中的目录映射到主机,成为卷映射。
语法:-v 卷名:容器路径。卷名和上面的宿主机路径不同的是,卷名内部不包含路径分隔符号。
docker run -d -p 80:80 --name nginx -v ngconf:/etc/nginx nginx卷的位置为 /var/lib/docker/volumes/卷名,如上面的卷所在的路径就是 /var/lib/docker/volumes/ngconf。
