[Infra] 도커(docker)(4) 컨테이너 <-> 호스트 파일 전송

업데이트:

도커(docker)(4) 컨테이너 <-> 호스트 파일 전송

참고 링크

1. 호스트 -> 컨테이너로 파일 옮기기

1.1. 호스트에 파일 생성

먼저 도커 호스트에서 컨테이너로 파일을 옮겨보겠습니다. 그러기 위해 먼저 호스트에서 파일을 하나 만들어 줍니다. 저는 work 디렉토리에 text123.txt라는 파일을 만들어보겠습니다.

(터미널1)$ mkdir work
(터미널1)$ cd work
(터미널1)$ vim text123.txt
Hello, nice to meet you
(터미널1)$ pwd
/home/dlinfo/work

1.2. 컨테이너 실행

이번에는 터미널2에서 우분투 컨테이너를 실행해봅니다.

(터미널2)$ sudo -i
(터미널2)# docker run -it ubuntu bash
(터미널2)root@225051b687b3:/#

그리고 터미널1에서 컨테이너 ID를 확인합니다.

(터미널1)$ sudo -i
(터미널1)# # docker container ps -a
CONTAINER ID   IMAGE           COMMAND    CREATED             STATUS                      PORTS     NAMES
225051b687b3   ubuntu          "bash"     5 minutes ago       Up 5 minutes                          loving_grothendieck

1.3. 호스트 -> 컨테이너 파일 전송

그리고 다음 명령어로 해당 컨테이너의 /home 경로로 파일을 전송해 봅니다.

(터미널1)# docker cp /home/dlinfo/work/text123.txt 225051b687b3:/home

도커를 이용해 파일을 전송하는 방법은 ‘docker cp ' 입니다. 잘 보면 호스트 주소는 '/'로 시작하고 컨테이너 주소는 컨테이너ID로 되어 있는것을 알 수 있습니다. 위와 같이 입력했다면 터미널2로 이동해 파일이 복사되었는지 확인합니다.

(터미널2)root@225051b687b3:# cd /home
(터미널2)root@225051b687b3:/home# ls
text123.txt
(터미널2)root@225051b687b3:/home# cat text123.txt
Hello, nice to meet you  

2. 컨테이너 -> 호스트 파일 전송

이번에는 반대로 컨테이너에서 호스트로 파일을 전송해봅니다.

(터미널1)# docker cp 225051b687b3:/home/text123.txt /home/dlinfo/work/test

중요한건 컨테이너에서 호스트로 파일 전송한다고 해서 컨테이너가 실행중이 터미널2에서 커맨드를 입력하는 것이 아닌 터미널1에서 커맨드를 입력하는 것입니다. 생각해보면 실행중인 우분투 컨테이너에서는 docker 명령어를 쓸수가 없습니다. 왜냐면 이곳에는 도커가 설치되어 있지 않기 때문입니다.

위와 같은 코드를 입력하면 컨테이너의 /home 경로에 있던 text123.txt 파일이 호스트의 /home/dlinfo/work/test 경로로 이동한 것을 볼 수 있습니다.