로컬 파일을 컨테이너로 복사
이 단계에서는 로컬 파일 시스템에서 실행 중인 Docker 컨테이너로 파일을 복사하는 방법을 배우게 됩니다. 이는 컨테이너가 시작된 후 구성 파일, 스크립트 또는 기타 데이터를 컨테이너에 추가해야 할 때 흔히 사용되는 작업입니다.
먼저, ~/project 디렉터리 내의 로컬 머신에 간단한 텍스트 파일을 생성해 보겠습니다.
echo "This is a test file." > ~/project/test_file.txt
이 명령어는 ~/project 디렉터리에 test_file.txt라는 파일을 생성하고 텍스트 "This is a test file."을 작성합니다.
다음으로, 파일을 복사할 실행 중인 컨테이너가 필요합니다. 이 목적으로 간단한 ubuntu 이미지를 사용하겠습니다. 이미지가 로컬에 없을 수 있으므로 먼저 이미지를 pull(가져오기) 합니다.
docker pull ubuntu:latest
이 명령어는 Docker Hub 에서 최신 버전의 ubuntu 이미지를 다운로드합니다.
이제 ubuntu 이미지를 기반으로 컨테이너를 실행해 보겠습니다. detached mode (-d) 로 실행하고 쉽게 식별할 수 있도록 이름을 (my_ubuntu_container) 지정합니다.
docker run -d --name my_ubuntu_container ubuntu:latest sleep infinity
이 명령어는 ubuntu:latest 이미지를 사용하여 my_ubuntu_container라는 새 컨테이너를 시작합니다. sleep infinity 명령어는 컨테이너를 무기한으로 실행 상태로 유지하며, 이는 데모 목적으로 유용합니다.
docker ps 명령어를 사용하여 컨테이너가 실행 중인지 확인할 수 있습니다.
docker ps
출력에 my_ubuntu_container가 나열되어야 합니다.
이제 docker cp 명령어를 사용하여 로컬 머신에서 실행 중인 컨테이너로 test_file.txt를 복사할 수 있습니다. 구문은 docker cp <local_path> <container_name>:<container_path>입니다.
docker cp ~/project/test_file.txt my_ubuntu_container:/tmp/
이 명령어는 ~/project/test_file.txt 파일을 my_ubuntu_container 내부의 /tmp/ 디렉터리로 복사합니다.
파일이 성공적으로 복사되었는지 확인하기 위해 docker exec를 사용하여 컨테이너 내에서 명령을 실행할 수 있습니다. 컨테이너의 /tmp/ 디렉터리에 있는 파일을 나열하기 위해 ls를 사용합니다.
docker exec my_ubuntu_container ls /tmp/
출력에 test_file.txt가 나열되어야 하며, 이는 파일이 성공적으로 복사되었음을 확인합니다.
마지막으로, 생성한 컨테이너를 정리해 보겠습니다.
docker stop my_ubuntu_container
docker rm my_ubuntu_container
이 명령어는 각각 컨테이너를 중지하고 제거합니다.