도커 허브 사용하기

알파로그·2023년 4월 17일
0

Linux 와 Docker

목록 보기
11/28

🔗 도커 허브

🔗 도커 허브 회원가입

✏️ 도커 허브에 내가만든 이미지 업로드 하기

📍 Docker 로그인 하기

  • Bash 에서 아래의 명령어를 입력하면 docker 허브에 로그일 할 수 있다.
    • username 과 pw 를 입력하면 되는데 참고로 email 로 로그인하는것은 불가능한 것 같다.
    • 도커허브 홈페이지에서 프로필의 username 을 확인한 뒤 로그인하면 된다.
docker login

📍 실습 준비

  • 정확한 실습을 위해서 이전에 사용했던 이미지와 컨테이너를 삭제한 후 진행하겠다.
# 디렉토리로 이동
cd /docker_projects/node_hello_1/project

# 수정모드
vim package.json
  • 아래 text 를 추가한다.
{
  "dependencies": {
    "express": "^4.18.2"
  }
}

  • 새로운 도커파일 생성하기
    • 수정
vim Dockerfile
  • 새로운 속성을 입력해준다
# 최신 node 이미지로 부터 시작
FROM node

# Working Directory 지정
# 도커 컨테이너의 작업폴더를 지정
WORKDIR /usr/src/app

# COPY package.json ./
# 앞의 ./는 HOST OS의 현재 폴더를 의미
# 뒤의 ./는 컨테이너의 현재 폴더(WORKDIR)를 의미
# 즉 외부에서 만들어둔 package.json 파일을 컨테이너 내부로 복사하겠다는 의미
COPY ./ ./

# node의 종속성 다운로드
# RUN 명령어는 컨테이너에서 실행
RUN npm install

# 안해도 되지만, 하는게 좋습니다.
# 이 컨테이너는 8080 포트를 사용한다는 의미 입니다.
# 일종의 광고
EXPOSE 8080

# docker run 명령에서 실행항 명령이, 이 명령어 부터는 제작타임이 아닌 런타임에서 실행됨
CMD ["node", "index.js"]
  • 도커 이미지 생성
docker build -t node_hello_1 .
  • 이미지를 확인해서 성공했는지 확인한다.
docker images
  • node_hello_1 가 있다면 성공
[root@localhost project]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
node_hello_1     latest    40a823117484   30 seconds ago   955MB
nginx_custom_1   latest    8950356e2e00   16 hours ago     135MB
nginx            latest    f71a4866129b   2 weeks ago      135MB
hello-world      latest    46331d942d63   12 months ago    9.14kB

⚠️ 똑같은 이름의 이미지를 하나 더 생성할경우

  • nginx_custom_1 를 한번 더 생성하게 되면 기존 이미지의 이름이 으로 변경되고 새롭게 이미지가 생성된다.
  • 이 이미지를 삭제하려면 실행을 중지시켜준 뒤 삭제해줘야 한다.
# 실행중인 이미지 삭제
docker rm -f 이미지id

  • 생성한 이미지 실행하기
docker run \
    --name=node_1 \
    -p 8080:8080 \
    --rm \
    -d \
    node_hello_1

📍 도커 허브에 이미지 업로드 규칙

  • 도커 허브에 이미지를 올리기 위한 규칙
    • 도커 허브에 이미지를 업로드 할 때는 파일명을 양식에 맞춰줘야한다.
    • username/ 이미지이름: 버전
# 업로드할 이미지
username/이미지명:버전

# 예시
choidaekuk/nginx_custom_1:1

⚠️ 도커 이미지는 한번 업로드하면 다시는 이름을 바꿀 수 없다.

  • 즉 이미 우리가 만들어놓은 nginx_custom_1 는 이 상태로 도커허브에 업로드 할 수 없다는 의미이다.
  • 이 경우에는 tag 를 사용하면 새로 이미지를 만들지 않아도 문제를 해결할 수 있다.

📍 Tag 사용하기

  • 아래의 명령어를 사용하면 기존이미지에 tag 를 추가하고 허브에 업로드 할 때 태그를 이미지 이름으로 사용할 수 있게된다.
# 태그 넣는 방법
docker tag 현재이미지 허브에업로드할이름

# 예시
docker tag node_hello_1 choidaekuk/node_hello_1:1
  • docker images 를 확인해보면 똑같은 id 에 우리가 새로 tag 한 이름을 가진 이미지가 생성된 걸 확인할 수 있다.
    • 추가로 tag 에 버전이 명시되었다.
[root@localhost project]# docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
choidaekuk/node_hello_1  1         40a823117484   6 minutes ago   955MB
node_hello_1             latest    40a823117484   6 minutes ago   955MB
nginx_custom_1           latest    8950356e2e00   16 hours ago    135MB
nginx                    latest    f71a4866129b   2 weeks ago     135MB
hello-world              latest    46331d942d63   12 months ago   9.14kB

📍 이미지 업로드하기

  • 아래의 명령어를 입력하면 도커허브에 이미지를 업로드 할 수 있다.
    • 처음에 만들었던 양식에 맞지않은 이미지를 올리면 업로드에 실패한다.
# 업로드 방법
docker push 도커아이디/이미지이름:버전

# 예시
docker push choidaekuk/node_hello_1:1
  • 실패할경우 나오는 메시지
877288431ac4: Preparing
cd6eccdff87e: Preparing
446432e746b2: Preparing
cae622739d69: Preparing
0705746112ce: Preparing
f8b6bd0ebb48: Waiting
080f1d3b99a1: Waiting
e45b973e5713: Waiting
3435b39010c2: Waiting
a8edac1cd93d: Waiting
9757c2df764b: Waiting
3bea8f5fca65: Waiting
denied: requested access to the resource is denied
  • 성공하면 업로드 처리과정이 나타나고 docker hub 홈페이지에 프로필에 들어가보면 업로드한 이미지를 확인할 수 있다.

✏️ 이미지 로컬로 가져오기

  • 내가 업로드한 이미지를 다시 가져올 수 있다.

📍 기존 이미지 삭제하기

  • 아래 명령어를 실행해 태그 이미지 까지 모두 삭제해준다.
docker rm -f node_1
docker rmi -f node_hello_1
docker rmi -f choidaekuk/node_hello_1:1

📍 도커 허브 이미지 가져오기

  • 아래 명령어를 입력하면 도커허브의 이미지를 가져올 수 있다.
docker pull choidaekuk/node_hello_1:1
  • 이미지를 확인하면 이미지를 로컬에서 확인할 수 있다.
[root@localhost project]# docker images
REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
choidaekuk/node_hello_1   1         40a823117484   34 minutes ago   955MB
nginx_custom_1            latest    8950356e2e00   17 hours ago     135MB
nginx                     latest    f71a4866129b   2 weeks ago      135MB
hello-world               latest    46331d942d63   12 months ago    9.14kB
  • 가져온 이미지 실행
docker run \
    --name=choidaekuk/node_hello_1:1 \
    -p 8080:8080 \
    --rm \
    -d \
    choidaekuk/node_hello_1:1
profile
잘못된 내용 PR 환영

0개의 댓글