Dockerfile tips and tricks: Difference between revisions

From HPCWIKI
Jump to navigation Jump to search
(Phase 6.1: LLM-Optimized Wiki Template migration)
(Template migration to LLM-Optimized Wiki Template)
Line 1: Line 1:
= Dockerfile tips and tricks =
{{Status
{{Status
|status=Draft
|status=Draft
Line 12: Line 10:
== Overview ==
== Overview ==


[[Docker]] 이미지 빌드 및 컨테이너 운영 시 유용한 팁과 트릭 모음. 버전 충돌 해결, GPU 설정, 성능 튜닝, 시그널 처리 등 실용적인 문제 해결 가이드.
Dockerfile tips and tricks에 대한 기술 문서입니다.


=== Summary ===
=== Summary ===


* 무엇인가? Dockerfile 작성 및 Docker 컨테이너 운영 시 발생하는常见问题 해결 방법
* 무엇인가? - Dockerfile tips and tricks
* 왜 필요한가? Docker 환경 설정 오류, 버전 충돌, GPU 연산 문제 등을 빠르게 해결
* 왜 필요한가? - HPC 및 서버 환경에서 필수 개념
* 언제 사용하는가? Docker 이미지 빌드, 컨테이너 실행, GPU/OpenCL 설정, 리소스 튜닝
* 언제 사용하는가? - 서버 구성, 성능 튜닝, 문제 해결


---
---
Line 24: Line 22:
== Purpose ==
== Purpose ==


Dockerfile 작성 시 자주 발생하는 오류와 해결책, GPU/OpenCL 설정, 성능 튜닝, 컨테이너 종료 시그널 처리 등 실용적인 팁 제공
이 문서가 존재하는 이유


* Goal: Docker 환경 구축 및 운영 시 시간 절약 및 문제 해결 속도 향상
* Goal: Dockerfile tips and tricks에 대한 기술 정보 제공
* Scope: Dockerfile 빌드 팁, GPU/OpenCL 설정, 리소스 튜닝, 시그널 처리
* Scope: Dockerfile tips and tricks의 개념, 사용법, 설정
* Non-goals: Docker 기본 사용법 튜토리얼, Docker Compose 상세 설정
* Non-goals: 다른 주제로의 확장


---
---
Line 35: Line 33:


{| class="wikitable"
{| class="wikitable"
! Topic
! Concept
! Description
! Description
! Related
! Related
|-
|-
| Version Conflict
| Dockerfile tips and tricks
| Docker 패키지 간 의존성 충돌 해결
| HPC/서버 환경에서 중요한 기술 개념
| [[Docker command workflow]]
| [[Linux]], [[Server]]
|-
| OpenCL in Docker
| 컨테이너 내 GPU/OpenCL 설정
| [[GPU Support]]
|-
| Resource Tuning
| Docker 리소스 및 성능 최적화
| [[Docker container resource]]
|-
| Container Stop Signal
| 컨테이너 종료 시 SIGTERM/SIGKILL 처리
| [[Docker command workflow]]
|}
|}


---
---


== Architecture ==
== Detailed Explanation ==
 
Docker 컨테이너는 호스트 OS의 커널을 공유하는 경량 가상화 환경. GPU/OpenCL 연산을 컨테이너 내에서 사용하려면 호스트의 NVIDIA 드라이버와 OpenCL 라이브러리를 컨테이너에 노출해야 함.


= Dockerfile tips and tricks =
|status=Draft
|owner=Knowledge Agent
|last_update=2026-07-16
|review=Pending
}}
[[Docker]] 이미지 빌드 및 컨테이너 운영 시 유용한 팁과 트릭 모음. 버전 충돌 해결, GPU 설정, 성능 튜닝, 시그널 처리 등 실용적인 문제 해결 가이드.
* 무엇인가? Dockerfile 작성 및 Docker 컨테이너 운영 시 발생하는常见问题 해결 방법
* 왜 필요한가? Docker 환경 설정 오류, 버전 충돌, GPU 연산 문제 등을 빠르게 해결
* 언제 사용하는가? Docker 이미지 빌드, 컨테이너 실행, GPU/OpenCL 설정, 리소스 튜닝 시
---
---
 
Dockerfile 작성 자주 발생하는 오류와 해결책, GPU/OpenCL 설정, 성능 튜닝, 컨테이너 종료 시그널 처리 등 실용적인 팁 제공
== Workflow ==
* Goal: Docker 환경 구축 및 운영 시간 절약 및 문제 해결 속도 향상
 
* Scope: Dockerfile 빌드 팁, GPU/OpenCL 설정, 리소스 튜닝, 시그널 처리
# Dockerfile 기반 이미지 빌드
* Non-goals: Docker 기본 사용법 튜토리얼, Docker Compose 상세 설정
# 의존성 버전 충돌 pip install -U 로 해결
# GPU/OpenCL 설정 시 nvidia-container-toolkit 및 ICD 파일 구성
# 컨테이너 종료 시 SIGTERM → 10초 후 SIGKILL 기본 동작 확인
# ENTRYPOINT/STOPSIGNAL/docker-compose.yml stop_signal 설정으로 동작 커스터마이징
 
---
---
 
{| class="wikitable"
== Configuration ==
! Topic
 
! Description
=== OpenCL 설정 (Docker 내 GPU) ===
! Related
 
<syntaxhighlight lang="bash">
FROM ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y upgrade \
  && apt-get install -y \
    ocl-icd-libopencl1 \
    opencl-headers \
    clinfo \
    ;
 
RUN mkdir -p /etc/OpenCL/vendors && \
    echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
</syntaxhighlight>
 
=== Root 비밀번호 설정 ===
 
<syntaxhighlight lang="bash">
# 이미지 빌드 시
RUN echo 'root:Docker!' | chpasswd
 
# 또는
RUN echo 'Docker!' | passwd --stdin root
 
# 실행 중인 컨테이너에서
docker exec -itu 0 {container} passwd
 
# 3rd party 이미지에서 root로 로그인
docker container exec -u 0 -it mycontainer bash
</syntaxhighlight>
 
=== Docker requests 버전 충돌 해결 ===
 
<syntaxhighlight lang="bash">
pip install -U urllib3 requests==<right_version>
</syntaxhighlight>
 
=== NAT chain 오류 해결 ===
 
<syntaxhighlight lang="bash">
sudo apt update && sudo apt upgrade && sudo systemctl restart docker.service
</syntaxhighlight>
 
---
 
== Examples ==
 
=== 컨테이너 종료 시그널 처리 ===
 
기본 동작:
* `docker stop` → ENTRYPOINT 프로세스에 SIGTERM 전송
* 10초 후 → SIGKILL 전송
 
커스터마이징:
* Dockerfile의 `STOPSIGNAL` 지시자 변경
* docker-compose.yml의 `stop_signal` 설정
* docker-compose.yml의 `stop_grace_period` 설정
 
예시 (php-fpm/nginx): SIGQUIT 사용 (SIGTERM 대신)


---
---
Line 143: Line 71:
== Best Practices ==
== Best Practices ==


* 의존성 충돌 시 `pip install -U`로 최신 버전으로 업그레이드
* 최신 버전 사용 권장
* GPU/OpenCL 사용 시 `NVIDIA_VISIBLE_DEVICES`와 `NVIDIA_DRIVER_CAPABILITIES` 환경변수 필수 설정
* 공식 문서 참고
* 컨테이너 종료 시 graceful shutdown을 위해 ENTRYPOINT에서 시그널 핸들러 구현
* 테스트 환경에서 먼저 검증
* Dockerfile에서 `ARG DEBIAN_FRONTEND=noninteractive`로 대시로그 상호작용 방지
 
---
 
== Performance ==
 
{| class="wikitable"
! Setting
| Impact
| Notes
|-
| OpenCL ICD 설정
| GPU/OpenCL 연산 가능
| /etc/OpenCL/vendors/nvidia.icd 필수
|-
| NVIDIA_DRIVER_CAPABILITIES
| 컨테이너 내 GPU 접근
| compute,utility 권장
|-
| stop_signal 설정
| graceful shutdown
| php-fpm/nginx는 SIGQUIT 권장
|}
 
---
 
== Limitations ==
 
* Docker 7.0.0+는 requests>=2.26.0 필수
* NAT chain 오류 시 재부팅 대신 docker.service 재시작 필요
* 3rd party 이미지는 USER 설정이 override 될 수 있음 (-u 0 사용)


---
---
Line 182: Line 79:
== References ==
== References ==


* [https://stackoverflow.com/questions/75713844/ Failed to create NAT chain Docker]
* [https://wiki.hpcmate.com Dockerfile tips and tricks]
* [https://kmg.group/posts/2022-05-23-docker-stop-containers-with-signals/ Container stop signals]
* [https://linuxhandbook.com/setup-opencl-linux-docker/ OpenCL in Docker]
* [https://www.pugetsystems.com/labs/hpc/ How to Setup NVIDIA Docker and NGC Registry - Part 5]


---
---
Line 191: Line 85:
== Related Pages ==
== Related Pages ==


* [[Docker command workflow]]
* [[Linux]]
* [[Docker container resource]]
* [[Server]]
* [[Docker library sharing from host to container]]
* [[Hardware]]
* [[GPU Support]]
* [[Network]]
* [[CUDA]]


---
---

Revision as of 15:17, 16 July 2026

Template:Status

Template:TOC

Overview

Dockerfile tips and tricks에 대한 기술 문서입니다.

Summary

  • 무엇인가? - Dockerfile tips and tricks
  • 왜 필요한가? - HPC 및 서버 환경에서 필수 개념
  • 언제 사용하는가? - 서버 구성, 성능 튜닝, 문제 해결 시

---

Purpose

이 문서가 존재하는 이유

  • Goal: Dockerfile tips and tricks에 대한 기술 정보 제공
  • Scope: Dockerfile tips and tricks의 개념, 사용법, 설정
  • Non-goals: 다른 주제로의 확장

---

Key Concepts

Concept Description Related
Dockerfile tips and tricks HPC/서버 환경에서 중요한 기술 개념 Linux, Server

---

Detailed Explanation

Dockerfile tips and tricks

|status=Draft |owner=Knowledge Agent |last_update=2026-07-16 |review=Pending }} Docker 이미지 빌드 및 컨테이너 운영 시 유용한 팁과 트릭 모음. 버전 충돌 해결, GPU 설정, 성능 튜닝, 시그널 처리 등 실용적인 문제 해결 가이드.

  • 무엇인가? Dockerfile 작성 및 Docker 컨테이너 운영 시 발생하는常见问题 해결 방법
  • 왜 필요한가? Docker 환경 설정 오류, 버전 충돌, GPU 연산 문제 등을 빠르게 해결
  • 언제 사용하는가? Docker 이미지 빌드, 컨테이너 실행, GPU/OpenCL 설정, 리소스 튜닝 시

--- Dockerfile 작성 시 자주 발생하는 오류와 해결책, GPU/OpenCL 설정, 성능 튜닝, 컨테이너 종료 시그널 처리 등 실용적인 팁 제공

  • Goal: Docker 환경 구축 및 운영 시 시간 절약 및 문제 해결 속도 향상
  • Scope: Dockerfile 빌드 팁, GPU/OpenCL 설정, 리소스 튜닝, 시그널 처리
  • Non-goals: Docker 기본 사용법 튜토리얼, Docker Compose 상세 설정

---

Topic Description Related

---

Best Practices

  • 최신 버전 사용 권장
  • 공식 문서 참고
  • 테스트 환경에서 먼저 검증

---

References

---

Related Pages

---