Docker Hub 퀵스타트

Docker Hub 퀵스타트

Docker Hub 라이브러리에서 사전 빌드된 이미지를 찾고 실행한 다음, 커스텀 이미지를 빌드해 Docker Hub에 공유하는 전 과정을 안내해요.

출처: 문서

본문

Docker Hub는 방대한 사전 빌드된 이미지와 리소스 라이브러리를 제공해 개발 워크플로를 가속하고 설정 시간을 줄여줘요. Docker Hub의 사전 빌드된 이미지 위에 빌드한 다음 저장소를 사용해 자신의 이미지를 팀이나 수백만 명의 다른 개발자와 공유·배포할 수 있어요.

이 가이드는 사전 빌드된 이미지를 찾고 실행하는 방법을 보여준 다음, 커스텀 이미지를 만들고 Docker Hub를 통해 공유하는 과정을 안내해요.

사전 요구사항(Prerequisites)

1단계: Docker Hub 라이브러리에서 이미지 찾기

Docker Hub 자체, Docker Desktop Dashboard, 또는 CLI에서 콘텐츠를 검색할 수 있어요.

Docker Hub에서 콘텐츠를 검색·탐색하려면:

Docker Hub

  1. Docker Hub Explore 페이지로 이동해요.

    Explore 페이지에서 카탈로그나 카테고리로 탐색하거나 검색을 사용해 콘텐츠를 빠르게 찾을 수 있어요.

  2. Categories에서 Web servers를 선택해요.

    결과가 표시된 후 페이지 왼쪽의 필터를 사용해 결과를 더 필터링할 수 있어요.

  3. 필터에서 Docker Official Image를 선택해요.

    신뢰 콘텐츠로 필터링하면 Docker와 검증된 게시 파트너가 큐레이션한 고품질·안전한 이미지만 볼 수 있어요.

  4. 결과에서 nginx 이미지를 선택해요.

    이미지를 선택하면 이미지 사용법을 자세히 알 수 있는 페이지가 열려요. 페이지에서 이미지를 풀할 docker pull 명령도 찾을 수 있어요.

Docker Desktop

  1. Docker Desktop Dashboard를 열어요.

  2. Docker Hub 뷰를 선택해요.

    Docker Hub 뷰에서 카탈로그나 카테고리로 탐색하거나 검색을 사용해 콘텐츠를 빠르게 찾을 수 있어요.

  3. 검색 상자를 비워두고 Search를 선택해요.

    검색 결과가 표시되고 검색 상자 옆에 추가 필터가 나타나요.

  4. 검색 필터 아이콘을 선택한 다음 Docker Official Image와 Web Servers를 선택해요.

  5. 결과에서 nginx 이미지를 선택해요.

CLI

  1. 터미널 창을 열어요.

    [!TIP]

    Docker Desktop Dashboard에는 내장 터미널이 있어요. Dashboard 하단에서 >_ Terminal을 선택해 열어요.

  2. 터미널에서 다음 명령을 실행해요.

    $ docker search --filter is-official=true nginx
    

    Docker Hub와 Docker Desktop 인터페이스와 달리 docker search 명령으로는 카테고리로 탐색할 수 없어요. 명령에 대한 자세한 내용은 docker search를 봐요.

이제 이미지를 찾았으니, 디바이스에서 풀·실행할 차례예요.

2단계: Docker Hub에서 이미지 풀 및 실행

CLI나 Docker Desktop Dashboard를 사용해 Docker Hub의 이미지를 실행할 수 있어요.

Docker Desktop

  1. Docker Desktop Dashboard의 Docker Hub 뷰에서 nginx 이미지를 선택해요. 자세한 내용은 1단계를 참조해요.

  2. nginx 화면에서 Run을 선택해요.

    이미지가 디바이스에 없으면 Docker Hub에서 자동으로 풀해요. 이미지 풀은 연결 상태에 따라 몇 초에서 몇 분이 걸릴 수 있어요. 이미지가 풀되면 Docker Desktop에 창이 나타나고 실행 옵션을 지정할 수 있어요.

  3. Host port 옵션에서 8080을 지정해요.

  4. Run을 선택해요.

    컨테이너가 시작된 후 컨테이너 로그가 나타나요.

  5. 8080:80 링크를 선택해 서버를 열거나 웹 브라우저에서 http://localhost:8080을 방문해요.

  6. Docker Desktop Dashboard에서 Stop 버튼을 선택해 컨테이너를 중지해요.

CLI

  1. 터미널 창을 열어요.

    [!TIP]

    Docker Desktop Dashboard에는 내장 터미널이 있어요. Dashboard 하단에서 >_ Terminal을 선택해 열어요.

  2. 터미널에서 다음 명령을 실행해 Nginx 이미지를 풀·실행해요.

    $ docker run -p 8080:80 --rm nginx
    

    docker run 명령은 먼저 docker pull을 실행할 필요 없이 이미지를 자동으로 풀·실행해요. 명령과 그 옵션에 대해 더 알아보려면 docker run CLI reference를 봐요. 명령을 실행하면 다음과 비슷한 출력이 보일 거예요.

    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    a480a496ba95: Pull complete
    f3ace1b8ce45: Pull complete
    11d6fdd0e8a7: Pull complete
    f1091da6fd5c: Pull complete
    40eea07b53d8: Pull complete
    6476794e50f4: Pull complete
    70850b3ec6b2: Pull complete
    Digest: sha256:28402db69fec7c17e179ea87882667f1e054391138f77ffaf0c3eb388efc3ffb
    Status: Downloaded newer image for nginx:latest
    /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
    /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
    10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
    10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
    /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
    /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
    /docker-entrypoint.sh: Configuration complete; ready for start up
    2024/11/07 21:43:41 [notice] 1#1: using the "epoll" event method
    2024/11/07 21:43:41 [notice] 1#1: nginx/1.27.2
    2024/11/07 21:43:41 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
    2024/11/07 21:43:41 [notice] 1#1: OS: Linux 6.10.11-linuxkit
    2024/11/07 21:43:41 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
    2024/11/07 21:43:41 [notice] 1#1: start worker processes
    2024/11/07 21:43:41 [notice] 1#1: start worker process 29
    ...
    
  3. http://localhost:8080을 방문해 기본 Nginx 페이지를 보고 컨테이너가 실행 중인지 확인해요.

  4. 터미널에서 Ctrl+C를 눌러 컨테이너를 중지해요.

이제 설정이나 구성 없이 웹 서버를 실행했어요. Docker Hub는 사전 빌드된 바로 사용 가능한 컨테이너 이미지에 대한 즉시 접근을 제공해서, 소프트웨어를 수동으로 설치·구성할 필요 없이 애플리케이션을 빠르게 풀·실행할 수 있게 해줘요. Docker Hub의 방대한 이미지 라이브러리로 애플리케이션을 쉽게 실험·배포해 생산성을 높이고 새 도구, 개발 환경 설정, 또는 기존 소프트웨어 위에 빌드하기가 쉬워져요.

또한 Docker Hub의 이미지를 확장해 특정 요구에 맞는 자체 이미지를 빠르게 빌드·커스터마이즈할 수 있어요.

3단계: 이미지를 Docker Hub에 빌드·푸시하기

  1. 애플리케이션을 지정하는 Dockerfile을 만들어요.

    FROM nginx
    RUN echo "<h1>Hello world from Docker!</h1>" > /usr/share/nginx/html/index.html
    

    이 Dockerfile은 Docker Hub의 Nginx 이미지를 확장해 간단한 웹사이트를 만들어요. 몇 줄만으로 Docker를 사용해 정적 웹사이트를 쉽게 설정·커스터마이즈·공유할 수 있어요.

  2. 다음 명령을 실행해 이미지를 빌드해요. <YOUR-USERNAME>을 Docker ID로 바꿔요.

    $ docker build -t <YOUR-USERNAME>/nginx-custom .
    

    이 명령은 이미지를 빌드하고 Docker가 Docker Hub에서 어느 저장소로 푸시할지 이해하도록 태그를 지정해요. 명령과 그 옵션에 대해 더 알아보려면 docker build CLI reference를 봐요. 명령을 실행하면 다음과 비슷한 출력이 보일 거예요.

    [+] Building 0.6s (6/6) FINISHED                      docker:desktop-linux
     => [internal] load build definition from Dockerfile                  0.0s
     => => transferring dockerfile: 128B                                  0.0s
     => [internal] load metadata for docker.io/library/nginx:latest       0.0s
     => [internal] load .dockerignore                                     0.0s
     => => transferring context: 2B                                       0.0s
     => [1/2] FROM docker.io/library/nginx:latest                         0.1s
     => [2/2] RUN echo "<h1>Hello world from Docker!</h1>" > /usr/share/  0.2s
     => exporting to image                                                0.1s
     => => exporting layers                                               0.0s
     => => writing image sha256:f85ab68f4987847713e87a95c39009a5c9f4ad78  0.0s
     => => naming to docker.io/mobyismyname/nginx-custom                  0.0s
    
  3. 다음 명령을 실행해 이미지를 테스트해요. <YOUR-USERNAME>을 Docker ID로 바꿔요.

    $ docker run -p 8080:80 --rm <YOUR-USERNAME>/nginx-custom
    
  4. http://localhost:8080을 방문해 페이지를 봐요. Hello world from Docker!가 보일 거예요.

  5. 터미널에서 CTRL+C를 눌러 컨테이너를 중지해요.

  6. Docker Desktop에 로그인해요. Docker Hub에 이미지를 푸시하려면 먼저 로그인해야 해요.

  7. 다음 명령을 실행해 이미지를 Docker Hub에 푸시해요. <YOUR-USERNAME>을 Docker ID로 바꿔요.

    $ docker push <YOUR-USERNAME>/nginx-custom
    

    [!NOTE]

    Docker Desktop 또는 명령줄을 통해 Docker Hub에 로그인되어 있어야 하며, 위 단계에 따라 이미지 이름도 올바르게 지정해야 해요.

    명령은 이미지를 Docker Hub에 푸시하고, 저장소가 없으면 자동으로 만들어요. 명령에 대해 더 알아보려면 docker push CLI reference를 봐요. 명령을 실행하면 다음과 비슷한 출력이 보일 거예요.

    Using default tag: latest
    The push refers to repository [docker.io/mobyismyname/nginx-custom]
    d0e011850342: Pushed
    e4e9e9ad93c2: Mounted from library/nginx
    6ac729401225: Mounted from library/nginx
    8ce189049cb5: Mounted from library/nginx
    296af1bd2844: Mounted from library/nginx
    63d7ce983cd5: Mounted from library/nginx
    b33db0c3c3a8: Mounted from library/nginx
    98b5f35ea9d3: Mounted from library/nginx
    latest: digest: sha256:7f5223ae866e725a7f86b856c30edd3b86f60d76694df81d90b08918d8de1e3f size: 1985
    

이제 저장소를 만들고 이미지를 푸시했으니, 저장소를 보고 그 옵션을 살펴볼 차례예요.

4단계: Docker Hub에서 저장소 보기 및 옵션 탐색

Docker Hub 또는 Docker Desktop 인터페이스에서 Docker Hub 저장소를 볼 수 있어요.

Docker Hub

  1. Docker Hub로 이동해 로그인해요.

    로그인하면 Repositories 페이지에 있어야 해요. 아니면 Repositories 페이지로 이동해요.

  2. nginx-custom 저장소를 찾아 해당 행을 선택해요.

    저장소를 선택하면 저장소에 대한 더 많은 세부 정보와 옵션이 표시돼요.

Docker Desktop

  1. Docker Desktop에 로그인해요.

  2. Images 뷰를 선택해요.

  3. Hub repositories 탭을 선택해요.

    Docker Hub 저장소 목록이 나타나요.

  4. nginx-custom 저장소를 찾아 행 위에 마우스를 올린 다음 View in Hub를 선택해요.

    Docker Hub가 열리고 이미지에 대한 더 많은 세부 정보를 볼 수 있어요.

이제 저장소가 Docker Hub에 존재한다는 것을 확인했고, 그 옵션도 더 발견했어요. 다음 단계를 보면 일부 옵션에 대해 더 배울 수 있어요.

다음 단계(Next steps)

저장소 정보 추가로 사용자가 이미지를 찾고 사용하도록 도와줘요.

더 알아보기 (Learn more)