실행 중인 컨테이너에서 파일 수정
이 단계에서는 실행 중인 컨테이너 내에서 파일을 수정하는 방법을 배웁니다. 이는 이미 실행 중인 컨테이너에 구성 파일을 변경하거나 임시 스크립트를 추가하는 등 디버깅 목적으로 유용할 수 있습니다.
alpine보다 기능이 풍부하고 셸과 일반 유틸리티를 포함하는 ubuntu 이미지를 기반으로 하는 간단한 컨테이너를 실행하는 것으로 시작합니다.
docker run -d --name my-ubuntu ubuntu sleep 3600
이 명령은 분리 모드 (-d) 로 Ubuntu 컨테이너를 실행하고 sleep 3600 명령을 사용하여 한 시간 동안 실행 상태를 유지합니다. 컨테이너를 쉽게 참조할 수 있도록 my-ubuntu로 이름을 지정했습니다.
이제 docker exec를 사용하여 실행 중인 컨테이너 내에서 셸을 얻어보겠습니다.
docker exec -it my-ubuntu /bin/bash
이제 my-ubuntu 컨테이너의 bash 셸 내에 있어야 합니다. 프롬프트가 변경되어 컨테이너 내에 있음을 나타냅니다.
컨테이너 내에서 /tmp 디렉터리에 새 파일을 만들어 보겠습니다.
echo "This is a test file." > /tmp/test_file.txt
이제 파일이 생성되었고 올바른 내용을 포함하는지 확인해 보겠습니다.
cat /tmp/test_file.txt
This is a test file. 출력을 볼 수 있습니다. 이는 실행 중인 컨테이너 내에서 파일을 생성하고 쓸 수 있었음을 확인합니다.
컨테이너의 셸을 종료하려면 exit를 입력하기만 하면 됩니다.
exit
이제 LabEx VM 터미널로 돌아왔습니다.
docker cp 명령을 사용하여 실행 중인 컨테이너 안팎으로 파일을 복사할 수도 있습니다. LabEx VM 에서 local_file.txt라는 파일을 만들고 컨테이너로 복사해 보겠습니다.
먼저, ~/project 디렉터리에 local_file.txt라는 파일을 만듭니다.
echo "This file is from the host." > ~/project/local_file.txt
이제 이 파일을 my-ubuntu 컨테이너의 /tmp 디렉터리로 복사합니다.
docker cp ~/project/local_file.txt my-ubuntu:/tmp/
docker cp의 형식은 docker cp <source_path> <container_name>:<destination_path> 또는 docker cp <container_name>:<source_path> <destination_path>입니다.
파일이 컨테이너로 복사되었는지 확인해 보겠습니다. 컨테이너의 셸로 다시 들어갑니다.
docker exec -it my-ubuntu /bin/bash
컨테이너 내에서 /tmp에 local_file.txt가 있는지 확인합니다.
ls /tmp/
test_file.txt와 함께 local_file.txt가 나열되어 있는 것을 볼 수 있습니다.
이제 컨테이너 내에서 local_file.txt의 내용을 보겠습니다.
cat /tmp/local_file.txt
This file is from the host. 출력을 볼 수 있습니다.
다시 컨테이너의 셸을 종료합니다.
exit
마지막으로, 컨테이너를 정리해 보겠습니다.
docker stop my-ubuntu
docker rm my-ubuntu
이 단계에서는 셸을 얻기 위해 docker exec와 표준 Linux 명령을 사용하여 실행 중인 컨테이너 내에서 파일을 수정하는 방법과 docker cp를 사용하여 호스트와 컨테이너 간에 파일을 복사하는 방법을 보여주었습니다.