Docker 알아가기 3 (Registry 에 Docker Image 푸시하기)
작성일
Docker 알아가기 3 (Registry 에 Docker Image 푸시하기)
Docker 가 무엇인지 궁금하시다면 이전 포스팅을 참고해주세요!
3. Registry 에 Docker Image 푸시하기
3.1 Registry 에 Docker Image Push
이제 우리가 만든 이미지를 인터넷에 업로드 하겠습니다!
이를 위해 이미지 저장소인 Container Registry 에 Docker Image Push 하겠습니다.
Container Registry 란 Dockerhub, GCP GCR, AWS ECR 등 다양하게 있습니다.
오픈소스의 경우는 Dockerhub 로 이미지를 푸시해주시면 되고 보통 회사에서는 클라우드 쓰는거에 따라서 custom 한 private 한 Docker Container Registry 를 운용합니다.
그래서 GCR 을 쓸 수도 있고 ECR 을 쓸 수도 있고 Dockerhub 를 자체 빌드해서 private 하게 쓸 수도 있습니다.
- GCP 에서 배포한다면, 레지스트리도 역시 GCP 서비스인 GCR 을 사용하는 식
3.2 Dockerhub 에 푸시하기
3.2.1 hub.docker.com 에 계정을 생성하고 로그인합니다.
- 웹 브라우저를 통해 http://hub.docker.com 에 접속
- sign in 버튼 클릭
- 계정 생성(Google ID 등과 연동 가능)
- 로그인
3.2.2 Registry 생성하기
- 상단의 ‘Repositories’ 버튼 클릭
- ‘Create Repository’ 버튼 클릭
- 레파지토리(Repository)명은 ‘my-fastapi-app’ 으로 설정 (임의로 지정해도 상관 없음)
- Visibility 옵션은 ‘public’ 으로 선택
- 모든 입력/선택이 완료되면 ‘Create’ 버튼 클릭
- 레파지토리(Repository) 생성 완료
$ docker push jfhdzzang/my-fastapi-app:tagname
docker push 명령어가 만들어졌습니다.
3.2.3 콘솔에서 Docker-Hub 로그인
- 콘솔상에서 docker login 명령어를 입력
- 사용자 id 입력
- 패스워드 입력
Error saving credentials: error storing credentials
에러 발생했습니다.
이 경우 해결방법
rm /usr/local/bin/docker-credential-osxkeychain
파일 삭제vi ~/.docker/config.json
파일을 열고"credsStoe": ""
이렇게 수정docker login
다시하면 로그인 가능!
3.2.4 Docker-Hub 에 이미지(Image) push
위에서 docker-hub 에 레파지토리 생성시 표시되었던 명령어를 참조해서 아래의 명령어를 입력합니다.
$ docker push jfhdzzang/my-fastapi-app:1.0
이때, Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
에러가
발생할 경우도 있습니다.
docker 다시 실행해주세요!
mac 에서 desktop 버전으로 설치했던 docker 를 실행해주면 됩니다.
자! 이제 다시 위의 명령어를 입력해주면 됩니다.
아니 또 에러가 발생한다니…..구글링을 해본 결과 docker hub 의 repository 이름과 로컬의 도커 이미지 REPOSITORY 이름을 똑같게 해줘야 하나 봅니다.
REPOSITORY 이름이 my-fastapi-app
으로만 되어있는데 jfhdzzang/my-fastapi-app
으로 변경해줍니다.
$ docker image tag my-fastapi-app jfhdzzang/my-fastapi-app
명령어를 실행해줍니다.
그러면 이렇게 image 가 하나 더 추가 된 걸 확인할 수 있습니다.
이제 다시 push 명령어를 실행해봅시다.
드디어 docker image 를 docker-hub 에 올리는데 성공했습니다.!!
잘 따라오셨어요 ㅎㅎ
이 부분이 새롭게 추가되었습니다. 제대로 hub 에 올라갔습니다.
3.2.5 docker-hub 로 부터 jfhdzzang/my-fastapi-app 이미지 가져오기(pull)
이제 docker-hub 로 부터 이미지를 가져오는 방법에 대해 알아보겠습니다.
$ docker images
명령어를 실행하면 가져오려는 image 가 이미 Local 에 있습니다.
$ docker rmi <image id>
를 통해 이미지를 삭제하도록 하겠습니다.
혹시 이 에러를 만난다면
Error response from daemon: conflict: unable to delete f47d59c5d50c (must be forced) - image is referenced in multiple repositories
$ docker rmi -f <image id>
를 사용하시면 강제로 지웁니다.
어차피 docker-hub 에 올라와있으니 걱정하지 말고 지워버립시다.
이제 docker 를 pull 해 오도록 하겠습니다.
pull 명령어를 사용하면 docker-hub 로 부터 이미지를 가져옵니다.
$ docker pull jfhdzzang/my-fastapi-app
이렇게 pull 을 해왔고 다시 이미지가 있는지 확인해보겠습니다.
jfhdzzang/my-fastapi-app
이미지를 docker-hub 에서 받은 것을 확인할 수 있습니다.!!
지금까지 docker image 를 Docker-Hub 에 push 하고 pull 하는 방법을 알아보았습니다.
감사합니다.
댓글남기기