0. PUSH할 원격저장소를 만든다. docker hub (https://hub.docker.com/) 에서 로그인 후, 원격저장소를 생성한다. github저장소처럼 "ID/원격저장소명"으로 주소가 만들어진다.
1. 도커 로그인
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: [YourID]
Password: ******
Login Succeeded
2. Docker hub에 올릴 이미지를 찾는다. 여기서 필자는 REPOSITOY에 simple-nlp-app, TAG은 v1을 올릴 것이다. 그렇지만, 도커허브에 올릴 때는 ID/repository명 = docker image ls에서의 REPOSITORY 명이 동일해야한다. 따라서, 한번 변경이 필요하다.
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
simple-nlp-app v1 7108c8dbe574 6 minutes ago 2.73GB
simple-nlp-app v0 c82b9d4786fe 9 minutes ago 2.73GB
simple-nlp-app latest 798c7cf60156 2 days ago 2.72GB
nginx latest ac8efec875ce 6 days ago 142MB
alpine/git latest 22d84a66cda4 3 weeks ago 43.6MB
hubproxy.docker.internal:5000/docker/desktop-kubernetes kubernetes-v1.25.2-cni-v1.1.1-critools-v1.24.2-cri-dockerd-v0.2.5-1-debian 09d7e1dbc2c4 2 months ago 363MB
k8s.gcr.io/kube-apiserver v1.25.2 97801f839490 2 months ago 128MB
k8s.gcr.io/kube-controller-manager v1.25.2 dbfceb93c69b 2 months ago 117MB
k8s.gcr.io/kube-scheduler v1.25.2 ca0ea1ee3cfd 2 months ago 50.6MB
k8s.gcr.io/kube-proxy v1.25.2 1c7d8c51823b 2 months ago 61.7MB
k8s.gcr.io/pause 3.8 4873874c08ef 5 months ago 711kB
k8s.gcr.io/etcd 3.5.4-0 a8a176a5d5d6 6 months ago 300MB
k8s.gcr.io/coredns v1.9.3 5185b96f0bec 6 months ago 48.8MB
docker/desktop-vpnkit-controller v2.0 8c2c38aa676e 19 months ago 21MB
docker/desktop-storage-provisioner v2.0 99f89471f470 19 months ago 41.9MB
nginx 1.14.2 295c7be07902 3 years ago 109MB
dattarajrao/simple-app latest 3f4a466b587c 4 years ago 132M
3. 두 가지 방법이 있는데, 첫 번째는 docker image tag을 이용하는 방법.
- docker image tag SOURCE_IMAGE[:TAG] TARGET[:TAG] . 이 명령어는 원본 이미지에서 타겟이이지로 리포지토리 명을 다시 테그를 달 수 있게한다.
- docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] : 이 명령어는 실행중인 컨테이너를 다시 이미지화하는 방법이다.
아래의 예시는 docker image tag을 이용한 방법이다. tag을 이용할 때, 미리 생성한 원격저장소의 이름과 동일하게 해준다. 그렇지 않으면 아래와 같이 에러가 뜬다.
$ docker push 4pymgalion/simple-nlp-app:v1
The push refers to repository [docker.io/4pymgalion/simple-nlp-app]
An image does not exist locally with the tag
따라서, 아래와 같이 원격저장소의 ID/저장소명과 같이 도커 이미지를 테그를 다시 달아준다. 그러면 추가로 "4pygmalion/simple-nlp-app"라는 리포지토리 이름을 가진 이미지가 생성된다.
$ docker tag simple-nlp-app:v1 4pygmalion/simple-nlp-app:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
4pygmalion/simple-nlp-app latest 7108c8dbe574 14 minutes ago 2.73GB
simple-nlp-app v1 7108c8dbe574 14 minutes ago 2.73GB
nginx latest ac8efec875ce 6 days ago 142MB
alpine/git latest 22d84a66cda4 3 weeks ago 43.6MB
hubproxy.docker.internal:5000/docker/desktop-kubernetes kubernetes-v1.25.2-cni-v1.1.1-critools-v1.24.2-cri-dockerd-v0.2.5-1-debian 09d7e1dbc2c4 2 months ago 363MB
k8s.gcr.io/kube-apiserver v1.25.2 97801f839490 2 months ago 128MB
k8s.gcr.io/kube-scheduler v1.25.2 ca0ea1ee3cfd 2 months ago 50.6MB
4. 푸시: Docker push 도커이미지/리포지토리명
$ docker push 4pygmalion/simple-nlp-app:latest
The push refers to repository [docker.io/4pygmalion/simple-nlp-app]
e56c84262ba7: Pushing [> ] 35.33kB/2.22MB
cec010fb56f8: Pushing [> ] 544.8kB/2.262GB
5af9244c08c5: Pushing [==================================================>] 5.632kB
fac360d91a98: Preparing
c43e4ddc5992: Preparing
e5896e4ce6c3: Waiting
7c40600bc52d: Waiting
d326469892d9: Waiting
b5ebffba54d3: Waiting
반응형
'Data science > MLOps' 카테고리의 다른 글
클러스터 구성 / 쿠버네티스 설치(master, worker node) (0) | 2023.01.08 |
---|---|
도커 이미지에서 딥러닝 GPU가속 사용하기 (0) | 2022.12.17 |
[쿠버네티스] 서비스(Service) 이용하기, 클러스터IP에 접속이 안될 때, (0) | 2022.12.10 |
[MLOps 해제(解題) 1] MLOps workflow에 대한 기본 이해 (0) | 2022.11.05 |
[5분 컷 이해] Docker compose 이해하기 (0) | 2022.11.04 |