728x90
반응형
컨테이너와 호스트 간의 파일 복사 방법에 대해 알아보자.
파일 복사
- 컨테이너 동작에는, 프로그래밍 언어의 런타임이나 웹 서버, DB 등이 함께 시스템을 구성한다.
- 시스템 동작에 필요한 것 외에도, 화면을 구성하는 이미지, HTML 파일, CSS파일, 이미지나 텍스트 파일 등이 있다.
- 이러한 파일들은 컨테이너에 저장된다.
- 때론 SW의 개입없이, 컨테이너와 로컬 컴퓨터 간에 파일을 주고 받기도 한다.
- 파일 복사는 컨테이너 → 호스트, 호스트 → 컨테이너로 양방향 복사가 모두 가능하다.
- 호스트: 도커 엔진을 실행하는 PC
파일 복사 명령어: docker cp(= docker container cp)
- Windows나 macOS에서는 드래그 앤 드롭으로 파일을 복사했으나, 도커에서는 명령어로 복사한다.
- 호스트 → 컨테이너 파일 복사 명령어: docker cp 호스트_경로 컨테이너_이름:컨테이너_경로
- 컨테이너 → 호스트 파일 복사 명령어: docker cp 컨테이너_이름:컨테이너_경로 호스트_경로
- cp 명령어 뒤에 '원본_경로' '복사할_경로' 순서로 기재한다.( docker cp 원본_경로 복사할_경로 )
호스트 경로의 예
- 호스트 내 파일 위치는 어디라도 상관없고, 파일의 위치는 '경로' 형태로 작성한다.
- 경로: 컴퓨터 속 파일이나 폴더(디렉토리)의 주소
항목 | 값(예시) |
문서 폴더(Windows) | C:\User\사용자명\Documents\파일명 |
문서 폴더(macOS) | /User/사용자명/Documents/파일명 |
리눅스의 홈 디렉터리 | /home/사용자명/파일명 |
이제 컨테이너와 호스트 간의 파일 복사를 직접 해보자.
[사전준비] index.html 파일 생성
- 메모장 등 텍스트 에디터를 사용해, index.html 파일을 생성하자.( 리눅스에서는 nano 에디터 이용)
- 아래의 샘플을 이용해 원하는 내용을 입력하고, 인코딩이 UTF-8인지 확인하자.
- index.html을 복사할 파일로 사용할 예정이다.
- index.html 파일에 작성할 내용 샘플
- <html>
- <meta charset="utf-8"/>
- <body>
- <div>안녕하세요. charmer입니다.</div>
- </body>
- </html>
호스트 → 컨테이너 파일 복사를 해보자
실습 내용
생성할 컨테이너 정보
항목 | 값 |
컨테이너 이름 | apa00ex19 |
이미지 이름 | httpd |
포트 설정 | 8089:80 |
명령어에 사용할 옵션, 대상, 인자
- 파일 복사 명령어: docker cp 원본_경로 복사대상_컨테이너_이름:컨테이너_경로
- 아래 표의 경로대로 index.html파일을 저장하거나, 본인이 원하는 경로에 저장 후 그 경로를 입력하면 된다.
항목 | 값 |
윈도우 원본 경로 | C:\Users\사용자명\Documents\index.html |
macOS 원본 경로 | /Users/사용자명/Documents/index.html |
리눅스 원본 경로 | /home/사용자명/index.html |
컨테이너 경로 | /usr/local/apache2/htdocs |
0. 아파치 컨테이너 생성
- 실습에는 아파치를 사용하는데, 아파치나 사용된 옵션에 대해 궁금하다면 이전 글들을 참고하길 추천!
- 터미널 창에 입력할 명령어: docker run --name apa00ex19 -d -p 8089:80 httpd
1. 웹 브라우저를 통해, 아파치에 접근하여 초기화면 확인
- 웹 브라우저에서 localhost:8089:80에 접근해, 아파치 초기 화면을 확인한다.
2. cp 명령어를 실행해, 호스트 → 컨테이너 파일 복사
- cp 명령어 사용해 호스트에서 컨테이너로 index.html 파일을 복사한다.
- 터미널 창에 입력할 명령어( 경로는 복사에 사용할 파일의 경로에 맞게 수정 )
- Windows: docker cp C:\Users\82103\Downloads\index.html apa00ex19:/usr/local/apache2/htdocs/
- macOS: docker cp /Users/사용자명/Documents/index.html apa00ex19:/usr/local/apache2/htdocs/
- linux: docker cp /home/사용자명/index.html apa00ex19:/usr/local/apache2/htdocs/
3. 아파치의 초기 화면이 index.html 파일의 내용으로 바뀐 것을 확인
4. 뒷정리
- 이젠 반대로, 컨테이너에서 호스트로 파일을 복사하는 연습을 하기 위해, 컨테이너 삭제는 하지 않는다.
컨테이너 → 호스트 파일 복사를 해보자
실습 내용
생성할 컨테이너 정보
- 앞서 사용한 apa00ex19 컨테이너를 그대로 사용한다.
명령어에서 사용할 옵션, 대상, 인자
- 호스트의 복사 대상 폴더는 앞선 연습과 동일하게 문서 폴더로 하거나, 본인이 지정한 폴더 그대로 한다.
- 터미널 창에 입력할 명령어
- Windows: docker cp apa00ex19:/usr/local/apache2/htdocs/index.html C:\Users\82103\Downloads\
- macOS: docker cp apa00ex19:/usr/local/apache2/htdocs/index.html /Users/사용자명/Documents/
- linux: docker cp apa00ex19:/usr/local/apache2/htdocs/index.html /home/사용자명/
0. 아파치 컨테이너 생성
- 앞서 만든 apa00ex19 컨테이너를 그대로 사용하고, 삭제했다면 다시 생성한다.
1. cp 명령어를 실행해, 컨테이너 → 호스트 파일 복사
- cp 명령어 사용해 컨테이너에서 호스트로 index.html 파일을 복사한다.
- 터미널 창에 입력할 명령어( 경로는 복사에 사용할 파일의 경로에 맞게 수정 )
- Windows: docker cp apa00ex19:/usr/local/apache2/htdocs/index.html C:\Users\82103\Downloads\
- macOS: docker cp apa00ex19:/usr/local/apache2/htdocs/index.html /Users/사용자명/Documents/
- linux: docker cp apa00ex19:/usr/local/apache2/htdocs/index.html /home/사용자명/
2. 호스트에서 index.html 파일이 잘 복사됐는지 확인
3. 뒷정리
- 컨테이너 종료: docker container stop apa00ex19
- 컨테이너 삭제: docker container rm apa00ex19
- 컨테이너 삭제 여부 확인: docker container ps -a
728x90
'docker & kubernetes' 카테고리의 다른 글
컨테이너 사용법 3 | Docker&Kubernetes 학습 26 (0) | 2024.11.29 |
---|---|
컨테이너 사용법 2 | Docker&Kubernetes 학습 25 (2) | 2024.11.28 |
도커 사용방법 16 | Docker&Kubernetes 학습 23 (0) | 2024.11.26 |
도커 사용방법 15 | Docker&Kubernetes 학습 22 (0) | 2024.11.25 |
도커 사용방법 14 | Docker&Kubernetes 학습 21 (0) | 2024.11.24 |