728x90

Docker Hub 연동


docker login [옵션] [서버]

Docker Hub에 로그인

  • Docker 리포지토리에 이미지 업로드를 위해 Docker Hub 로그인
  • 옵션
옵션 설명
--password, -p 비밀번호
--username, -u 사용자명

 

  • Docker Hub에 로그인
[root@localhost ~]# 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: khj708
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

 

 


 

docker image tag <Docker Hub 사용자명>/이미지명[:태그명]

이미지 태그

  • 이미지에 대한 태그 설정
  • [apline:latest]: 사용할 이미지
  • khj708: Docker Hub 사용자명
  • goorm: 이미지명
  • alpine: 태그명
[root@localhost ~]# docker image tag alpine:latest khj708/goorm:alpine

[root@localhost ~]# docker image ls
REPOSITORY     TAG       IMAGE ID       CREATED        SIZE
khj708/goorm   alpine    e66264b98777   3 weeks ago    5.53MB
alpine         latest    e66264b98777   3 weeks ago    5.53MB

 


 

docker image push <Docker Hub 사용자명>/이미지명[:태그명]

이미지 업로드

  • Docker Hub에 이미지 업로드를 위한 명령
  • 업로드할 이미지 이름 형식: <Docker Hub 사용자명>/이미지명:태그명 
  • docker login 명령으로 로그인이 되어야 함
  • 이미지 업로드
[root@localhost ~]# docker image push khj708/goorm:alpine
The push refers to repository [docker.io/khj708/goorm]
24302eb7d908: Mounted from library/alpine
alpine: digest: sha256:4ff3ca91275773af45cb4b0834e12b7eb47d1c18f770a0b151381cd227f4c253 size: 528

# 이름 형식이 맞지 않는 경우 이미지 업로드에 실패함
[root@localhost ~]# docker image push khj708/alpine:latest
The push refers to repository [docker.io/khj708/alpine]
An image does not exist locally with the tag: khj708/alpine

 

 


 

 

Dockerfile을 사용한 구성 관리


Dockerfile이란?

인프라 구성을 기술한 파일

  • Dockerfile은 Docker 상에서 작동시킬 컨테이너의 구성 정보를 기술하기 위한 파일
  • docker build: Dockerfile에 기술된 구성 정보를 바탕으로 Docker 이미지 작성

 

[출처] https://jfrog.com/knowledge-base/a-beginners-guide-to-understanding-and-building-docker-images/

 


 

Dockerfile의 기본 구문

Dockerfile은 텍스트 형식의 파일로 에디터 등을 사용하여 작성

  • 확장자 X
  • 인프라의 구성 정보 기술
  • Dockerfile에서 이미지를 빌드할 때 파일명을 명시적으로 지정해야 함

 

Dockerfile 명령

  • 명령은 대/소문자 상관없지만 관례적으로 대문자로 통일해서 사용
명령 설명
FROM 베이스 이미지 지정
RUN 명령 실행
CMD 컨테이너 실행 명령
LABEL 라벨 설정
EXPOSE 포트 익스포트
ENV 환경 변수
ADD 파일/디렉토리 추가
COPY 파일 복사
ENTRYPOINT 컨테이너 실행 명령
VOLUME 볼륨 마운트
USER 사용자 지정
WORKDIR 작업 디렉토리
ARG Dockerfile 안의 변수
ONBUILD 빌드 완료 후 실행되는 명령
STOPSIGNAL 시스템 콜 시그널 설정
HEALTHCHECK 컨테이너의 헬스 체크
SHELL 기본 쉘 설정

 

 


 

Dockerfile 작성

Dockerfile에는 'Docker 컨테이너를 어떤 Docker 이미지로부터 생성할지'라는 정보를 반드시 기술해야 함

=> 베이스 이미지

 

FROM 명령

  • FROM [이미지명]
  • FROM [이미지명]:[태그명]
  • FROM [이미지명]@[다이제스트]

 

  • CentOS를 베이스 이미지로 한 Dockerfile
  • 태그명을 생략하면 베이스 이미지의 최신 버전이 적용됨
# 베이스 이미지 설정
FROM centos:centos7

 

  • 다이제스트 확인
  • 이미지를 고유하게 특정할 때 사용
  • 다이제스트: Docker Hub에 업로드하면 자동으로 부여되는 식별자, 업로드하지 않은 이미지는 없음
[root@localhost ~]# docker image ls --digests khj708/goorm
REPOSITORY     TAG       DIGEST                                                                    IMAGE ID       CREATED       SIZE
khj708/goorm   alpine    sha256:4ff3ca91275773af45cb4b0834e12b7eb47d1c18f770a0b151381cd227f4c253   e66264b98777   3 weeks ago   5.53MB

# 다이제스트가 없음
[root@localhost ~]# docker image ls --digests khj/os
REPOSITORY   TAG       DIGEST    IMAGE ID       CREATED       SIZE
khj/os       1.1       <none>    a608bf012429   2 hours ago   231MB
khj/os       1.0       <none>    7c82097ba542   3 hours ago   231MB
728x90

+ Recent posts