[Docker, WSL2] docker: Error response from daemon: failed to create task for container: failed to create shim task:
|2023. 10. 31. 15:43
에러 메시지
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overlay2/db95c0c61f0f8c7eb7b9e6aa595c3624f63734322a57f1daa401407c725ab89d/merged/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1: file exists: unknown.
ERRO[0000] error waiting for container:
문제 상황
pytorch 공식 이미지를 GPU 사용하는 컨테이너로 실행시켰을 때는 잘되는 것을 보아서, 내가 리눅스에서 push한 이미지를 WSL2로 pull하였었는데, 이를 컨테이너로 만들 때 문제가 생겼다.
문제 원인
해당 글에서 찾은 내용으로 문제를 해결하였다. WSL2에서 nvidia 관련 드라이버가 포함되는 이미지를 컨테이너에 mount시 기존에 설치된 드라이버와 충돌하는 경우가 있는 것으로 보인다고 한다.
도커파일 생성
도커파일 작성은, 도커파일을 둘 디렉토리를 하나 생성한 뒤 그 안에서 만든다.
vi Dockerfile
FROM <docker image name>
RUN rm -rf \
/usr/lib/x86_64-linux-gnu/libcuda.so* \
/usr/lib/x86_64-linux-gnu/libnvcuvid.so* \
/usr/lib/x86_64-linux-gnu/libnvidia-*.so* \
/usr/lib/firmware \
/usr/local/cuda/compat/lib
도커파일 생성후 build하여 이미지 생성
docker build . -t <image name>
컨테이너 생성
docker run -it --shm-size=256g --gpus all --name diff_js xxxxxx/diffusion:latest /bin/bash
이제 제대로 컨테이너 생성이 된 것을 확인할 수 있다.
참고 자료
https://blog.nitrolab.kr/archives/965
'Docker' 카테고리의 다른 글
[Docker] volume (0) | 2024.06.10 |
---|---|
[Docker, Ubuntu 22.04] 도커 설치부터 Nvidia-toolkit까지 (0) | 2024.01.05 |
[Docker, WSL2] 로컬 컴퓨터의 컨테이너 VScode로 접속 (1) | 2023.10.31 |
[Docker] 컨테이너에 ssh로 접속하기 (0) | 2023.09.26 |