Docker 컨테이너 export 명령어를 사용하여 컨테이너 파일 시스템 내보내는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker container export 명령을 사용하여 Docker 컨테이너의 파일 시스템을 내보내는 방법을 배우게 됩니다. 먼저 간단한 컨테이너를 생성하고 실행하는 것으로 시작합니다.

컨테이너 생성 후, 컨테이너 파일 시스템을 내보내는 다양한 방법을 살펴볼 것입니다. 여기에는 파일 시스템을 표준 출력 (STDOUT) 으로 직접 내보내기, 셸 리디렉션을 사용하여 파일로 내보내기, 마지막으로 docker container export 명령의 --output 옵션을 사용하여 파일로 내보내기가 포함됩니다.

간단한 컨테이너 생성 및 실행

이 단계에서는 간단한 Docker 컨테이너를 생성하고 실행하는 방법을 배우겠습니다. 컨테이너는 코드와 모든 종속성을 패키징하여 애플리케이션이 한 컴퓨팅 환경에서 다른 환경으로 빠르고 안정적으로 실행되도록 하는 표준 소프트웨어 단위입니다.

docker run 명령을 사용하여 컨테이너를 생성하고 실행합니다. 기본 구문은 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]입니다.

ubuntu 이미지를 사용하고 echo 명령을 사용하여 간단한 컨테이너를 실행해 보겠습니다. ubuntu 이미지는 최소한의 Ubuntu 운영 체제 이미지입니다.

docker run ubuntu echo "Hello from Docker!"

이 명령을 처음 실행하면 Docker 는 먼저 ubuntu 이미지가 로컬에 있는지 확인합니다. 그렇지 않은 경우 Docker Hub (기본 레지스트리) 에서 이미지를 가져옵니다. 그런 다음 이 이미지에서 새 컨테이너를 생성하고 컨테이너 내에서 echo "Hello from Docker!" 명령을 실행합니다. 명령이 완료되면 컨테이너가 중지됩니다.

터미널에서 Hello from Docker! 출력을 볼 수 있습니다.

이제 계속 실행되는 컨테이너를 실행해 보겠습니다. -d 옵션을 사용하여 컨테이너를 분리 모드 (백그라운드) 로 실행하고 tail -f /dev/null 명령을 사용하여 상당한 리소스를 소비하지 않고 컨테이너를 계속 실행할 수 있습니다. 또한 나중에 쉽게 참조할 수 있도록 --name 옵션을 사용하여 컨테이너에 이름을 지정합니다.

docker run -d --name my-ubuntu-container ubuntu tail -f /dev/null

이 명령은 ubuntu 이미지를 가져오고 (아직 없는 경우), my-ubuntu-container라는 컨테이너를 생성하고, 분리 모드에서 tail -f /dev/null 명령을 실행합니다. 이 명령은 컨테이너 ID 를 출력합니다.

컨테이너가 실행 중인지 확인하려면 실행 중인 컨테이너를 나열하는 docker ps 명령을 사용할 수 있습니다.

docker ps

my-ubuntu-container를 포함하여 실행 중인 컨테이너 목록을 볼 수 있습니다.

컨테이너 파일 시스템을 STDOUT 으로 내보내기

이 단계에서는 Docker 컨테이너의 파일 시스템을 내보내는 방법을 배우겠습니다. 컨테이너의 파일 시스템을 내보내면 컨테이너 내용의 tar 아카이브가 생성됩니다. 이는 백업 생성, 컨테이너 상태 공유 또는 컨테이너 내용 검사에 유용할 수 있습니다.

docker export 명령을 사용하여 파일 시스템을 내보냅니다. 기본 구문은 docker export [OPTIONS] CONTAINER입니다.

이전 단계에서 생성한 my-ubuntu-container의 파일 시스템을 내보내 보겠습니다. 기본적으로 docker export는 tar 아카이브를 표준 출력 (STDOUT) 으로 출력합니다.

docker export my-ubuntu-container

이 명령을 실행하면 터미널에서 일련의 바이너리 데이터를 볼 수 있습니다. 이것이 컨테이너 파일 시스템의 tar 아카이브입니다. 바이너리 데이터이므로 터미널에서 사람이 읽을 수 없습니다.

무엇이 내보내지는지 더 잘 이해하기 위해 출력을 tar와 같이 tar 아카이브를 처리할 수 있는 명령으로 파이프할 수 있습니다. 그러나 이 단계에서는 STDOUT 으로 내보내는 데 집중하고 있습니다.

docker export 명령은 컨테이너가 생성된 이후 변경 사항을 포함하여 컨테이너의 전체 파일 시스템을 내보냅니다.

리다이렉션을 사용하여 컨테이너 파일 시스템을 파일로 내보내기

이전 단계에서는 컨테이너의 파일 시스템을 STDOUT 으로 내보냈습니다. 이는 출력을 다른 명령으로 파이프하는 데 유용하지만, 내보낸 파일 시스템을 파일로 저장하는 것이 더 실용적인 경우가 많습니다.

셸 리디렉션을 사용하여 이를 수행할 수 있습니다. > 연산자는 명령의 표준 출력을 파일로 리디렉션합니다.

my-ubuntu-container의 파일 시스템을 현재 디렉토리 (~/project) 에 있는 ubuntu-filesystem.tar라는 파일로 내보내 보겠습니다.

docker export my-ubuntu-container > ubuntu-filesystem.tar

이 명령은 docker export my-ubuntu-container를 실행하고 바이너리 출력 (tar 아카이브) 을 ubuntu-filesystem.tar 파일로 리디렉션합니다. 이번에는 터미널에서 바이너리 데이터를 볼 수 없습니다.

명령이 완료된 후 ls -lh 명령을 사용하여 파일이 생성되었는지 확인하고 크기를 확인할 수 있습니다.

ls -lh ubuntu-filesystem.tar

ubuntu-filesystem.tar 파일이 크기와 함께 나열되는 것을 볼 수 있습니다. 크기는 ubuntu 이미지의 내용에 따라 달라집니다.

file 명령을 사용하여 생성된 파일이 tar 아카이브인지 확인할 수도 있습니다.

file ubuntu-filesystem.tar

출력은 파일이 tar 아카이브임을 나타내야 합니다 (예: ubuntu-filesystem.tar: POSIX tar archive).

--output 옵션을 사용하여 컨테이너 파일 시스템을 파일로 내보내기

이전 단계에서는 셸 리디렉션 (>) 을 사용하여 내보낸 컨테이너 파일 시스템을 파일로 저장했습니다. Docker 는 또한 docker export 명령으로 출력 파일을 직접 지정하기 위한 전용 옵션인 --output 또는 -o를 제공합니다. 이는 셸 리디렉션을 사용하는 것보다 더 편리할 수 있습니다.

my-ubuntu-container의 파일 시스템을 다시 내보내고, 이번에는 --output 옵션을 사용하여 현재 디렉토리 (~/project) 에 있는 ubuntu-filesystem-output.tar라는 파일에 저장해 보겠습니다.

docker export --output ubuntu-filesystem-output.tar my-ubuntu-container

이 명령은 리디렉션을 사용하는 것과 동일하지만 Docker 관련 옵션을 사용합니다. tar 아카이브는 지정된 파일에 직접 저장됩니다.

명령이 완료된 후 ls -lh를 사용하여 새 파일의 생성 및 크기를 확인할 수 있습니다.

ls -lh ubuntu-filesystem-output.tar

ubuntu-filesystem-output.tar 파일이 나열되는 것을 볼 수 있습니다. 크기는 이전 단계에서 생성된 ubuntu-filesystem.tar 파일과 유사해야 합니다.

file 명령을 사용하여 ubuntu-filesystem-output.tar가 tar 아카이브인지 확인할 수도 있습니다.

file ubuntu-filesystem-output.tar

출력은 tar 아카이브임을 확인해야 합니다.

--output 옵션을 사용하는 것은 내보낸 파일 시스템의 대상 파일을 지정하는 깔끔한 방법입니다.

요약

이 랩에서는 간단한 Docker 컨테이너를 생성하고 실행하는 방법을 배웠습니다. docker run 명령을 사용하여 컨테이너 내에서 명령을 실행하고 특정 이름으로 분리 모드 (detached mode) 에서 컨테이너를 실행했습니다. 또한 docker ps 명령을 사용하여 컨테이너가 실행 중인지 확인했습니다.

그런 다음 docker export 명령을 사용하여 컨테이너의 파일 시스템을 내보내는 방법을 살펴보았습니다. 파일 시스템을 표준 출력 (STDOUT) 으로 내보내는 방법과 출력을 파일로 리디렉션하는 방법을 배웠습니다. 마지막으로, docker export와 함께 --output 옵션을 사용하여 출력 파일을 직접 지정하는 방법을 배웠습니다.