docker image import 명령어를 사용하여 이미지 생성 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker image import 명령어를 사용하여 다양한 소스에서 Docker 이미지를 생성하는 방법을 배우게 됩니다. 원격 URL 에서 직접 이미지를 가져오기, 표준 입력을 사용하여 로컬 tarball 에서 가져오기, 커밋 메시지와 함께 로컬 tarball 에서 가져오기, 그리고 새로운 구성을 사용하여 로컬 디렉토리에서 가져오기를 탐구할 것입니다.

실습을 통해 docker image import 명령어의 다양한 옵션을 사용하고 가져온 이미지를 확인하는 방법에 대한 실질적인 경험을 얻게 될 것입니다. 이 랩은 기존 tarball 또는 디렉토리에서 Docker 이미지를 효율적으로 생성하는 기술을 제공하여 Docker 워크플로우의 유연성을 제공합니다.

원격 URL 에서 이미지 가져오기

이 단계에서는 Docker 이미지를 원격 URL 에서 직접 가져오는 방법을 배우게 됩니다. 이는 웹 서버에 호스팅된 이미지 tarball 이 있고, 먼저 수동으로 다운로드하지 않고 Docker 환경에 로드하려는 경우 유용합니다.

먼저, curl 명령어를 사용하여 샘플 이미지 tarball 을 원격 URL 에서 다운로드해 보겠습니다. 시연 목적으로 공개적으로 사용 가능한 이미지 tarball 을 사용합니다.

curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar

이 명령어는 지정된 URL 에서 이미지 tarball 을 다운로드하여 ~/project 디렉토리에 alpine.tar로 저장합니다. -o 플래그는 출력 파일 이름과 위치를 지정합니다.

다음으로, docker image import 명령어를 사용하여 이 tarball 을 Docker 환경으로 가져오겠습니다. import 명령어는 URL 또는 파일 경로를 입력으로 사용할 수 있습니다. URL 을 사용하는 경우 Docker 는 콘텐츠를 직접 다운로드하여 가져옵니다.

docker image import https://labex.io/images/alpine.tar

이 명령어는 원격 URL 에서 이미지를 가져옵니다. Docker 는 tarball 을 다운로드하고 해당 내용에서 새 이미지를 생성합니다. 기본적으로 가져온 이미지는 저장소 (repository) 또는 태그 (tag) 가 없습니다.

이미지가 가져왔는지 확인하려면 docker images 명령어를 사용하여 사용 가능한 이미지를 나열할 수 있습니다.

docker images

REPOSITORYTAG 모두 <none>으로 표시되고 최근 CREATED 시간이 표시되는 이미지를 볼 수 있습니다. 이것이 방금 가져온 이미지입니다.

또한 가져오기 프로세스 중에 이미지를 가져오고 저장소와 태그를 지정할 수도 있습니다. 이는 URL 뒤에 원하는 저장소와 태그를 추가하여 수행됩니다.

docker image import https://labex.io/images/alpine.tar alpine:latest

이 명령어는 동일한 이미지를 가져오지만 alpine:latest로 태그를 지정합니다.

이제 이미지를 다시 나열하여 새로 태그된 이미지를 확인합니다.

docker images

이제 저장소가 alpine이고 태그가 latest인 이미지를 볼 수 있습니다.

STDIN 을 사용하여 로컬 tarball 에서 이미지 가져오기

이전 단계에서는 Docker 이미지를 원격 URL 에서 가져오는 방법을 배웠습니다. 이 단계에서는 표준 입력 (STDIN) 을 사용하여 로컬 tarball 파일에서 Docker 이미지를 가져오는 방법을 배우게 됩니다. 이 방법은 로컬 이미지 tarball 이 있고 해당 내용을 docker image import 명령어에 직접 파이프하려는 경우 유용합니다.

먼저, 이전 단계에서 alpine.tar 파일이 ~/project 디렉토리에 있는지 확인합니다. 그렇지 않은 경우, curl을 사용하여 다시 다운로드할 수 있습니다.

curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar

이제 cat 명령어를 사용하여 alpine.tar 파일의 내용을 읽고 이를 docker image import 명령어에 파이프하겠습니다. docker image import 명령어의 - 인수는 STDIN 에서 읽도록 지시합니다.

cat ~/project/alpine.tar | docker image import -

이 명령어는 alpine.tar 파일을 읽고 해당 내용을 docker image import 명령어에 입력으로 보냅니다. 그러면 Docker 는 수신된 데이터에서 이미지를 가져옵니다. 태그를 지정하지 않고 URL 에서 가져오는 것과 유사하게, 가져온 이미지는 기본적으로 저장소 또는 태그가 없습니다.

이미지가 가져왔는지 확인하려면 사용 가능한 이미지를 나열합니다.

docker images

REPOSITORYTAG<none>이 있는 다른 이미지를 볼 수 있습니다.

STDIN 에서 가져올 때 저장소와 태그를 지정할 수도 있습니다. 구문은 URL 에서 가져오는 것과 유사합니다.

cat ~/project/alpine.tar | docker image import - alpine:stdin

이 명령어는 STDIN 에서 이미지를 가져와 alpine:stdin으로 태그를 지정합니다.

새 태그를 확인하기 위해 이미지를 다시 나열합니다.

docker images

이제 저장소가 alpine이고 태그가 stdin인 이미지를 볼 수 있습니다.

STDIN 을 사용하는 것은 특히 명령을 연결하거나 압축된 tarball 로 작업할 때, 한 번에 압축을 풀고 가져올 수 있는 유연한 이미지 가져오기 방법입니다.

커밋 메시지와 함께 로컬 tarball 에서 이미지 가져오기

이전 단계에서는 URL 및 STDIN 에서 이미지를 가져왔습니다. 이 단계에서는 로컬 tarball 파일에서 이미지를 가져오고 가져오기 프로세스 중에 커밋 메시지를 추가하는 방법을 배우게 됩니다. 커밋 메시지를 추가하면 가져온 이미지의 출처 또는 목적을 문서화하는 데 도움이 될 수 있습니다.

먼저, alpine.tar 파일이 ~/project 디렉토리에 있는지 확인합니다. 그렇지 않은 경우, 다운로드합니다.

curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar

이제 -m 플래그를 사용하여 커밋 메시지를 추가하는 docker image import 명령어를 사용합니다. 또한 로컬 파일 경로를 소스로 지정합니다.

docker image import -m "Imported alpine base image" ~/project/alpine.tar alpine:commit

이 명령어에서:

  • -m "Imported alpine base image"는 지정된 커밋 메시지를 이미지 히스토리에 추가합니다.
  • ~/project/alpine.tar는 로컬 tarball 파일의 경로입니다.
  • alpine:commit은 가져온 이미지에 대한 원하는 저장소 및 태그입니다.

이 명령어를 실행한 후 Docker 는 로컬 tarball 에서 이미지를 가져오고 커밋 메시지를 적용합니다.

가져오기 및 커밋 메시지를 확인하려면 docker image history 명령어를 사용하여 이미지를 검사할 수 있습니다.

docker image history alpine:commit

이 명령어는 alpine:commit 이미지의 히스토리를 보여줍니다. COMMENT 열에 "Imported alpine base image"라는 커밋 메시지가 있는 항목이 표시되어야 합니다.

새 태그를 확인하기 위해 이미지를 나열할 수도 있습니다.

docker images

저장소가 alpine이고 태그가 commit인 이미지가 표시되어야 합니다.

커밋 메시지를 추가하는 것은 특히 외부 소스에서 가져올 때 Docker 이미지의 변경 사항 및 출처를 추적하기 위한 좋은 방법입니다.

새로운 설정을 사용하여 로컬 디렉토리에서 이미지 가져오기

이전 단계에서는 tarball 파일에서 이미지를 가져왔습니다. 이 단계에서는 로컬 디렉토리에서 이미지를 가져오고 가져오기 프로세스 중에 새로운 구성을 적용하는 방법을 배우게 됩니다. 이는 디렉토리에 파일 시스템 스냅샷이 있고 실행할 명령과 같은 특정 설정을 사용하여 이를 Docker 이미지로 만들려는 경우 유용합니다.

먼저, 간단한 디렉토리 구조와 이미지에 포함될 파일을 만들어 보겠습니다.

mkdir ~/project/myimage
echo "Hello, Docker!" > ~/project/myimage/hello.txt

이렇게 하면 ~/project 디렉토리 내에 myimage라는 디렉토리가 생성되고, 그 안에 "Hello, Docker!" 텍스트가 포함된 hello.txt라는 파일이 생성됩니다.

이제 docker image import 명령어를 사용하여 ~/project/myimage 디렉토리의 내용을 가져오겠습니다. 또한 -c 플래그를 사용하여 이미지에 대한 구성 변경 사항을 지정합니다. 이 경우, 컨테이너가 이 이미지에서 시작될 때 실행할 기본 명령을 정의하는 CMD 지침을 설정합니다.

docker image import -c 'CMD ["/bin/cat", "/hello.txt"]' ~/project/myimage myimage:latest

이 명령어에서:

  • -c 'CMD ["/bin/cat", "/hello.txt"]'는 이미지의 기본 명령을 /bin/cat /hello.txt로 설정합니다. -c 플래그를 사용하면 CMD, ENTRYPOINT, ENV, EXPOSE, LABEL, ONBUILD, STOPSIGNAL, USER, WORKDIR와 같은 Dockerfile 지침을 적용할 수 있습니다.
  • ~/project/myimage는 파일 시스템 내용이 포함된 로컬 디렉토리의 경로입니다.
  • myimage:latest는 가져온 이미지에 대한 원하는 저장소 및 태그입니다.

이 명령어를 실행한 후 Docker 는 ~/project/myimage 디렉토리의 내용을 기반으로 새 이미지를 생성하고 지정된 CMD 구성을 적용합니다.

가져오기 및 구성을 확인하려면 이미지를 나열할 수 있습니다.

docker images

저장소가 myimage이고 태그가 latest인 이미지가 표시되어야 합니다.

이제 이 이미지에서 컨테이너를 실행하여 CMD 지침이 올바르게 적용되었는지 확인해 보겠습니다.

docker run myimage:latest

이 명령어는 myimage:latest 이미지에서 컨테이너를 시작합니다. CMD/bin/cat /hello.txt로 설정했으므로 컨테이너는 이 명령을 실행하고 hello.txt 파일의 내용인 "Hello, Docker!"를 출력해야 합니다.

터미널에 "Hello, Docker!"가 출력되어야 합니다. 이는 디렉토리 내용이 성공적으로 가져와지고 CMD 구성이 적용되었음을 확인합니다.

요약

이 Lab 에서는 docker image import 명령어를 사용하여 다양한 소스에서 Docker 이미지를 생성하는 방법을 배웠습니다. 먼저 원격 URL 에서 직접 이미지를 가져오는 것으로 시작하여 수동 다운로드 없이 온라인으로 호스팅된 이미지 tarball 을 로드하는 방법을 시연했습니다. 여기에는 curl을 사용하여 샘플 tarball 을 다운로드한 다음 URL 을 입력으로 사용하여 docker image import 명령어를 사용하는 것이 포함되었으며, 저장소 및 태그를 지정하거나 지정하지 않고 가져오는 방법을 보여주었습니다.

제공된 내용에 자세히 설명되어 있지는 않지만, 후속 단계에서는 STDIN 을 사용하여 로컬 tarball 파일에서 이미지 가져오기, 더 나은 추적을 위해 커밋 메시지를 사용하여 가져오기, 새로운 구성을 적용하면서 로컬 디렉토리에서 가져오기를 다룰 것입니다. 이러한 단계는 Docker 이미지를 생성하고 관리하기 위한 docker image import 명령어의 유연성과 다양한 사용 사례를 더욱 잘 보여줄 것입니다.