[Infra] 도커(docker)(4) 컨테이너 <-> 호스트 파일 전송
업데이트:
도커(docker)(4) 컨테이너 <-> 호스트 파일 전송
참고링크
참고 링크
- (0)도커의 개념
- (1)도커 설치하기, hello world!
- (2)도커 컨테이너 조작 기초(pull, run, ps)
- (3)도커 이미지 변경 후 저장(commit)
- (4)도커 컨테이너 네트워크
- (5)도커 API 이미지 빌드 및 컨테이너 실행
- (6)도커 컴포즈를 활용한 여러 개의 Flask, Nginx 배포
- (7)도커 볼륨을 이용한 데이터 관리
- (1)쿠버네티스 구조
- (2)쿠버네티스 설치
- (3)쿠버네티스 서비스 배포하기
- (4)컨테이너 IP와 파드 IP의 관계
- (5)퍼시스턴트 볼륨 스토리지
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
(터미널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 경로로 이동한 것을 볼 수 있습니다.