인프런 커뮤니티 질문&답변
docker run volume 옵션 질문 드립니다. ㅠㅠ
작성
·
226
0
┌ test_image(dir) - test_image.jpg
├ tmp.py
└ result_image(dir)
위와 같은 file과 dir로 구성한 container하나를 만들었습니다.
tmp.py는 test_image라는 dir안의 test_image.jpg를 cv2.read로 읽은 후 이름만 result_image.jpg로 바꿔서
result_image라는 dir안에 저장하는 아주 간단한 python code입니다.
해당 container에 볼륨 마운트 옵션 없이 docker run을 하면 잘 구동이 됨을 확인했습니다.
$ docker run container_name
docker run 이후 container 내부 구성은 아래처럼 됩니다. (run이 종료되면 result_image.jpg가 사라진다는 것은 이해 했습니다.)
┌ test_image(dir) - test_image.jpg
├ tmp.py
└ result_image(dir) - result_image.jpg
여기서 제가 하고싶은 것은
위의 container에 의해 생성된 result_image.jpg를 container로부터 desktop으로 가져오는 것 입니다.
이를 위해 run을 할 때
$ docker run -v /usr/src/app/result_image:/result_image container_name
을 해 보았는데...안됩니다.
> container안의 result_image라는 dir과 desktop의 /result_image라는 dir을 마운트 했습니다.
container안의 image를 desktop으로 꺼내려면 어떻게 해야 할까요?
OS는 windows10이고,
vscode의 powershell에서 위 명령어를 입력했습니다.
dockerfile은 아래와 같습니다.
------------------------------------
FROM python:3.7-buster
WORKDIR /usr/src/app
RUN apt-get -o Acquire::Max-FutureTime=86400 update
RUN apt-get -y install libgl1-mesa-glx
RUN pip install --upgrade pip
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY ./ ./
CMD ["python", "tmp.py"]
------------------------------------
혹시 명령어가 잘못 된 걸까요?
답변 1
0
John Ahn
지식공유자
안녕하세요 !!
볼륨은 도커 컨테이너에서 호스트에 있는 파일을 참조하는 역할이기 때문에
도커 컨테이너에 있는 파일을 호스트에 복사하는 역할이랑은 다른것 같습니다.
대신에
https://mkyong.com/docker/how-to-copy-files-from-docker-container-to-host/
여기서 나온 명령어를 사용해서 한번 해보실래요?!
$ docker cp <containerId>:/file/path/in/container/file /host/local/path/file
이런식으로 컨테이너 아이디와 파일 경로를 준 후에 호스트에 복사하길 원하시는 경로를 줘서 테스트를 해봐주세요 ~
감사합니다.





감사합니다.
그렇다면, 볼륨 마운트는 도커 컨테이너에 있는 파일을 호스트에서 참조하는 방식으로는 사용이 불가능한건가요?
그리고 한 가지 더, docker cp 명령어에서는 반드시 container의 name이 아니라 ID로 명시해야 하나요?
container ID를 사용하면 동작 하는데, container name을 사용하면 동작을 하지 않네요 ㅠ