인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

TaeUk Noh님의 프로필 이미지
TaeUk Noh

작성한 질문수

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

docker run volume 옵션 질문 드립니다. ㅠㅠ

작성

·

218

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님의 프로필 이미지
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

이런식으로 컨테이너 아이디와 파일 경로를 준 후에 호스트에 복사하길 원하시는 경로를 줘서 테스트를 해봐주세요 ~  

감사합니다.

TaeUk Noh님의 프로필 이미지
TaeUk Noh
질문자

감사합니다.

그렇다면, 볼륨 마운트는 도커 컨테이너에 있는 파일을 호스트에서 참조하는 방식으로는  사용이 불가능한건가요?

 

그리고 한 가지 더, docker cp 명령어에서는 반드시 container의 name이 아니라 ID로 명시해야 하나요?

container ID를 사용하면 동작 하는데, container name을 사용하면 동작을 하지 않네요 ㅠ

TaeUk Noh님의 프로필 이미지
TaeUk Noh

작성한 질문수

질문하기