docker cp 사용법, 컨테이너 안팎으로 파일을 넣고 꺼내는 명령과 터미널에서 붙여넣기가 안 될 때
2026-10-24
이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
한 줄 요약: 컨테이너와 호스트 사이에서 파일을 넣고 꺼내는 정석은 docker cp 입니다. 앞이 원본, 뒤가 대상이라는 것 하나만 기억하시면 되고, 컨테이너 터미널에서 Ctrl+V가 안 먹는 것은 도커가 아니라 터미널 창의 문제입니다.
nginx 컨테이너 안의 설정 파일을 고치려고 docker exec 로 들어갔는데, 메모장에서 복사해 둔 열 줄이 붙지 않습니다. Ctrl+V를 누르면 ^V만 찍히거나 아무 일도 없습니다.
docker cp 는 이럴 때 꺼내는 명령입니다. 컨테이너 안에서 붙여넣기와 씨름하는 대신, 밖에서 고친 파일을 통째로 넣는 쪽이 빠르고 틀림이 없습니다. 이 글은 그 명령의 방향과 자주 걸리는 점, 그리고 그래도 터미널에 직접 붙여야 할 때 볼 곳을 정리했습니다.
1. docker cp 사용법, 방향 하나만 기억하면 됩니다

▲ 컨테이너 이름 뒤에 콜론, 그 뒤에 컨테이너 안의 경로입니다
꼴은 리눅스 cp 와 같습니다. 앞이 원본, 뒤가 대상입니다. 컨테이너 쪽 경로는 `컨테이너이름:/경로` 로 씁니다.
- 컨테이너 → 호스트: `docker cp web:/etc/nginx/nginx.conf ./nginx.conf`
- 호스트 → 컨테이너: `docker cp ./nginx.conf web:/etc/nginx/nginx.conf`
- 폴더 통째로: 경로에 폴더를 주면 안의 것까지 다 갑니다. `docker cp web:/var/log/nginx ./logs`
컨테이너 이름 대신 ID 앞자리를 써도 됩니다. 멈춰 있는 컨테이너에도 됩니다. 그래서 죽은 컨테이너에서 로그를 꺼낼 때도 이 명령입니다.
걸리는 점 셋
- 소유자가 바뀝니다. 컨테이너 안으로 넣은 파일은 root 소유로 들어갑니다. 앱이 다른 사용자로 돌면 `chown` 을 한 번 해 줘야 읽습니다
- 고친 파일을 넣어도 프로세스는 모릅니다. nginx 라면 `docker exec web nginx -s reload` 처럼 다시 읽게 해야 합니다
- 볼륨으로 마운트한 경로는 호스트 쪽 폴더에서 직접 고치는 것이 맞습니다. 같은 파일을 두 길로 건드리는 셈이 됩니다
파일 하나를 고치고 넣는 흐름은 꺼내기, 호스트에서 편집, 넣기, 다시 읽게 하기. 네 단계면 끝납니다.
2. 컨테이너 터미널에서 붙여넣기가 안 되는 네 가지 이유

▲ 위 두 가지가 대부분입니다
`docker exec -it web sh` 로 들어간 셸은 그 자체로는 클립보드를 모릅니다. 붙여넣기는 그 셸을 띄운 창이 합니다. 그래서 안 될 때 볼 곳은 도커가 아니라 창입니다.
- 옛 윈도우 콘솔 창: Ctrl+V가 ^V로 찍힙니다. 마우스 오른쪽 클릭이 붙여넣기입니다. 윈도우 터미널 앱이면 Ctrl+V가 됩니다
- Docker Desktop 의 Exec 탭: 브라우저형 터미널이라 Ctrl+V가 안 먹을 때가 있습니다. Ctrl+Shift+V 와 오른쪽 클릭을 차례로 써 보시면 됩니다
- -it 를 빼먹음: `docker exec web sh` 처럼 `-it` 없이 들어가면 입력 자체가 안 갑니다. 붙여넣기 문제가 아닙니다
- 컨테이너 안에서 복사한 것: 컨테이너 안에는 xclip 같은 클립보드 도구가 없습니다. 안에서 드래그한 글은 창이 복사해 주는 것이고, 명령으로 밖에 내보내려면 `docker exec web cat /경로 > 파일` 처럼 호스트에서 받습니다
창마다 다른 단축키는 터미널 복사 붙여넣기 단축키, 윈도우·맥·리눅스가 서로 다른 이유에 정리돼 있습니다. WSL 안에서 도커를 쓰신다면 우분투 복사 붙여넣기, WSL에서는 어느 창에서 여느냐가 먼저입니다가 먼저입니다.
여러 줄을 한 번에 붙일 때는 줄마다 바로 실행됩니다. 설정 파일 내용을 셸에 붙이면 한 줄씩 명령으로 들어가 버립니다. 그래서 여러 줄은 1장의 방법으로 파일째 넣는 것이 맞습니다.
3. 파일은 docker cp, 명령 한 줄은 숫자 네 개

▲ 옮기는 것이 파일인지 글 한 줄인지로 길이 갈립니다
1장의 명령은 호스트와 컨테이너 사이의 일입니다. 그런데 막히는 자리가 종종 그 바깥에 있습니다. 폰 화면에 떠 있는 긴 `docker run` 한 줄을 서버 앞 PC의 터미널에 쳐 넣어야 할 때입니다.
자고투(ZAGO.TO)는 그 한 줄을 숫자 4개로 건너보냅니다. 폰 브라우저에서 zago.to 에 명령을 붙여 넣으면 네 자리 숫자가 나오고, PC 브라우저에서 같은 주소에 그 숫자를 치면 명령이 뜹니다. 그걸 복사해 터미널에 붙이면 됩니다. 로그인도 설치도 없습니다.
세 가지는 안 됩니다. 파일은 가지 않습니다. 그건 1장 명령의 자리입니다. 글은 열지 않으면 1분, 연 뒤 1분이면 지워져 다시 열 수 없습니다. 그리고 브라우저에서 글을 가려 보내는 장치가 아직 없어 서버가 그 글을 읽을 수 있으니, 토큰이나 비밀번호가 든 명령은 이 길로 보내지 않는 것이 맞습니다.
자고투가 옮기는 것은 10,000자까지의 글입니다. 긴 compose 파일 하나쯤은 들어가지만, 그것도 받는 쪽에서 파일로 저장해 컨테이너에 넣는 흐름이 됩니다.
3줄 요약
- 앞이 원본, 뒤가 대상. 컨테이너 쪽은 `이름:/경로`, 멈춘 컨테이너에도 되고 넣은 파일은 root 소유가 됩니다
- 터미널 붙여넣기가 안 되면 도커가 아니라 창을 봅니다. 옛 콘솔은 오른쇽 클릭, Exec 탭은 Ctrl+Shift+V, `-it` 확인
- 여러 줄 설정은 파일째, 다른 기기의 명령 한 줄은 자고투의 숫자 4개. 파일과 비밀은 그 길로 보내지 않습니다
긴 글, 숫자 4개로.
수능 디데이
사다리타기
연봉계산기
글자수 세기