使用volume
创建一个数据卷
docker volume create test-first-volume
创建完之后,可以在 /var/lib/docker/volumes/ 目录下看见新建了一个 test-first-volume文件夹
在Dockerfile中 volume的指定的目录是:
/www/wwwroot/pictureManager/deploy
原本以为会在/var/lib/docker/volumes/{容器id}下的目录有,但是并没有;不太清楚那Dockerfile中volume指定的目录有啥作用,百度了下,大概意思是:
Dockerfile中volume指定的目录只是声明了一个匿名数据卷,并不会实际创建这个目录;只有当有需要写入数据的时候会创建这个目录从而写入数据;因为有些镜像,比如mysql,如果没有在docker run 中指定 -v 显式的添加数据卷目录,不能就把创建的表和插入表的数据随着容器的销毁而丢失掉数据;如果在Dockerfile中指定了volume目录,在docker run也添加了 -v 指定数据卷的目录,就会根据docker run中的来。
先查询所有数据卷:docker volume ls
接着查看 test-second-volume数据卷的信息:docker volume inspect test-second-volume
在dokcer run中加入-v参数:
docker run -d -p 8070:8070 --name pcitureManager -v test-second-volume:/www/wwwroot/pictureManager/deploy pc/module:0.1
再次查看这个数据卷的信息:docker volume inspect test-second-volume
并没有啥改变,用 docker inspect {容器名称} : docker volume inspect pcitureManager ,会打印一大串信息。
删除数据卷:
docker volume rm {数据卷名称}
清理无主的数据卷:
docker volume prune
将应用内的日志挂载到宿主机
执行命令:
docker run -d -p 8070:8070 --name pcitureManager -v /www/wwwroot/logs:/logs/module pc/module:0.1
可以看到挂载日志文件成功,并且打印之后,这个文件也会跟着变化的。