[도커] Pushing and Pulling to and from Docker Hub

DongGu·2021년 3월 31일
0

https://ropenscilabs.github.io/r-docker-tutorial/04-Dockerhub.html
를 이해하면서 정리한 글입니다.

Lesson Objectives

이미지가 어디서 나오는지 이해하기

도커허브에서 도커이미지 가져오기(Pulling)

도커허브에 도커이미지 푸쉬하기(Pushing)

Getting an image from Docker Hub

도커허브는 도커이미지가 저장되는 장소다. 아래와 같이 타이핑함으로써 첫 이미지를 실행시켜볼 수 있다.
docker run --rm -p 8787:8787 rocker/verse

소프트에어는 그 실행하려고 한 이미지가 내 컴퓨터에서 이용한지부터 확인한다. 만약 도커허브로부터 다운로드되어 있지 않으면(내 컴퓨터에 없으면), 도커허브로부터 자동적으로 이미지를 가져온다. 만약 이미지를 가져오고 싶은데, 자동으로 가져오지 않으면 아래 명령줄을 타이핑하면 된다.
docker pull rocker/verse

Getting an image to Docker Hub

도커 이미지를 스스로 만들었고, 이것을 세상사람들과 공유하고 싶을 때를 상상해보라. 그냥 https://hub.docker.com/에 회원가입 후 이메일 인증을 하고 도커이미지를 업로드하기만 하면 된다.

  1. 'https://hub.docker.com/' 로그인하기

  2. 'Create Repository' 클릭하기

  3. 이름을 정하고 간단한 설명을 덧붙이고 Create를 클릭한다.

  4. 커맨드라인(cmd 명령어창)에서 도커허브에 로그인해라
    docker login --username=yourhubusername --email=youremail@company.com

    도커허브 계정에 저장된 정보와 입력한 이름, 이메일, 비밀번호가 정확했다면 아래 메시지 창이 뜰 것이다.

    WARNING: login credentials saved in /home/username/.docker/config.json
    Login Succeded

  5. 사용 중인 이미지의 이름을 확인해라
    docker images
    그러면 아래와 같은 내용들을 확인할 수 있다.

    그러고 나서 너의 이미지를 태그해라
    docker tag bb38976d03cf yourhubusername/verse_gapminder:firsttry

    숫자들은 도커 이미지 ID와 같아야 하고, :firsttry가 태그다. 일반적으로 좋은 태그 이름은 어떤 컨테이너와 잘 맞을지 알려주는 알려준다. 만약 그 컨테이너가 논문분석을 담고 있다면, 논문의 DOI나 발행번호를 활용하는 것이 좋다. 어떤 것이든 업로드하려는 도커이미지이 목적을 잘 설명해주는 것이 좋다.

  6. 도커이미지를 생성한 레포지토리에 저장한다
    docker push yourhubusername/verse_gapminder

완료되면 도커이미지는 도커허브 이용자들에게 사용될 수 있다.

Saving and loading images

도커허브에 푸쉬하는 것만을 훌륭하지만, 몇 가지 단점이 있다.

  1. 대역폭 - 많은 ISP들은 대역폭을 다운로드하는 것보다 더 작은 업로드 대역폭을 가졌다.
  2. 프라이빗 리포지토리를 사용해서 과금하고 있지 않은 이상, 푸싱과 퍼블리싱이 동일하다.
  3. 다량의 이미지를 사용하는 작업을 하면, 매번 도커컨테이너를 사용할 때마다 도커허브로부터 도커 컨테이너를 가져오게 된다. 많은 작업을 하다보면 이는 늦어지게 만든다.

이런 문제를 해결하기 위해 tar archive로 로컬 환경에 저장하는 방법이 있다. 그러고 나서 이미지를 필요할 때마다 로드해올 수 있다.

도커이미지를 도커허브로부터 가져온 후 저장하기 위해, docker save 명령어를 활용하면 된다. 예를 들어 우리가 만들었던 verse_gapminder를 저장할 수 있다.
docker save verse_gapminder > verse_gapminder.tar

만약 tar archive에서 도커컨테이너를 로드하고 싶다면, docker load를 사용하면 된다.
docker load --input verse_gapminder.tar

profile
코딩하는 신방과생

0개의 댓글