도커 컨테이너로 파일을 전송하거나 도커 컨테이너에서 파일을 전송하는 방법

Docker docker cp명령어를 사용하여 로컬 컴퓨터와 컨테이너 간에 파일이나 디렉터리를 복사할 수 있습니다. 이 명령어는 양방향으로 작동하며, 디렉터리를 재귀적으로 복사하고, 실행 중이거나 중지된 컨테이너를 대상으로 할 수 있습니다. 일반적인 복사 작업에는 컨테이너 내에서 셸을 열거나 tar 아카이브를 생성할 필요가 없습니다.

기본 구문은 `.`입니다 docker cp SOURCE DESTINATION. 컨테이너 경로를 지정하려면 콜론 앞에 컨테이너 이름 또는 ID를 입력합니다. `.`은 docker cp LOCAL_PATH CONTAINER:CONTAINER_PATH컨테이너 안으로 복사하고, `.`은 컨테이너 docker cp CONTAINER:CONTAINER_PATH LOCAL_PATH밖으로 복사합니다. Docker의 `.` 명령어 참조 문서에서 경로 및 디렉터리 규칙을 확인할 수 있습니다.

1. 컨테이너 이름 또는 ID를 찾으세요

Docker 명령어가 Docker Engine에 접근할 수 있는 터미널에서 다음 명령어를 실행하세요.

docker ps -a

docker ps`docker ps`는 실행 중인 컨테이너 목록을 보여줍니다. `docker ls`를 추가하면 중지된 컨테이너도 표시됩니다. 아래 명령에서 해당 열의 -a값이나 컨테이너 ID를 사용하세요 . `container ls`와 같은 이름은 재사용하기 쉽고, 컨테이너를 구분해야 할 때는 ID를 사용하면 정확한 식별자를 얻을 수 있습니다. `docker ps` 또는 `docker container ls` 명령으로 표시되는 필드를 확인할 수 있습니다 .NAMESweb

`docker ps -a` 명령어의 터미널 출력 결과로, 실행 중인 `web`이라는 컨테이너와 해당 컨테이너의 간략한 ID가 표시됩니다.
.에 표시된 컨테이너 이름 또는 ID를 사용하십시오 docker ps -a.

2. 컴퓨터에서 컨테이너로 파일을 복사합니다.

docker cp복사하려는 파일이 있는 컴퓨터에서 실행하세요 . 예를 들어, 프로젝트 폴더에서 해당 파일을 컨테이너 내부의 파일 report.csv로 복사하려면 다음과 같이 하세요 ./tmpweb

docker cp ./report.csv web:/tmp/report.csv

./report.csv<로컬 파일 경로>, web<컨테이너 이름 또는 ID>, 그리고 <컨테이너 내부의 대상 경로>로 바꿔주세요 /tmp/report.csv. 컨테이너 경로는 컨테이너의 루트 디렉터리를 기준으로 해석되므로, 앞에 슬래시(/)를 붙이는 것은 선택 사항입니다. 대상 경로가 기존 디렉터리인 경우, Docker는 소스 파일 이름을 사용하여 해당 디렉터리에 파일을 배치합니다.

터미널 명령어를 사용하여 로컬 report.csv 파일을 웹 컨테이너의 /tmp/report.csv 경로로 복사합니다.
이 명령은 호스트 파일 하나를 컨테이너에 복사합니다.

Docker는 디렉터리를 재귀적으로 복사합니다. /etc/app/이미 존재하는 경우, 이 명령은 config해당 디렉터리 내부에 다음 내용을 추가합니다.

docker cp ./config web:/etc/app/

의 내용만 에 복사하려면 config소스 경로 끝에 /etc/app/다음을 추가하세요 ./.

터미널 명령어를 사용하여 로컬 설정 디렉터리의 내용을 웹 컨테이너 내부의 /etc/app 디렉터리로 복사합니다.
접미사 /.는 원본 디렉토리를 중첩하는 대신 디렉토리 내용을 복사한다는 의미입니다.
docker cp ./config/. web:/etc/app/

Docker는 누락된 상위 디렉터리를 생성하지 않습니다. 대상 컨테이너의 상위 디렉터리를 먼저 생성해야 합니다. 실행 중인 컨테이너 내부에 누락된 폴더를 생성하려면 `docker pip` 명령을 실행한 docker exec web mkdir -p /etc/app다음 파일을 복사하십시오. ` docker docker execpip` 명령은 실행 중인 컨테이너가 필요하지만, `docker pip` 명령은 docker cp그렇지 않습니다.

3. 컨테이너에서 컴퓨터로 파일을 복사합니다.

파일을 가져오려면 소스와 대상의 순서를 반대로 하세요. 먼저 로컬 대상 폴더를 생성한 다음 컨테이너에서 로그 파일을 복사합니다.

mkdir -p ./backup
docker cp web:/var/log/app.log ./backup/
웹 컨테이너 내부의 /var/log 디렉토리에서 app.log 파일을 로컬 백업 디렉토리로 가져오는 터미널 명령어입니다.
복사할 대상 폴더는 복사하기 전에 먼저 존재해야 합니다.

같은 방식으로 디렉터리를 가져올 수 있습니다. /.컨테이너 소스 경로에 추가하면 해당 내용을 기존 로컬 디렉터리에 직접 복사할 수 있습니다.

docker cp web:/var/log/app/. ./backup/

Docker는 중지된 컨테이너에서 파일을 복사할 수 있는데, 이는 프로세스가 종료된 후 로그나 구성 파일을 수집하는 데 유용합니다.

Docker Compose 사용

프로젝트에서 Compose를 사용하는 경우 컨테이너 ID를 조회하는 대신 서비스 이름을 사용하세요 docker compose cp. 예를 들어, 로컬 파일을 라는 이름의 서비스에 복사하려면 다음과 같이 하면 됩니다 web.

docker compose cp ./report.csv web:/tmp/report.csv

반대 방향으로 복사하려면 경로를 반대로 하세요.

docker compose cp web:/var/log/app.log ./backup/

서비스에 여러 컨테이너가 있는 경우 복제본 선택과 같은 옵션은 공식 Docker Compose CP 참조 문서를 확인하세요.

권한 및 영구 저장소

기본적으로 컨테이너에 복사된 파일은 해당 컨테이너의 루트 사용자와 기본 그룹의 소유가 되며, 컴퓨터로 복사된 파일은 Docker를 실행하는 사용자의 소유가 됩니다. 권한은 가능한 경우 유지됩니다. -a소스 UID와 GID를 유지하려면 해당 옵션을 사용하십시오. 앱이 파일을 읽을 수 없는 경우 컨테이너에 권한을 부여하기보다는 대상 위치와 소유권을 확인하십시오.

컨테이너의 쓰기 가능한 레이어에 있는 파일은 컨테이너와 함께 제거됩니다. 영구적으로 보존해야 하는 데이터의 경우 Docker 볼륨 또는 바인드 마운트를 사용하십시오. 볼륨은 컨테이너에 영구적으로 저장해야 하는 데이터에 적합하며, 바인드 마운트를 사용하면 호스트와 컨테이너가 동일한 파일에 접근할 수 있습니다. 마운트된 경로에 파일을 복사하면 마운트된 데이터가 변경되므로 대상 경로를 먼저 확인해야 합니다. Docker의 볼륨 및 바인드 마운트 관련 지침을 참조하십시오 .

빠른 문제 해결

  • "해당 컨테이너가 없습니다":docker ps -a 컨테이너 이름 또는 ID를 실행 하여 확인하십시오.
  • "해당 파일 또는 디렉터리가 없습니다": 소스 경로를 확인하고 대상의 상위 디렉터리가 존재하는지 확인하십시오. 컨테이너 경로는 .으로 시작합니다 /.
  • 폴더가 예상보다 한 단계 더 깊은 곳에 있습니다. 마지막에 붙는 괄호를 사용하여 /.디렉터리 내용만 복사하세요.
  • 권한이 거부되었습니다. 계정에 Docker 사용 권한이 있고 애플리케이션 사용자가 대상 디렉터리에 대한 읽기/쓰기 권한이 있는지 확인하십시오. Linux에서는 sudo시스템의 Docker 액세스 정책에서 요구하는 경우에만 사용하십시오.
  • 정리 후 파일이 사라지는 경우: 중요한 데이터는 컨테이너의 쓰기 가능 레이어뿐만 아니라 볼륨이나 바인드 마운트에 저장하세요.

댓글 남기기

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

TestDisk와 PhotoRec을 사용하여 손실된 파티션과 파일을 복구하는 방법을 알아보세요. 원본 드라이브를 보호하고 안전하게 스캔한 다음 복구된 데이터를 다른 디스크에 저장하세요.

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

웹캠이나 이미지 파일을 사용하여 CoBang으로 Linux에서 QR 코드를 스캔하세요. Flatpak 카메라 접근 관련 설치 옵션, 설정 단계 및 문제 해결 방법을 참조하세요.

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하세요. 노출, 색상, 깜빡임 감소 및 기타 지원되는 제어 기능을 조정하고 호환되는 비디오 모드를 확인하세요.

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하려면 JetBrains Toolbox 또는 독립 실행형 tar.gz 아카이브를 사용하세요. Snap 및 Arch AUR 옵션도 제공됩니다. Java는 이미 포함되어 있습니다.

리눅스에 Cisco Packet Tracer를 설치하는 방법

리눅스에 Cisco Packet Tracer를 설치하는 방법

Cisco Packet Tracer 9.0.1 for Ubuntu 64비트 버전을 다운로드하고, APT를 사용하여 DEB 패키지를 설치한 다음, 터미널에서 라이선스에 동의하고 로그인하여 실습을 시작하십시오.

XFCE 4에서 듀얼 패널을 설정하는 방법

XFCE 4에서 듀얼 패널을 설정하는 방법

각 디스플레이마다 별도의 XFCE 4 패널을 생성하고, 두 번째 패널을 올바른 출력에 할당하고, 위치와 크기를 조정한 다음, 필요한 실행기와 상태 항목을 추가합니다.

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

GNOME Disks 또는 dd 명령어를 사용하여 Linux에서 CD-ROM ISO 파일을 생성합니다. 광학 드라이브를 식별하고, 복사 과정을 모니터링하고, 이미지 유효성을 검사하고, 손상된 디스크나 오디오 디스크에 다른 도구가 필요한 경우를 알 수 있습니다.

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

GIMP를 사용하여 Linux에서 사진 배경 제거하기: 피사체를 따라 그리고, 선택한 배경을 삭제하고, 투명도를 유지한 다음, 재사용 가능한 PNG 파일로 내보낼 수 있습니다.

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear를 공식 사이트에서 무료로 다운로드하세요. Windows, macOS, Linux 패키지를 비교하고, 데이터 파일을 설치한 후 첫 비행을 시작하세요.

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

브라우저에서 Google Tasks를 열거나, Chrome 바로가기 또는 앱 스타일 실행을 추가하고, 캘린더 및 Gmail을 통해 날짜별 할 일을 관리하세요.