본문 바로가기

Linux/Docker

31. CentOS7 : Docker - 컨테이너 내부 파일 변경(docker cp, volume, 바인드 마운트

1. docker cp

컨테이너의 파일 호스트로 가져오기

  • docker cp [컨테이너명]:[파일경로] [호스트경로]
  • ex) docker cp c2:/test/test.txt ./

호스트의 파일 컨테이너 내부에 복사

  • docker cp [호스트 경로] [컨테이너 이름]:[컨테이너 내부 경로]

1.1. 호스트의 파일 컨테이너 내부로 복사

※ centos7 다운로드


※ c1 컨테이너 구동


※ c1 컨테이너에 /test 디렉터리 생성


※ c1컨테이너의 /test 디렉터리 아래에 호스트의 test.txt 파일 넣기


2. Docker Volume

도커가 직접 관리하며 컨테이너에 제공하는 호스트의 공간
다른 호스트에서도 도커가 관리하는 볼륨을 함께 사용할 수 있음

2.1. docker Volume으로 호스트와 컨테이너 연결

※ docker volume 명령어 확인

  • create : volume 생성
  • inspect : volume 상세 정보 출력
  • ls : volume 리스트 출력
  • prune : 사용하지 않는 모든 로컬 볼륨 삭제
  • rm : volume 삭제


※ mhan 이름의 volume 생성 및 디렉터리 확인


※ Mountpoint 확인
→ /var/lib/docker/volumes/mhan/_data/ 디렉터리가 볼륨 디렉터리임을 확인할 수 있음


※ Host와 컨테이너의 디렉터리를 연결할 컨테이너 구동
→ 컨테이너 내부의 /mhan 디렉터리와 Host의 mhan 볼륨을 연결


※ 컨테이너의 Host와 연결한 볼륨 디렉터리가 생성되었는지 확인


※ mhan.txt 파일 생성


※ 컨테이너의 볼륨 디렉터리에 넣은 후 파일 확인하여 정상적으로 동기화 되었는지 확인


※ Host 의 mountpoint 확인하여 Host의 volume과 컨테이너의 디렉터리가 정상적으로 동기화 되었는지 확인

2.2. docker volume 삭제하기

※ 현재 생성되어있는 볼륨 확인


※ 볼륨 삭제 - 삭제할 볼륨이 현재 사용 중이므로 삭제가 실패된다.


※ 볼륨을 사용 중인 컨테이너 삭제 후 볼륨 삭제 - 정상적으로 삭제된다.


3. 바인드 마운트

Host의 파일 시스템과 컨테이너 내부를 연결해 한 쪽에서 작업한 내용이 양쪽에 동시에 반영되는 방법
컨테이너 구동 시 Host와 연결할 파일이나 디렉터리의 절대 경로를 지정하여 연결

3.1. 바인드 마운트로 호스트와 컨테이너 연결

※ 호스트의 /root/mhan1 디렉터리 생성


※ 호스트의 /root/mhan1 디렉터리와 /mhan1 디렉터리와 연결하여 c4 컨테이너 구동


※ c4 컨테이너의 호스트와 연결된 /mhan1 디렉터리 생성 확인


※ 호스트의 /root/mhan1 디렉터리 아래에 mhan1.txt 파일 생성 후 컨테이너의 /mhan1 디렉터리 확인
→ mhan1.txt 파일 동기화 확인