자주 사용하는 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)  (3) 2024.11.14
[도커] 도커 3: docker 명령어 모음 2탄 (도커 이미지 관련 명령어)  (3) 2024.11.13
[도커] 도커 2: docker 명령어 모음 1탄 (도커 컨테이너 관련 명령어)  (1) 2024.11.12
[도커] 도커 1: 도커의 3가지 컨셉  (0) 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바