容器中的文件存储
实际上使用中的容器内的文件都是挂载在宿主机的一个文件夹下。
例如:/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188//(usr/)
- 具体来说,/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188/merged是一个OverlayFS层的挂载点,它是由Docker Engine在运行时动态创建的,用于存储Docker容器的文件系统。在这个挂载点下的/usr/share/logstash目录包含了Logstash应用程序的共享文件,可以被容器内的Logstash进程读取和使用。
- 其中d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188为卷id(volume id)。
查看卷id
- LowerDir: 存储镜像层的目录,以及初始化层。在容器创建时,这些层会被overlay到一起,形成容器的文件系统。在这个例子中,/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188-init/diff表示初始化层,其他的目录都是存储镜像层的目录。(dockerfile中的BASE层)
- MergedDir: 存储容器文件系统的目录,所有的层在这个目录中被overlay到一起,形成容器的文件系统。(dockerfile中所有RUN命令执行后的层)
- UpperDir: 存储容器层的目录,这些层是在容器运行时写入的文件系统层,以及任何容器修改的文件。在容器删除时,这些层会被删除。(容器运行中,发生的文件变动会被记录在这里)
- WorkDir: 存储overlay2存储驱动内部使用的目录,包含了overlay2驱动在运行时使用的临时文件和目录。(容器运行中,缓存文件系统的状态)
docker inspect c947
#输出,字段为GraphDriver
"GraphDriver": {
"Data": {
"LowerDir": "/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188-init/diff:/home/ssd1/dockerdata/overlay2/e4a34146cc563af17e891816d1a1372df3e0042356e7ae25dfc36310ec8df889/diff:/home/ssd1/dockerdata/overlay2/413748e4d6a0aa9633a5329198b363b70018e6a015d33f381048f6aaeb6bd219/diff:/home/ssd1/dockerdata/overlay2/66adba63a18545ef000e5269019b74f95a92211523f698fa2330790cc6c7f3bf/diff:/home/ssd1/dockerdata/overlay2/b66c49ffca3ac25b76499e09eba87e1f72e4fa336b2ddf0582cd09f54164e4f5/diff:/home/ssd1/dockerdata/overlay2/5d9807a18f21f308fe191338b6dafbbd3e127c4db80ca3bada2232071d41d92c/diff:/home/ssd1/dockerdata/overlay2/042f418fd4488e88450fd0c85146fdd2c002080224fc20ae967fa627839e48f5/diff:/home/ssd1/dockerdata/overlay2/b6a91803450f9148b74b062b05343e528d7d057387b09cbf487ee2468e05c822/diff:/home/ssd1/dockerdata/overlay2/095a9cffc64fe1b829f79a40e5814d2c93e1e9e4a1429d76c5a174121e1b6544/diff:/home/ssd1/dockerdata/overlay2/6fe961cb4b03ceb555943860b69c8dbb1133c509a99eeca22adfba3a4b9fac01/diff:/home/ssd1/dockerdata/overlay2/dd90494f1542032adcf5279215a9ba21986ba18e5ae070b92bec6be295c56089/diff:/home/ssd1/dockerdata/overlay2/97c1edbcc7139cfa528c2f501a2b6900dc4b07add5837cbaf84a24dfabe5245d/diff:/home/ssd1/dockerdata/overlay2/3894a219ae9f3d3008229821d13b0ada2b69f0edd7b2015aa177a8dae4ec8f83/diff",
"MergedDir": "/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188/merged",
"UpperDir": "/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188/diff",
"WorkDir": "/home/ssd1/dockerdata/overlay2/d36a964050514ce03ccef4f283d5f4e9bdb925294d5ef504cd94276612b3c188/work"
},
"Name": "overlay2"
},
清除已删除的容器的文件系统层
# 可加参数 -a,彻底清除
docker system prune
完全清除无用的镜像
构建镜像时,一般都会出现构建过程中使用到的中间产出镜像,可在构建结束后清除。一般中间产出镜像名称和版本都是
docker image prune
镜像打包和推送至仓库(docker范围)
docker build -t dockerhub.loligod.com/feedback/feedback-backend:latest --cache-from dockerhub.loligod.com/feedback/feedback-backend:latest --build-arg BUILDIT_INLINE_CACHE=1 backend/
docker push docker.loligod.com/feedback/feedback-backend:latest