今天在使用docker的過程中遇到了一些問題,我的docker突然掛掉了,無法運行任何容器,這讓我很是頭疼。
$ docker run nginx docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:359: container init caused \"rootfs_linux.go:54: mounting \\"proc\\" to rootfs \\"/var/lib/docker/overlay2/e0339342ebb822b8f1b75158138d4c2fe4966eb4b6a4a9d9a6c5ad7e8b35653c/merged\\" at \\"/proc\\" caused \\"operation not permitted\\"\"". ERROE: failed to start containers
我查看了容器的狀態,發現了這個錯誤信息,讓我對docker的底層機制有了更深入的了解。
經過一番搜索,我明白了,這個問題是因為docker的內核限制導致的。為了保證容器之間不干擾,docker使用了內核命名空間隔離技術。但是,由于我的docker版本比較老,內核版本也不夠高,導致了這個問題。
幸運的是,我找到了解決辦法。只需要在啟動docker時添加選項`--security-opt seccomp=unconfined`即可。
$ docker run --security-opt seccomp=unconfined nginx
問題得到了解決,我的docker又能正常運行了。通過這次經歷,我不僅解決了問題,還對docker底層機制有了更深入的了解。