본문 바로가기

인프라/도커

도커 허브 사용법 (+buildx)

docker hub에 이미지 push, pull 하기 (+buildx)

1. dockerfile 작성 ex) spring

gradlew build로 jar 파일 패키징

FROM openjdk:17-jdk
WORKDIR /app
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","app.jar"]

2. 이미지 빌드

위 dockerfile이 있는 곳으로 가서 아래 명령어 실행

docker build -t username/repository:tag .

뒤에 - -push 하면 바로 hub에 올라감

repository로 이미지를 구분하고 tag로는 버전을 관리한다, tag 없으면 latest로 올라감

네이밍은 . _ - 와 소문자를 사용

이미 빌드가 되있거나 태그를 변경하려면 아래 명령어로 태깅

docker tag 이미지ID username/repository:tag

or

docker tag username/repository:tag username/repository:tag

2-1. 멀티 아키텍처 image 만들기 buildx

상황 ) 본인 환경이 맥 m1 arm 아키텍처에서 생성한 이미지를 amd 아키텍처에서 사용하면 오류가 발생함

  1. Buildx 인스턴스 생성
  2. docker buildx create --name mybuilder --use
  3. 빌더 인스턴스 시작: 생성한 빌더 인스턴스를 시작합니다.
  4. docker buildx inspect --bootstrap
  5. Buildx를 사용하여 이미지 빌드 및 푸시: 다음 명령어를 사용하여 여러 아키텍처를 대상으로 하는 이미지를 빌드하고 Docker Hub에 푸시합니다. 이 예제에서는 **linux/amd64*와 linux/arm64 아키텍처를 대상으로 합니다.
  6. docker buildx build --platform linux/amd64,linux/arm64 -t [Docker Hub 사용자명]/[이미지 이름]:[태그] . --push

3. docker login

docker login

4. 허브에 push

docker push username/repository:tag

docker hub에서 이미지 pull 하기

1. 이미지 검색

docker search 이미지명

2. pull

docker pull 이미지명:tag

tag 안 붙히면 latest이 태그인 이미지를 가져옴 (최신 태그가 아닌 latest 란 태그를 가진 이미지)