소개
이 튜토리얼에서는 종료된 Docker 이미지를 저장하고 내보내는 과정을 안내합니다. 종료된 Docker 이미지를 식별하고 목록화하는 방법, 파일로 저장하는 방법, 그리고 저장된 이미지를 가져오고 로드하는 방법을 배울 것입니다. 이 지식은 Docker 이미지 관리 워크플로우를 최적화하고 Docker 환경을 효율적으로 관리하는 데 도움이 될 것입니다.
이 튜토리얼에서는 종료된 Docker 이미지를 저장하고 내보내는 과정을 안내합니다. 종료된 Docker 이미지를 식별하고 목록화하는 방법, 파일로 저장하는 방법, 그리고 저장된 이미지를 가져오고 로드하는 방법을 배울 것입니다. 이 지식은 Docker 이미지 관리 워크플로우를 최적화하고 Docker 환경을 효율적으로 관리하는 데 도움이 될 것입니다.
Docker 는 개발자가 애플리케이션과 종속성을 가벼우면서도 휴대 가능하고 자체적으로 실행 가능한 단위인 Docker 이미지로 패키징할 수 있는 인기 있는 컨테이너화 플랫폼입니다. 이러한 이미지는 Docker 가 설치된 모든 시스템에서, 기본 운영 체제나 하드웨어에 관계없이 쉽게 공유, 배포 및 실행할 수 있습니다.
Docker 이미지는 Docker 생태계의 기반이며, 그 구조와 관리를 이해하는 것은 Docker 를 효과적으로 사용하는 데 필수적입니다. Docker 이미지는 본질적으로 특정 애플리케이션이나 서비스를 실행하는 데 필요한 파일, 라이브러리 및 종속성을 포함하는 읽기 전용 템플릿입니다.
Docker 컨테이너를 실행할 때는 Docker 이미지를 기반으로 합니다. 컨테이너는 이미지의 모든 속성과 구성을 상속하여 일관되고 재현 가능한 실행 환경을 보장합니다. 이를 통해 개발 환경부터 프로덕션 환경까지 다양한 환경에서 애플리케이션을 쉽게 배포하고 확장할 수 있습니다.
Docker 이미지를 생성하려면 Dockerfile 을 사용할 수 있습니다. Dockerfile 은 이미지를 빌드하는 단계를 정의하는 텍스트 기반 스크립트입니다. Dockerfile 은 기본 이미지를 지정하고 필요한 소프트웨어를 설치하며 애플리케이션 코드를 복사하고 실행 환경을 설정합니다.
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Docker 이미지가 생성되면 Docker Hub 또는 프라이빗 레지스트리와 같은 Docker 레지스트리를 통해 공유 및 배포할 수 있습니다. 이를 통해 개발자 및 팀은 기존 이미지를 협업하고 재사용하여 다양한 환경에서 효율성과 일관성을 높일 수 있습니다.
Docker 를 사용할 때 종료된 Docker 이미지 (시스템에서 중지되거나 제거된 이미지) 를 자주 만나게 됩니다. 이러한 종료된 이미지는 디스크 공간을 낭비할 수 있으며, 깨끗하고 효율적인 Docker 환경을 유지하기 위해 관리 또는 제거해야 할 수 있습니다.
종료된 Docker 이미지를 식별하고 목록화하려면 다음 Docker 명령어를 사용할 수 있습니다.
docker ps -a 명령어를 사용하여 종료된 컨테이너를 포함한 모든 Docker 컨테이너를 목록화할 수 있습니다. 이 명령어는 각 컨테이너의 컨테이너 ID, 이미지 이름 및 상태를 제공합니다.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx:latest "nginx -g 'daemon off" 10 minutes ago Exited (0) 5 minutes ago my-nginx-container
위의 예에서 my-nginx-container는 종료되었습니다.
종료된 Docker 이미지를 목록화하려면 docker images 명령어에 --filter 옵션을 사용할 수 있습니다.
$ docker images --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a1b2c3d4e5f6 10 minutes ago 133MB
이 명령어는 더 이상 실행 중인 컨테이너와 연결되지 않은 모든 종료된 Docker 이미지를 표시합니다.
또는 docker image ls 명령어에 --filter 옵션을 사용하여 동일한 결과를 얻을 수 있습니다.
$ docker image ls --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a1b2c3d4e5f6 10 minutes ago 133MB
--filter "dangling=true" 옵션은 출력을 필터링하여 현재 실행 중인 컨테이너와 연결되지 않은 종료된 Docker 이미지만 표시합니다.
종료된 Docker 이미지를 식별하고 목록화하면 필요에 따라 저장, 내보내기 또는 제거하여 깨끗하고 효율적인 Docker 환경을 유지할 수 있습니다.
종료된 Docker 이미지를 식별하고 목록화한 후, 백업, 배포 또는 향후 사용을 위해 파일로 저장할 수 있습니다. docker save 명령어를 사용하여 하나 이상의 Docker 이미지를 압축된 tar 아카이브 파일로 저장할 수 있습니다.
단일 종료된 Docker 이미지를 파일로 저장하려면 다음 명령어를 사용합니다.
$ docker save -o my-image.tar <image-name>
<image-name>을 저장하려는 종료된 Docker 이미지의 이름이나 ID 로 바꿉니다.
예를 들어, nginx:latest 이미지를 my-nginx-image.tar라는 파일로 저장하려면 다음과 같이 합니다.
$ docker save -o my-nginx-image.tar nginx:latest
저장하려는 종료된 Docker 이미지가 여러 개인 경우 이미지 이름이나 ID 를 공백으로 구분하여 나열할 수 있습니다.
$ docker save -o my-images.tar <image1-name> <image2-name> <image3-name>
이렇게 하면 지정된 모든 이미지가 my-images.tar 파일에 저장됩니다.
저장된 이미지 파일의 내용을 확인하려면 tar 아카이브의 파일 목록을 보여주는 명령어를 사용할 수 있습니다.
$ tar tf my-image.tar
이렇게 하면 my-image.tar 파일의 내용이 표시되어 저장된 Docker 이미지의 레이어 및 메타데이터를 확인할 수 있습니다.
종료된 Docker 이미지를 파일로 저장하면 필요에 따라 이러한 이미지를 쉽게 아카이브, 배포 또는 복원할 수 있으므로 Docker 환경이 정돈되고 효율적으로 유지됩니다.
종료된 Docker 이미지를 파일로 저장하는 것 외에도 docker export 명령어를 사용하여 압축된 아카이브로 내보낼 수 있습니다. 이 프로세스는 종료된 컨테이너의 전체 파일 시스템을 포함하는 단일 파일을 생성하며, 컨테이너의 상태를 공유하거나 복원하는 데 유용합니다.
단일 종료된 Docker 컨테이너를 아카이브로 내보내려면 다음 명령어를 사용합니다.
$ docker export -o my-container.tar <container-id>
<container-id>를 내보낼 종료된 Docker 컨테이너의 ID 또는 이름으로 바꿉니다.
예를 들어, my-nginx-container를 my-nginx-container.tar라는 아카이브 파일로 내보내려면 다음과 같이 합니다.
$ docker export -o my-nginx-container.tar my-nginx-container
내보낼 종료된 Docker 컨테이너가 여러 개인 경우 루프를 사용하여 프로세스를 자동화할 수 있습니다.
$ for container in $(docker ps -a -q --filter "status=exited"); do
docker export -o "${container}.tar" "$container"
done
이 스크립트는 각 종료된 Docker 컨테이너를 별도의 tar 아카이브 파일로 내보냅니다. 파일 이름은 컨테이너 ID 를 사용합니다.
내보낸 아카이브 파일의 내용을 확인하려면 tar 아카이브의 파일 목록을 보여주는 명령어를 사용할 수 있습니다.
$ tar tf my-container.tar
이렇게 하면 my-container.tar 파일의 내용이 표시되어 내보낸 Docker 컨테이너의 파일 시스템 구조를 확인할 수 있습니다.
종료된 Docker 컨테이너를 아카이브로 내보내는 것은 백업, 마이그레이션 또는 문제 해결에 유용할 수 있습니다. 내보낸 파일에는 컨테이너의 파일 시스템과 구성을 포함한 컨테이너의 전체 상태가 포함됩니다.
종료된 Docker 이미지를 파일로 저장하거나 내보낸 후, Docker 환경으로 다시 가져오거나 로드해야 할 수 있습니다. 이는 이미지를 복원하거나 다른 사용자와 공유하거나 다른 시스템 간에 이동하는 데 유용합니다.
파일로 저장된 Docker 이미지를 가져오려면 docker load 명령어를 사용합니다.
$ docker load -i my-image.tar
이렇게 하면 my-image.tar 파일에서 Docker 이미지를 로드하고 로컬 Docker 이미지 저장소에 추가합니다.
시스템의 Docker 이미지를 나열하여 가져온 이미지를 확인할 수 있습니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a1b2c3d4e5f6 10 minutes ago 133MB
Docker 컨테이너를 아카이브 파일로 내보낸 경우 docker import 명령어를 사용하여 Docker 환경으로 다시 로드할 수 있습니다.
$ docker import - my-container:latest < my-container.tar
이렇게 하면 my-container.tar 아카이브의 내용으로 새로운 Docker 이미지 my-container:latest를 생성합니다.
그런 다음 이 이미지를 사용하여 새 컨테이너를 만들거나 내용을 검사할 수 있습니다.
$ docker run -d my-container:latest
$ docker inspect my-container:latest
저장된 Docker 이미지를 가져오고 로드하는 것은 여러 가지 측면에서 유익합니다.
저장된 Docker 이미지를 가져오고 로드하는 방법을 이해함으로써 Docker 워크플로우를 간소화하고 컨테이너화된 애플리케이션의 이식성과 안정성을 확보할 수 있습니다.
이 튜토리얼에서는 종료된 Docker 이미지를 저장하고 내보내는 방법을 배웠습니다. 이제 종료된 이미지를 식별하고 목록화하고, 파일로 저장하며, 저장된 이미지를 가져오고/로드할 수 있습니다. 이 프로세스를 통해 필요할 때 종료된 이미지에 쉽게 액세스하고 재사용할 수 있도록 Docker 이미지를 효율적으로 관리할 수 있습니다. 이러한 기술을 숙달함으로써 Docker 이미지 관리를 간소화하고 Docker 기반 애플리케이션의 전반적인 효율성을 높일 수 있습니다.