본문 바로가기

개발 관련/Docker

도커의 다양한 명령어들(복사, 볼륨 마운트 등)

💡 컨테이너와 호스트 사이 파일 복사

  • 컨테이너에서 호스트로, 호스트에서 컨테이너로 파일 복사하기(양방향 모두 가능)
  • 호스트 쪽 파일은 어디에 위치한 파일이라도 복사가 가능하며, 컨테이너 쪽에서도 파일을 복사할 경로를 지정 가능
  • 컨테이너로 파일을 복사하는 커맨드(호스트 → 컨테이너) 
docker cp {호스트 경로} {컨테이너 이름:컨테이너 경로}
  • 호스트로 파일을 복사하는 커맨드(컨테이너 → 호스트)
docker cp {컨테이너 이름:컨테이너 경로} {호스트 경로}

즉, 다음과 같이 cp 커맨드 뒤로 '원본_경로 복사할_경로' 순서로 기재

docker cp 원본_경로 복사할_경로

  • 파일명 변경하기 - mv
mv /hone/사용자명/index.html /home/사용자명/index2.html
  • 파일 삭제하기 - rm
rm /home/사용자명/index.html

💡볼륨 마운트

볼륨이란? 스토리지의 한 영역을 분할한 것

마운트란? '연결하다'의 의미로, 대상을 연결해 운영체제 또는 소프트웨어의 관리하에 두는 일을 말함

바인드 마운트 - 컨테이너와 파일을 연동하는 데 많이 사용하며, 마운트 대상이 되는 스토리지는 볼륨 외에도 디렉토리 파일, 메모리가 될 수 있음. 도커 엔진에서 관리하지 않는 영역의 기존 디렉터리를 컨테이너에 마운트하는 방식임.

데이터 퍼시스턴시(data persistency) - 데이터를 두는 장소가 마운트된 스토리지 영역

  • 파일을 직접 편집해야 할 일이 많다면 바인드 마운트 사용, 그렇지 않다면 볼륨 마운트 사용 (아래표 참고)
  • 볼륨 마운트의 볼륨은 미리 만들어 놓는 것이 좋음
항목 볼륨 마운트 바인드 마운트
스토리지 영역 볼륨 디렉터리 또는 파일
물리적 위치 도커 엔진의 관리 영역 어디든지 가능
마운트 절차 볼륨 생성 후 마운트 기존 파일 또는 폴더 마운트
내용 편집 도커 컨테이너를 통해서 일반적인 파일과 같이
백업 절차가 복잡함 일반적인 파일과 같이
  • 어떤 마운트 방식을 사용하든 스토리지 마운트는 run 커맨드의 옵션 형태로 지정
# 바인드 마운트 커맨드 예
docker run (생략) -v {스토리지 실제 경로:컨테이너 마운트 경로} (생략)

# 볼륨 마운트 커맨드 예
docker run (생략) -v {볼륨 이름:컨테이너 마운트 경로} (생략)
  • 볼륨 생성 (볼륨 마운트)
docker volume create {볼륨 이름}
  • 볼륨 삭제 (볼륨 마운트)
docker volume rm {볼륨 이름}
  •  prune - 현재 마운트되지 않은 볼륨은 모두 삭제
  • inspect - 볼륨의 상세 정보 출력
docker volume inspect {볼륨 이름}


💡컨테이너를 이미지로 만들기

컨테이너를 다른 컴퓨터 또는 서버로 복사하고 싶거나, 똑같은 컨테이너를 여러 개 만들고 싶을 때 컨테이너를 이미지로 만드는 방법이다. 이미지를 만드는 방법에는 두 가지가 있다.

  • commit 커맨드로 컨테이너를 이미지로 변환
docker commit {컨테이너 이름} {새로운 이미지 이름}


  • Dockerfile 스크랩트로 이미지 만들기
# 자주 사용되는 커맨드 예
docker build -t {생성할 이미지 이름} {재료, 폴더, 경로}

# Dockerfile 스크립트 예
FROM {이미지 이름}
COPY {원본 경로} {대상 경로}
RUN {리눅스 명령어}

💡컨테이너 개조

개발환경을 배포할 때 유용하게 활용할 수 있으며, 컨테이너 개조 방법에는 두 가지 방법이 있다. 대부분 이 두 가지 방법을 혼용한다.

  • docker exec - 컨테이너 속에서 명령어를 실행하는 커맨드로, bash를 통해 컨테이너 내부를 조작하는 동안에는 도커 명령을 사용할 수 없음
docker exec (옵션) {컨테이너 이름} /bin/bash
  • exit - 도커 엔진에 명령을 내릴 수 있도록 컨테이너에서 나오는 명령어

💡도커 허브 로그인

도커 허브는 직접 만든 컨테이너를 다른 사람에게 공개하기 위해서 사용

  • 도커 레지스트리 - 이미지를 배포하는 장소로, 일반에 공개되어 있든 비공개이든 상관없이 이미지가 배포되는 곳 모두 도커 레지스트리
  • 도커 허브 - 도커 제작사에서 운영하는 공식 도커 레지스트리
  • 레지스트리 - 이미지를 배포하는 장소, 리포지토리 - 레지스트리를 구성하는 단위
  • 이미지에 태그를 부여해 복제하는 명령어의 예
docker tag {원래 이미지 이름} {레지스트리 주소/리포지토리 이름: 버전}
  • 이미지를 업로드 하는 커맨드
docker push (docker image push)

http://www.yes24.com/Product/Goods/108431011

 

그림과 실습으로 배우는 도커 & 쿠버네티스 - YES24

컨테이너나 도커를 도통 이해하기 어려운 분들을 위한 본격 도커 입문서!이 책은 컨테이너 기술이 어렵게 느껴지는 엔지니어나 백엔드 기술에 자신이 없는 분들을 위한 도커 입문서다. 자세한

www.yes24.com

그림과 실습으로 배우는 도커 & 쿠버네티스 6장을 보고 정리한 내용이다. 더 자세한 내용은 위의 책을 참고하길 바란다.

'개발 관련 > Docker' 카테고리의 다른 글

쿠버네티스(Kubernetes)  (0) 2022.07.15
도커 컴포즈  (0) 2022.07.09
여러 개의 컨테이너를 연동해 실행하기  (0) 2022.06.25
컨테이너 사용하기 (+ 아파치)  (0) 2022.06.25
도커 엔진 시작 및 종료  (0) 2022.06.25