Dockerfile과 빌드에 필요한 파일을 공유하면 이미지를 공유할 수 있습니다. 하지만 이런 방식보다 이미지 자체를 공유한다면 누구나 곧바로 이미지 하나만을 이용해 컨테이너를 실행할 수 있을 것입니다.
이렇게 이미지를 공유할 수 있게 도와주는 곳이 docker hub 입니다. 공식 도커 이미지 레지스트리라 생각하면 됩니다.
https://hub.docker.com/ 로 이동해서 로그인 한 뒤 자신의 레포지토리 만들어 저장소를 확보한 다음 이용하면 됩니다.
docker login
을 통해 연결할 수도 있고 호스트에 docker desktop에 로그인하면 자동으로 연결이 됩니다. (docker logout
으로 로그아웃)
레포지토리로 이동하면 해당 레포지토리로 푸쉬하는 명령어가 안내되어 있습니다. 로그인이 된 상태기 때문에 굳이 레포지토리를 지정하지 않아도 됩니다.
# 레포지토리에 이미지 저장 방법
# 1. 이미지 푸쉬
$ docker push [image_name:tag] : 해당 이미지를 docker hub에 저장합니다.
# 2. 곧바로 빌드
$ docker build -t [repo_name:repo_tag] [Dockerfile_path]
# 3. 현재 이미지의 태그만 바꿔서 저장
$ docker tag [image_name:new_tag] [repo_name:repo_tag]
3번 방법은 복사의 개념이라 이전 이미지의 태그가 바뀌는게 아닌 새로운 태그의 복제본이 생깁니다.
이미지의 크기가 1GB 정도라 했을 때, 용량이 그대로 저장되는 것은 아닙니다. 만약 베이스이미지가 docker hub에서 공식적으로 제공하는 이미지라면 그것을 제외한 새로운 레이어만 저장되는 방식입니다.
docker pull [image_name:tag] : 레포지토리의 이미지를 불러옵니다.
다만 docker pull
을 이용하지 않아도 run
을 실행할 수 있습니다. 앞서 docker hub에서 제공하는 공식 이미지를 굳이 불러오지 않아도 자동으로 탐색했듯이, 로그인 상태에서 로컬에 이미지가 없다면 자동으로 레포지토리를 탐색합니다.
조심할 점은 이름이 겹칠 경우 로컬을 우선으로 하게되니 유의해야 합니다.