案例1-利用Nginx容器部署静态资源
需求:
- 创建Nginx容器,修改nginx容器内的html目录下的index.html文件,查看变化
- 将静态资源部署到nginx的html目录
docker exec -it nginx bash
cd /usr/share/nginx/html
ls
容器中是没有vim的,nginx的镜像中只包含了nginx运行所需要的东西,要部署静态资源,需要使用数据卷
数据卷
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁
宿主机目录:原目录是 /var/lib/docker/volumes
修改后是: /etc/docker/daemon.json
中配置的data-root
或graph
字段对应的值
比如我的虚拟机中是: /root/docker/volumes
挂载数据卷
docker可以将数据卷和宿主机文件系统进行映射,使容器的文件系统和宿主机的文件系统保持一致
数据卷相关命令
docker volume create #创建数据卷
docker volume ls #查看所有数据卷
docker volume rm #删除指定数据卷
docker volume inspect #查看某个数据源的详细信息
docker volume prune #清除数据卷
docker volume --help #查看帮助信息
执行docker run
命令时,使用-v 数据卷名字:容器内目录
可以完成数据卷挂载
当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷
删除之前创建的nginx容器
docker ps
docker stop nginx
docker rm -f nginx
再重新创建nginx容器,并挂载
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
docker ps
docker volume ls
[root@docker01 volumes]# docker volume inspect html
[
{
"CreatedAt": "2024-01-01T13:51:54+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/root/docker/volumes/html/_data",
"Name": "html",
"Options": null,
"Scope": "local"
}
]
Mountpoint
就是挂载的宿主机目录,和名字为 html
的数据卷映射。名称为html
的数据卷又和容器的/user/share/nginx/html
目录映射。所以宿主机目录间接地和容器目录映射了。
cd /root/docker/volumes/html/_data
ls
cat index.html
修改宿主机的nginx.html文件,或者加入静态的图片等,刷新浏览器,对应的页面也发生了变化
docker exec -it nginx bash
cd /usr/share/nginx/html/
ls
会发现容器内有了刚才加入到宿主机的静态图片