b'driver "overlay" failed to remove root filesystem 的解決方法


1、docker-compose啟的nexus倉庫意外dead

  公司的maven私服nexus是通過docker-compose啟動的,不知道什么原因意外死掉了。再次啟動的時候報錯:

[root@test-java nexus]# docker-compose up -d
Removing nexus_nexus_1
ERROR: driver "overlay" failed to remove root filesystem for 738f492a57f80951b279c3bd82f59b6230275a298ab74d7f26c4564cf3d1cf2c: remove /var/lib/docker/overlay/6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887/merged: device or resource busy

2、原因分析

  看報錯應該是之前的容器無法刪除導致的,device or resource busy應該是還有某些進程在占用。

3、處理問題

  先通過docker rm命令嘗試刪除該容器:

[root@test-java nexus]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                           NAMES
141d9363cf95        jenkins             "/bin/tini -- /usr..."   12 days ago         Exited (137) 10 days ago                                   jenkins
85e5f06d1344        jenkins             "/bin/tini -- /usr..."   12 days ago         Exited (130) 12 days ago                                   reverent_ritchie
738f492a57f8        sonatype/nexus3     "bin/nexus run"          2 weeks ago         Dead                                                       nexus_nexus_1
eef939679dd1        nginx:1.13.3        "/usr/local/nginx/..."   2 months ago        Created                    443/tcp, 0.0.0.0:8087->80/tcp   nginx2
5087229bf9aa        nginx:1.13.3        "/usr/local/nginx/..."   2 months ago        Exited (0) 2 weeks ago                                     nginx
c67cf4bdefd9        sonatype/nexus3     "bin/nexus run"          9 months ago        Dead                                                       c67cf4bdefd9_nexus_nexus_1
[root@test-java nexus]# docker rm 738f492a57f8
Error response from daemon: driver "overlay" failed to remove root filesystem for 738f492a57f80951b279c3bd82f59b6230275a298ab74d7f26c4564cf3d1cf2c: remove /var/lib/docker/overlay/6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887/merged: device or resource busy

  無法正常刪除,嘗試強制刪除:

[root@test-java nexus]# docker rm -f 738f492a57f8
Error response from daemon: driver "overlay" failed to remove root filesystem for 738f492a57f80951b279c3bd82f59b6230275a298ab74d7f26c4564cf3d1cf2c: remove /var/lib/docker/overlay/6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887/merged: device or resource busy

  通過docker rm無法刪除,提示文件系統相關的問題,應該是和docker容器的文件系統有關,docker是通過掛載的形式使用宿主機文件系統的。查看一下跟報錯有關的掛載信息:

[root@test-java nexus]# grep docker /proc/*/mountinfo|grep 6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887
/proc/814/mountinfo:80 79 0:38 / /var/lib/docker/overlay/6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887/merged rw,relatime - overlay overlay rw,lowerdir=/var/lib/docker/overlay/e580d619ecdb1aeb01f73ad07d727812a3f9776af5af0679eecfd60198884aaf/root,upperdir=/var/lib/docker/overlay/6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887/upper,workdir=/var/lib/docker/overlay/6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887/work

注意:6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887這串數字是和報錯中的一致的。

  可以看到有跟該容器相關的掛載信息仍然處於掛載中,所以導致無法刪除。

  獲取該掛載進程的pid並殺掉該進程:

[root@test-java nexus]# grep docker /proc/*/mountinfo|grep 6031651302dba6053c5fde07937f4fd00dfc063577fa343b12c83f1c26b77887 | awk -F ":" '{print $1}' | awk -F "/" '{print $3}'
814
[root@test-java nexus]# kill -9 814

  重新啟動nexus:

[root@test-java nexus]# docker-compose up -d
Removing nexus_nexus_1
Recreating c67cf4bdefd9_nexus_nexus_1 ... error

ERROR: for c67cf4bdefd9_nexus_nexus_1  b'driver "overlay" failed to remove root filesystem for c67cf4bdefd9746ab850d09960211b02d0d184aa5e7c602095b1acdee57dc813: remove /var/lib/docker/overlay/ec743b1c55a524fd85421621314aa5acd44a29601f917f1f2eaed5f1a6d6c727/merged: device or resource busy'

ERROR: for nexus  b'driver "overlay" failed to remove root filesystem for c67cf4bdefd9746ab850d09960211b02d0d184aa5e7c602095b1acdee57dc813: remove /var/lib/docker/overlay/ec743b1c55a524fd85421621314aa5acd44a29601f917f1f2eaed5f1a6d6c727/merged: device or resource busy'
ERROR: Encountered errors while bringing up the project.

  還有這樣的報錯,說明還有相關的掛載進程沒有停止掉。找出進程並殺掉:

[root@test-java nexus]# grep docker /proc/*/mountinfo|grep ec743b1c55a524fd85421621314aa5acd44a29601f917f1f2eaed5f1a6d6c727 | awk -F ":" '{print $1}' | awk -F "/" '{print $3}'
20910
21073
[root@test-java nexus]# kill -9 20910
[root@test-java nexus]# kill -9 21073
-bash: kill: (21073) - No such process

  再次啟動:

[root@test-java nexus]# docker-compose up -d
Removing nexus_nexus_1
Recreating c67cf4bdefd9_nexus_nexus_1 ... done
[root@test-java nexus]# 

  啟動成功!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM