본문 바로가기
Programming

Docker Hub 사용법 (push pull)

by 개발자 염상진 2023. 1. 19.

 

 

Docker Hub 사용법 push pull

 

Docker Hub는 로컬에서 생성한 이미지를 업로드해서 클라우드로 관리할 수 있는 환경입니다. CI/CD 를 구성하실 때 Docker Hub를 통해 코드를 컨테이너 단위로 관리할 수 있습니다.

 

 

이번 콘텐츠에서는 Docker Hub를 어떻게 사용하는지 알아보도록 하겠습니다.

 

기본 프로젝트 구성

 

아래 명령어로 기본 Node.js 기반 프로젝트를 실행합니다.

$ npm init -y

 

간단한 서버를 구성하기 위해 index.js파일을 생성하고 아래 코드를 입력합니다.

추가적으로 express 모듈을 설치합니다.

const express = require('express');
const app = express();

app.get('/', (req, res)=>{
        res.status(200).json("hello server");
})

app.listen('9191', ()=>{
        console.log('server is running on 9191 PORT');
})
~
$ npm install express

 

package.json 파일을 수정해줍니다.

{
  "name": "docker-push",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start" : "node index",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2"
  }
}

Dockerfile을 생성해줍니다.

$ touch Dockerfile

 

 

 

 

Docker Image build

 

Node.js를 Docker Image로 빌드합니다.

$ docker build -t my-node-image:1.0.0 .
Sending build context to Docker daemon  2.413MB
Step 1/6 : FROM node:16
 ---> aa2c07b3a605
Step 2/6 : LABEL author="about-tech"
 ---> Running in b79337a56800
Removing intermediate container b79337a56800
 ---> 52c44f2f38c3
Step 3/6 : WORKDIR /usr/src/app
 ---> Running in e9cf16667c11
Removing intermediate container e9cf16667c11
 ---> aeb2b3449d47
Step 4/6 : COPY package.json ./
 ---> f8be45ca5d0c
Step 5/6 : RUN npm install
 ---> Running in 2bfd29d2210e

added 57 packages, and audited 58 packages in 3s

7 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Removing intermediate container 2bfd29d2210e
 ---> 5a5d8942516f
Step 6/6 : CMD ["npm","run","start"]
 ---> Running in 202a43d13ac3
Removing intermediate container 202a43d13ac3
 ---> 9f10d47c3331
Successfully built 9f10d47c3331
Successfully tagged my-node-image:1.0.0

 

생성된 도커 이미지를 확인합니다.

$ docker images

 

 

 

 

Docker Hub Create Account

 

DockerHub 사이트로 이동해서 새로운 계정을 생성합니다. 

계정생성 후 CLI 환경에서 DockerHub에 로그인 해줍니다.

$ 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: myaccount
Password:

 

DockerHub 계정이 생성되면 해당 계정에 무제한의 이미지를 빌드해서 push 할 수 있습니다.

push하기 위해서는 {계정}/{repositoryName:tagname}을 입력하시면 됩니다.

 

$ docker push my-node-image:1.0.0

 

이렇게 입력하면 아래 에러가 발생합니다. Repository이름과 Hub 이름이 같아야 정상적으로 push 할 수 있기 때문입니다.

The push refers to repository [docker.io/account/my-repo]
An image does not exist locally with the tag: account/my-repo

 

생성된 태그이름을 변경&복사 해줍니다.

$ docker image tag {기존태그이름} {새로운태그이름}
$ docker image tag my-node-image:1.0.0 myaccount/my-node-image:1.0.0

 

새로운 이름의 이미지가 생성되었습니다. 

REPOSITORY                 TAG       IMAGE ID       CREATED          SIZE
my-node-image              1.0.0     9f10d47c3331   8 minutes ago    917MB
{myaccount}/my-node-image   1.0.0     9f10d47c3331   8 minutes ago    917MB

 

 

 

다시 DockerHub에 push 를 진행하면 정상적으로 이미지가 DockerHub에 올라갑니다.

$ docker push {myaccount}/my-node-image:1.0.0
The push refers to repository [docker.io/{myaccount}/my-node-image]
365a5fc631e4: Pushed 
0184d8759632: Pushed 
94d4edd99e59: Pushed 
136668aad748: Mounted from {myaccount}/pserver-image 
0146fd3bfbe1: Mounted from {myaccount}/pserver-image 
c93502166d2b: Mounted from {myaccount}/pserver-image 
0b1c009597ad: Mounted from {myaccount}/pserver-image 
b9b05a3855c6: Mounted from {myaccount}/pserver-image 
132e6b0c0edd: Mounted from {myaccount}/pserver-image 
d5ce45249ce1: Mounted from {myaccount}/pserver-image 
b7392dc58749: Mounted from {myaccount}/pserver-image 
083aacb889b3: Mounted from {myaccount}/pserver-image 
1.0.0: digest: sha256:65a78994a106d97555f5c6f434f80464ab9c78d7ff6de44a5c24d435f476fc9e size: 2840

 

DockerHub에 myProfile에 접속하시면 업로드된 이미지를 확인 할 수 있습니다.

 

DockerHub Pull

 

이제 이미지를 올렸으니 가져와서 이미지를 실행해보도록 하겠습니다.

DockerHub Repository에 들어가시면 오른쪽에 pull 방법이 나와있습니다.

 

아래 명령어로 DockerHub에 올라간 이미지를 가져올 수 있습니다. 

$ docker pull {myaccount}/my-node-image:1.0.0
Digest: sha256:65a78994a106d97555f5c6f434f80464ab9c78d7ff6de44a5c24d435f476fc9e
Status: Downloaded newer image for {myaccount}/my-node-image:1.0.0
docker.io/{myaccount}/my-node-image:1.0.0

 

 

기존 로컬에 이미지가 있으면 덮어쓰기 때문에 기존 이미지를 삭제하시고 정상적으로 pull 이 되는지 확인해보세요

$ docker rmi {REPOSITORY:TAG}

 

🚀️ 도움이 되셨다면 구독좋아요 부탁드립니다 👍️

 

 

당신을 위한 추천 글

 

 

React 정적 웹 페이지 배포하기(S3, AWS CodePipeline, 환경변수)

React를 통해 멋진 웹 애플리케이션을 만들었다면 많은 사람들이 이용할 수 있도록 배포를 진행해야 할 것입니다. 웹 애플리케이션을 배포하는 방법은 여러가지가 있는데요, 이번 콘텐츠에서는 R

about-tech.tistory.com

 

 

HTML5 웹페이지 만들기 #4 CSS3 사용법

CSS3 사용법 HTML 문서에서 CSS를 적용하는 방법은 크게 3가지가 있습니다. ① style 태그 사용 ② inline style 속성 사용 ③ Stylesheet 적용 CSS3 크기 지정 CSS3에서 크기를 지정할 수 있는 방법은 크게 3가

about-tech.tistory.com

 

 

CI/CD #4 배포 구성하기 AWS EC2 [최종]

이전글 2022.12.29 - [Programming] - CI/CD #1 배포 구성하기 Node.js 빌드 2022.12.29 - [Programming] - CI/CD #2 배포 구성하기 Dockerfile 2022.12.29 - [Programming] - CI/CD #3 배포 구성하기 Github Actions 이번 콘텐츠에서는 CI/CD

about-tech.tistory.com

 

댓글