개발/Docker

Docker - Copy, Volume

잇(IT) 2022. 5. 30. 13:05
728x90

목차

1. docker cp
2. Volume

2.1 기본적인 volume 생성 후 공유하기
2.2 Bind 공유
2.3 Volum 삭제


1. docker cp

 

- 컨테이너 -> 로컬 / 로컬 -> 컨테이너로 파일을 복사하기 위해 docker cp라는 명령어를 사용할 수 있다.

 

컨테이너 생성
컨테이너에 디렉토리 및 파일 생성
docker cp를 통해 로컬 Server에 해당 파일 복사

* docker cp

- c2의 이름을 가진 컨테이너 내부에 디렉토리 생성 및 파일을 생성한 다음 해당 파일을 로컬 Server에 파일을 복사 할 수 있다.

 

- 하지만 컨테이너에서 컨테이너로 파일을 복사하는 것은 불가능하다.

 

- 반대로 로컬 Server에 존재하는 파일을 Container로 옮길 수도 있다.

 

- exec 명령어를 사용하면 컨테이너에 직접 들어가지 않고 명령어를 실행 할 수 있다.


2. Volume

 

- Docker 컨테이너의 생명 주기와 관계없이 데이터를 영속적으로 저장할 수 있도록 Docker는 두가지 옵션을 제공한다.

 1. Volume

 2. Bind mount

 

- 볼륨은 컨테이너가 실행될때 공유한다. 디렉토리 공유와 유사하다.

 

/var/lib/docker/volumes

volume의 기본 경로
volume 옵션

- volume에는 5가지 옵션이 있다. create, inspect, ls, prune, rm


2.1 기본적인 volume 생성 후 공유하기

 

volume 생성
volume 경로에 생성된 volume 확인
컨테이너 생성 시 볼륨 연결

- 컨테이너 생성 시 -v 옵션을 이용하여 볼륨을 지정할 수 있다. 디렉토리가 기존에 없으면 자동으로 생성된다.

 

- 볼륨은 컨테이너 생성 시 공유한다.

- cp는 컨테이너 실행 후 복사한다.

 

볼륨으로 공유된 디렉토리 확인

- 임의의 파일을 생성 후 해당 파일을 볼륨 기본 경로와 공유된 c3의 이름을 가진 컨테이너로 복사한다.

 

볼륨 기본 경로에도 파일이 생성

- 컨테이너에 임의의 파일이 생성되자 볼륨 기본 경로에도 파일이 자동으로 생성된 것을 볼 수 있다.

 

- 볼륨도 디렉토리랑 비슷하다고 생각하면 된다.

 

- 컨테이너 생성 시 볼륨 명령어를 사용하여 생성하면 기본 볼륨 경로로 지정되고 디렉토리가 없으면 자동으로 생성한다.


 

2.2 Bind 공유

 

- Bind 공유를 사용하면 볼륨 기본 경로가 아닌 호스트가 지정하는 경로에 볼륨 공유를 지정할 수 있다.

- Bind 공유를 위해 경로 지정 시 반드시 절대경로로 지정해야 한다.

 

/root/bis1 디렉토리와 컨테이너 bis1 디렉토리와 연결

- 로컬의 /root/bis1 디렉토리와 centos 이미지로 생성한 c4 컨테이너의 /bis1 경로와 Bind 공유를 한다.

 

- 볼륨을 공유하기 때문에 로컬의 /bis1 디렉토리에 파일을 생성하게 되면 c4 컨테이너 /bis1 디렉토리에도 파일이 생성되는 것을 볼 수 있다.

 

* 볼륨 공유 2가지

 

1. 볼륨 create 생성해서 공유한다. -> 볼륨 기본 경로로 지정된다.

2. Bind를 통해 공유시키기 -> 절대경로를 사용하여 경로를 생성한다.


2.3 Volum 삭제

 

볼륨 정보 확인
볼륨 삭제

* Volume rm 명령어를 사용하여 Volume을 삭제할 수 있다.


- mysql db 위치하는 폴더가 있는데 로컬에 있는 db 연결해서 백업하는 용도로 주로 사용한다.

 

- 설정파일 앞부분까지 local 공유하면 컨테이너에서 설정 파일을 만들어서 넣을 있다.

 

728x90