자주 사용하는 Dockerfile(도커파일) 모음

2024. 11. 8. 23:33·클라우드/도커

내가 자주 사용하는 Dockerfile 정리 + 사용법도 간단하게 정리해본다!


Dockerfile 사용법

💡 도커 이미지 생성 (Dockerfile 기반)

  • 맨 마지막 점(.): . 위치에 존재하는 Dockerfile을 기반으로 도커 이미지를 생성하겠다는 의미
$ docker build -t test-img .
$ docker build -t (도커계정)/(이미지명):(태그) . 
# docker build -t my_account/test_img:latest .

 

 

💡생성한 이미지 도커허브에 Push

  • 생성한 도커 이미지를 허브에 Push    (다른 컴퓨터에서, 도커 허브에 접속해 이미지 다운로드 가능)
  • 깃허브 생각해보시라!   (로컬 파일을 ➔ 깃허브로 push하는 개념과 유사)
$ docker push (이미지명)
# docker build -t my_account/test_img:latest .

 

 

💡도커허브에서 이미지 다운로드 & 실행(run)

  • 참고로, local에 해당 이미지가 없다면 도커허브에서 이미지를 다운로드한다!
  • 가끔 이미지를 띄우는 데, 자꾸 pod이 꺼져서 문제였다면? 주목!
    • VM과 달리, pod는 그 안의 소스코드를 모두 실행 완료하면 자동으로 꺼진다.
    • 이를 방지하지 위해, sleep infinity나 /bin/sh 명령어 등등을 넣어준다
docker run -d ubuntu:22.04 --name test /bin/sh # 꺼지지 않고 계속 띄우기 위해 /bin/sh 명령어 이용
  • 위 명령어의 경우, ubuntu:22.04 이미지를 사용해
  • test라는 이름의 도커 컨테이너를 생성하고,
  • 백그라운드 (-d)로 실행한 후,
  • /bin/sh 명령어를 컨테이너에서 실행하게 함으로써 ➔ 컨테이너가 죽지 않도록 한다

 

💡도커 이미지 다운로드만!

$ docker pull ubuntu:latest
  • docker pull 명령어를 통해 실행은 하지 않고, 이미지를 도커허브에서 다운로드만 한다

 

💡local에 이미 이미지가 있지만, 도커허브에서 (이미지) 다운로드받아서 실행하고 싶을 때!

$ docker run --pull=always (이미지):(태그)
  • --pull=always 명령어를 통해 명시적으로 도커허브에서 다운로드하도록 설정 가능하다

파이썬 Dockerfile

💡로컬 환경의 Python 코드를 도커 이미지로 만들고 싶을 때 사용

# 기반 이미지 설정 (Python 3.8을 사용하는 공식 Python 이미지)
FROM python:3.8

# 작업 디렉토리를 /app으로 설정
WORKDIR /app

# 호스트 시스템의 현재 디렉토리에 있는 모든 파일을 컨테이너의 /app 디렉토리로 복사
COPY . /app

# 필요한 패키지들을 설치하기 위해 requirements.txt를 복사하고 의존성 설치
RUN pip install --no-cache-dir -r requirements.txt

# 앱 실행을 위한 명령
CMD ["python", "app.py"]

 

파이썬의 경우, 

pip freeze > requirement.txt 명령어를 통해 현재 패키지 정보를 적어둘 수 있다.

(백엔드 자바 스프링부트로 치면, gradle 문서와 비슷한 느낌이다)

 

 

새로 생성될 컨테이너에서도 같은 버전의 패키지가 설치되도록

local에서 requirements.txt를 설치 + Dockerfile을 통해 명시함으로써

Dockerfile을 통해 컨테이너에서 같은 버전의 패키지를 설치하게 한다

 

+

CMD ["python", "app.py"] 명령어를 통해

컨테이너 실행 시 app.py를 실행하도록 한다


고랭 Dockerfile

💡로컬 환경의 Golang 코드를 도커 이미지로 만들고 싶을 때 사용

# 기반 이미지 설정 (golang 1.20.5)
FROM golang:1.20.5-alpine3.17

# 작업 디렉토리를 /app으로 설정
WORKDIR /app

# 호스트 시스템의 test.go를 컨테이너의 .로 이동
COPY test.go .
# 호스트 시스템의 go.mod와 go.sum을 컨테이너의 ./로 이동
COPY go.mod go.sum ./

# 필요한 패키지들을 설치하기 위해 go mod download 명령어 수행
RUN go mod download
# 컨테이너 안에서 ./test.go파일을 testResult로 빌드
RUN go build -o testResult ./test.go
# 빌드한 testResult 실행
CMD ["./testResult"]

 

파이썬과 마찬가지로 

패키지를 컨테이너에서도 생성해야 하는데,

이때 go mod download 명령어를 쓰면 소스코드의 패키지 정보를 알아서 찾아서 다운로드해준다!
(golang이 똑똑하다!)

 

+

CMD ["./testResult"] 명령어를 통해

컨테이너 실행 시 빌드된 test.go 파일이 실행되도록 한다

 

 

'클라우드 > 도커' 카테고리의 다른 글

[도커] 도커 4: docker 파일 1 (Dockerfile)  (5) 2024.11.14
[도커] 도커 3: docker 명령어 모음 2탄 (도커 이미지 관련 명령어)  (3) 2024.11.13
[도커] 도커 2: docker 명령어 모음 1탄 (도커 컨테이너 관련 명령어)  (1) 2024.11.12
[도커] 도커 1: 도커의 3가지 컨셉  (1) 2024.11.11
[도커] 도커 0: 도커가 뭐고 왜 쓰나요?  (1) 2024.11.10
'클라우드/도커' 카테고리의 다른 글
  • [도커] 도커 3: docker 명령어 모음 2탄 (도커 이미지 관련 명령어)
  • [도커] 도커 2: docker 명령어 모음 1탄 (도커 컨테이너 관련 명령어)
  • [도커] 도커 1: 도커의 3가지 컨셉
  • [도커] 도커 0: 도커가 뭐고 왜 쓰나요?
KyuminKim
KyuminKim
컴퓨터공학과 학생의 이모저모 개발 일지 📝
  • KyuminKim
    이모저모
    KyuminKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 프로젝트 (2)
        • first-blog (2)
      • 클라우드 (22)
        • 도커 (14)
        • 쿠버네티스 (5)
        • AWS (2)
      • 알고리즘 (5)
        • 코드트리 (0)
        • 프로그래머스 (5)
      • 백엔드 (8)
      • 프론트엔드 (2)
      • 보안 (3)
        • 드림핵 (2)
      • python (3)
      • 네트워크 (1)
      • 기타 (6)
        • 2025 프로펙트 부트캠프(1차) | 클라우드 엔.. (0)
        • OSSCA | 2024 오픈소스 컨트리뷰션 아카데.. (0)
        • WIK (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코드트리
    주간레포트
    recover_your_data
    docker
    EC2
    고랭
    MySQL
    DP
    urf8
    characterencoding
    파이썬
    쿠버네티스
    코드트리조별과제
    DB
    티스토리챌린지
    진단평가
    탈퇴구현
    코딩테스트
    자료구조
    인코딩
    cannot send an empty message
    amazonlinux
    도커
    2024 당근 테크 밋업
    알고리즘
    character_set_server
    코딩트리조별과제
    오블완
    apiserver-runtime
    도커파일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
KyuminKim
자주 사용하는 Dockerfile(도커파일) 모음
상단으로

티스토리툴바