본문 바로가기
DevOps

docker hub repositories에 image push

by Yoon_estar 2024. 3. 19.
728x90
반응형

이미지 올리기(push)

- Dockerfile을 통해 생성된 이미지나 docker commit을 통해 생성된 이미지를 저장하는 곳을 registry라고 한다.
- Registry는 공개적으로 사용하는 Public registry와 회사 내부에서만 접근되도록 하는 Private registry가 있다.
1. dockerhub의 계정을 만든 후 서버에서 docker login 명령어를 통해 도커 허브에 로그인한다.
2. docker tag : hub.docker.com에 본인의 계정의 Repositories에 넣기 위한 태그를 수행한다.
- tag는 이미지의 새로운 참 조명을 넣는 방법이다.
- OS, 버전 표시로 활용하기도한다.

docker [image] tag → push

  • hub.docker.com에 본인의 계정의 Repository에 생성한 이미지를 업로드하기 위해서는 본인 계정을 이미지명 앞에 붙여야 docker push 수행시 계정으로 찾아가 저장된다.
# docker images
REPOSITORY                   TAG             IMAGE ID       CREATED        SIZE
debian                       10              1048ff9a62c6   2 days ago     114MB
debian                       latest          c978d997d5fe   2 days ago     117MB
py_flask                     1.0             40ea0a453ca5   3 days ago     415MB
myweb                        3.0             a515b80b7c99   3 days ago     250MB
fc-webserver                 1.0             dd8d15682c3f   3 days ago     182MB
prom/prometheus              latest          6a5ddde754b6   2 weeks ago    254MB
nginx                        latest          e4720093a3c1   4 weeks ago    187MB
grafana/grafana              latest          ff21454da76a   5 weeks ago    406MB
httpd                        2.4             59bcd61b45fd   8 weeks ago    167MB
redis                        7               d1397258b209   2 months ago   138MB
portainer/portainer-ce       latest          1a0fb356ea35   3 months ago   294MB
prom/node-exporter           latest          72c9c2088986   4 months ago   22.7MB
haproxytech/haproxy-alpine   2.5             3fcad65be198   4 months ago   73.2MB
mysql                        5.7-debian      6dca13361869   7 months ago   463MB
dbgurum/haproxy              echo            009bf09ede4c   9 months ago   5.14MB
nginx                        1.25.0-alpine   fe7edaf8a8dc   9 months ago   41.4MB
centos                       7               eeb6ee3f44bd   2 years ago    204MB
centos                       8               5d0da3dc9764   2 years ago    231MB
ubuntu                       16.04           b6f507652425   2 years ago    135MB
nginx                        1.19            f0b8a9a54136   2 years ago    133MB
ubuntu                       14.04           13b66b487594   2 years ago    197MB
leecloudo/stress             1.0             77788a7c0c8d   3 years ago    146MB
google/cadvisor              latest          eb1210707573   5 years ago    69.6MB
dbgurum/nginxlb              1.0             6b0f9b1f18b3   44 years ago   230MB

# docker image tag nginx:1.25.0-alpine estar9801/mynginx:v1.0

!!! 생성 된 것 확인
# docker images
REPOSITORY                   TAG             IMAGE ID       CREATED        SIZE
estar9801/mynginx            v1.0            fe7edaf8a8dc   9 months ago   41.4MB
estar987/mynginx             v1.0            fe7edaf8a8dc   9 months ago   41.4MB

# # docker push estar9801/mynginx:v1.0

docker [image] tag

  • hub.docker.com에 push된 이미지를 다른 위치에서 pull 해보고, docker run으로 정상 이미지인지 확인해본다.
# docker pull estar9801/mynginx:v1.0
# docker run -d -p 8001:80 --name=myweb1 estar9801/mynginx:v1.0
# curl localhost:8001

docker image 백업 및 이전

  • dokcer save 명령을 통해 Layer로 구성된 이미지를 *.tar 파일로 묶어 파일로 저장한다.
  • 해달 파일을 전달 받은 컴퓨터에서 docker load를 통해 이미지로 등록한다.
# docker image save py_flask:1.0 > py_flask:1.0.tar
# ls -lh
합계 404M
-rw-r--r-- 1 root root 404M  3월 19 07:50 py_flask:1.0.tar
# docker image save py_flask:1.0 | gzip > py_flask\\:1.0.tar.gz
# docker image save py_flask:1.0 | bzip2 > py_flask\\:1.0.tar.bz2
# ls
py_flask:1.0.tar  py_flask:1.0.tar.bz2  py_flask:1.0.tar.gz

보내는 서버
# scp py_flask:1.0.tar  py_flask:1.0.tar.bz2  py_flask:1.0.tar.gz 192.168.207.132:/root/download/

받는 서버
# docker image load < py_flask:1.0.tar.gz
Loaded image: py_flask:1.0
# docker images
# docker run -itd -p 8200:80 py_flask:1.0
# curl localhost:8200

docker image 삭제

  • Docker Hub를 통해 다운로드 (pull) 받은 이미지는 종류에 따라 용량이 다르다.
  • 이미지를 계속 다운만 받게되면 공간이 부족해진다.
  • 이런 문제를 해결하기 위해 docker image save를 통해 이미지를 백업하거나 주기적으로 업무에 사용하는 이미지와 사용하지 않는 이미지를 구분하여 관리하고, 불필요한 이미지는 삭제하는 것이 좋다.
# docker image rm [옵션] {이미지명[:tag] | 이미지ID}
# docker rmi [옵션] {이미지명[:tag] | 이미지ID}

!! 이미지 전체 삭제
# docker rmi $(docker images -q)

!! 특정 이미지명이 포함된 것만 삭제
# docker rmi $(docker images | grep centos)

!! 특정 이미지명이 포함된 것만 제외하고 모두 삭제
# docker rmi $(docker images | grep centos)

!! 이미지를 사용중인 컨테이너가 있다.
# docker ps -a

!! 이미지를 삭제하면 에러가 발생한다.

!! 해당 컨테이너 stop 후 rm 으로 컨테이너 삭제
# docker stop 0b123456dfa
# docker rm 0b123456dfa
반응형

'DevOps' 카테고리의 다른 글

컨테이너 격리 기술  (0) 2024.05.01
docker registry 구성과 관리  (0) 2024.03.25
docker image 이해와 구조 확인  (0) 2024.03.15
최신 docker 엔진(ver) update  (0) 2024.03.14
02. docker 컨테이너 가상화 & VM 가상화  (1) 2024.03.13