← 홈

🐳Docker

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

📦 이미지

🖼️ 이미지 관리

docker images 이미지 목록
docker pull <image> 레지스트리에서 이미지 가져오기
docker pull <image>:<tag> 특정 버전 가져오기
docker push <image> 레지스트리에 이미지 푸시
docker rmi <image> 이미지 삭제
docker rmi $(docker images -q) 모든 이미지 삭제
docker image prune 사용하지 않는 이미지 삭제
docker image prune -a 모든 미사용 이미지 삭제
docker tag <image> <new-tag> 이미지에 태그 지정
docker history <image> 이미지 히스토리 표시
docker inspect <image> 이미지 상세 정보

🔨 이미지 빌드

docker build -t <name> . Dockerfile로 이미지 빌드
docker build -t <name>:<tag> . 태그와 함께 빌드
docker build -f <file> . 특정 Dockerfile로 빌드
docker build --no-cache . 캐시 없이 빌드
docker build --build-arg KEY=val . 인자와 함께 빌드
docker save -o <file>.tar <image> 이미지를 tar 파일로 저장
docker load -i <file>.tar tar 파일에서 이미지 로드

📋 컨테이너

▶️ 컨테이너 실행

docker run <image> 컨테이너 실행
docker run -d <image> 백그라운드 실행 (분리)
docker run -it <image> bash 셸과 함께 대화형 실행
docker run --name <name> <image> 이름 지정하여 실행
docker run -p 8080:80 <image> 포트 매핑 호스트:컨테이너
docker run -v /host:/container <image> 볼륨 마운트
docker run -e KEY=value <image> 환경 변수 설정
docker run --env-file .env <image> 파일에서 환경변수 로드
docker run --rm <image> 종료 후 삭제
docker run --network <net> <image> 네트워크에 연결
docker run --restart always <image> 실패 시 자동 재시작

🔧 컨테이너 관리

docker ps 실행 중인 컨테이너 목록
docker ps -a 모든 컨테이너 목록
docker start <container> 중지된 컨테이너 시작
docker stop <container> 실행 중인 컨테이너 중지
docker restart <container> 컨테이너 재시작
docker kill <container> 컨테이너 강제 중지
docker rm <container> 컨테이너 삭제
docker rm $(docker ps -aq) 모든 컨테이너 삭제
docker container prune 중지된 컨테이너 삭제
docker rename <old> <new> 컨테이너 이름 변경
docker update --restart always <c> 컨테이너 설정 업데이트

💻 컨테이너 상호작용

docker exec -it <container> bash 컨테이너에서 bash 실행
docker exec <container> <cmd> 명령 실행
docker attach <container> 컨테이너에 연결
docker logs <container> 컨테이너 로그 보기
docker logs -f <container> 로그 팔로우 (tail)
docker logs --tail 100 <container> 마지막 100줄 표시
docker inspect <container> 컨테이너 상세 정보
docker top <container> 실행 중인 프로세스 보기
docker stats 리소스 사용량 보기
docker cp <container>:/path /local 컨테이너에서 복사
docker cp /local <container>:/path 컨테이너로 복사

🌐 네트워크

📡 네트워크 관리

docker network ls 네트워크 목록
docker network create <name> 네트워크 생성
docker network create --driver bridge <n> 브리지 네트워크 생성
docker network rm <network> 네트워크 삭제
docker network inspect <network> 네트워크 상세 정보
docker network connect <net> <container> 컨테이너를 네트워크에 연결
docker network disconnect <net> <c> 네트워크에서 연결 해제
docker network prune 미사용 네트워크 삭제

💾 볼륨

📁 볼륨 관리

docker volume ls 볼륨 목록
docker volume create <name> 볼륨 생성
docker volume rm <volume> 볼륨 삭제
docker volume inspect <volume> 볼륨 상세 정보
docker volume prune 미사용 볼륨 삭제
-v <vol>:/path 명명된 볼륨 마운트
-v /host/path:/container/path 호스트 디렉토리 바인드 마운트
-v /host/path:/path:ro 읽기 전용 마운트

🎼 Docker Compose

📜 Compose 명령어

docker compose up 서비스 시작
docker compose up -d 백그라운드에서 시작
docker compose up --build 빌드 후 시작
docker compose down 중지 및 삭제
docker compose down -v 볼륨과 함께 중지 및 삭제
docker compose ps 컨테이너 목록
docker compose logs 로그 보기
docker compose logs -f 로그 팔로우
docker compose exec <svc> bash 서비스에서 실행
docker compose build 이미지 빌드
docker compose pull 이미지 가져오기
docker compose restart 서비스 재시작
docker compose stop 서비스 중지
docker compose config compose 파일 검증

📝 Compose 파일 예제

# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./app:/app
environment:
- NODE_ENV=production
depends_on:
- db
db:
image: postgres:15
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
volumes:
db_data:

📄 Dockerfile

📝 Dockerfile 명령어

FROM image:tag 베이스 이미지
FROM image:tag AS stage 명명된 빌드 스테이지
WORKDIR /app 작업 디렉토리 설정
COPY src dest 파일/디렉토리 복사
COPY --from=stage src dest 스테이지에서 복사
ADD src dest 자동 압축 해제 복사
RUN command 명령 실행
RUN ["cmd", "arg1"] Exec 형식
ENV KEY=value 환경 변수 설정
ARG NAME=default 빌드 인자
EXPOSE 8080 포트 문서화
CMD ["cmd", "arg"] 기본 명령
ENTRYPOINT ["cmd"] 메인 실행 파일
USER username 사용자로 실행
VOLUME /data 마운트 포인트
LABEL key=value 메타데이터 추가
HEALTHCHECK CMD curl ... 컨테이너 헬스체크

🏗️ 멀티스테이지 빌드

# 빌드 스테이지
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# 프로덕션 스테이지
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
EXPOSE 3000
CMD ["node", "dist/server.js"]

🔐 레지스트리 & 보안

📦 레지스트리 명령어

docker login Docker Hub 로그인
docker login registry.example.com 프라이빗 레지스트리 로그인
docker logout 레지스트리 로그아웃
docker tag image registry/image:tag 레지스트리용 태그
docker push registry/image:tag 레지스트리에 푸시
docker pull registry/image:tag 레지스트리에서 풀
docker search <term> Docker Hub 검색

🛡️ 보안

--user 1000:1000 특정 사용자/그룹으로 실행
--read-only 읽기 전용 파일시스템
--cap-drop ALL 모든 권한 제거
--cap-add NET_BIND_SERVICE 특정 권한 추가
--security-opt no-new-privileges 권한 상승 방지
--memory 512m 메모리 제한
--cpus 0.5 CPU 제한
--pids-limit 100 프로세스 제한
docker scan <image> 취약점 스캔

💡

🧹 시스템 및 정리

docker system df 디스크 사용량 표시
docker system prune 미사용 데이터 삭제
docker system prune -a 모든 미사용 데이터 삭제
docker system prune --volumes 볼륨도 함께 정리
docker info 시스템 정보 표시
docker version Docker 버전 표시

🚀 모범 사례

  • 가능하면 공식 베이스 이미지 사용
  • 멀티스테이지 빌드로 이미지 크기 줄이기
  • 컨테이너를 root로 실행하지 않기
  • .dockerignore로 파일 제외
  • 컨테이너당 하나의 프로세스
  • 영구 데이터에는 볼륨 사용
  • 이미지에 latest 대신 특정 버전 태그 사용
  • 멀티 컨테이너 앱에 docker compose 사용