docker-compose exec時出現"fork/exec /proc/self/exe: no such file or directory" 報錯


問題:跟往常一樣執行docker-compos exec redis sh時出現如下錯誤,而容器是運行狀態中。

# docker-compose exec redis sh
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "process_linux.go:75: starting setns process caused \"fork/exec /proc/self/exe: no such file or directory\""

解決辦法:

1、獲取容器ID

# docker ps | grep arcs_redis_1
ac248a3c5c0e        redis:alpine                 "docker-entrypoint..."   2 years ago         Up 16 minutes                   6379/tcp                                                                                                                                          arcs_redis_1

2、通過容器ID獲取容器的PID

# ps -ef|grep libcontainerd | grep ac248a3c5c0e
root      6650  9053  0 11:14 ?        00:00:00 docker-containerd-shim ac248a3c5c0e3f6405c35e186b5d095aeb7af72b0f52bb08303baded251cdb61 /var/run/docker/libcontainerd/ac248a3c5c0e3f6405c35e186b5d095aeb7af72b0f52bb08303baded251cdb61 docker-runc

注:第二個字段為容器的PID

3、獲取容器的mount位置

# grep "path" /var/run/docker/libcontainerd/ac248a3c5c0e3f6405c35e186b5d095aeb7af72b0f52bb08303baded251cdb61/config.json

注:mount的路徑:{"path":"/var/lib/docker/devicemapper/mnt/cc2ff9576cdf7736acca50ffdaadef471e01a8ffe9acb039c1d423edd941bd38/rootfs"},此路徑用於第6步掛載時使用。

4、用nsenter進入容器的namespace

# nsenter -m -t 6650 bash
注: 6650是容器的PID

5、查看容器的DeviceName

# docker inspect --format='{{.GraphDriver.Data.DeviceName}}' ac248a3c5c0e       ####ac248a3c5c0e是容器ID
docker-252:0-9700888-cc2ff9576cdf7736acca50ffdaadef471e01a8ffe9acb039c1d423edd941bd38

6、手動掛載

# mount /dev/mapper/docker-252\:0-9700888-cc2ff9576cdf7736acca50ffdaadef471e01a8ffe9acb039c1d423edd941bd38 -o rw,relatime,nouuid,attr2,inode64,sunit=512,swidth=1024,noquota -t xfs /var/lib/docker/devicemapper/mnt/cc2ff9576cdf7736acca50ffdaadef471e01a8ffe9acb039c1d423edd941bd38

7、退出

#exit

 8、再次執行docker-compose exec redis sh 無報錯。

 

 說明:此報錯是由於mount掛載點丟失,具體原因目前還未知曉,若有知曉者歡迎告知!

 


免責聲明!

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



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