Docker 명령어 모음
·
virtual environment/Docker
🔐 Docker Hub 로그인docker login도커 허브의 사용자 ID와 비밀번호 입력 🛑 모든 컨테이너 정지docker stop $(docker ps -a -q) 🗑️ 모든 컨테이너 삭제docker rm $(docker ps -a -q) 🧹 모든 이미지 삭제docker rmi $(docker images -q) 🚿 사용하지 않는 이미지 정리docker image prune -aDangling image 및 사용하지 않는 모든 이미지 제거 🚀 이미지 실행 (컨테이너 실행)docker run 주요 옵션 설명옵션 설명-i표준 입력 유지 (interactive)-t터미널 연결 (pseudo-TTY)-d백그라운드에서 실행 (detached mode)-e환경변수 설정 (ENV와 유사)-p포트 ..
[Docker] ONBUILD
·
virtual environment/Docker
ONBUILD"하위 Dockerfile에서 자동으로 실행될 명령어를 상위 이미지에서 미리 설정” 개요부모 이미지에서 설정한 명령어가 해당 이미지를 기반으로 빌드하는 하위 Dockerfile에서 자동 실행주로 공통 빌드 로직이 필요한 템플릿 이미지나, 프레임워크 기반 베이스 이미지 제작에 유용예시베이스 이미지 (예: my-node-base)# base-image/DockerfileFROM node:18WORKDIR /appONBUILD COPY . /appONBUILD RUN npm install이 이미지를 기반으로 하는 모든 하위 Dockerfile에서는,COPY . /appRUN npm install이 두 명령이 자동으로 실행하위 이미지# app/DockerfileFROM my-node-baseCMD ..
[Dockerfile] ARG (Build-time 변수)
·
virtual environment/Docker
ARG (Build-time 변수)"Dockerfile 빌드 시점에 외부에서 값을 주입할 수 있는 변수" ENV와 유사하지만, ARG는 빌드 타임에만 유효사용자 정의 인자를 통해 유연한 Dockerfile 구성 가능항목 설명🆚 ENV와의 차이점ARG는 **빌드 타임(build-time)**에만 유효하고, 컨테이너 내부에서는 사용 불가 (단, ENV에 전달해 연계 사용 가능)🛠️ 목적빌드 시 설정을 외부에서 주입 → 사용자 정의 인자를 통해 유연한 Dockerfile 작성 가능🔒 보안빌드 후 이미지에서는 ARG 값이 남지 않음 → 민감 정보 처리에 상대적으로 안전 (단, Docker history엔 남을 수 있음)사용 예시# DockerfileARG BASE_IMAGE=python:3.10-slimF..
.dockerignore
·
virtual environment/Docker
.dockerignore"Docker build context에 포함되지 않을 파일과 디렉토리를 명시하는 설정 파일"Docker는 docker build 명령 시 해당 디렉토리 전체를 build context로 압축하여 Docker 데몬에게 전달한다. 이때, 불필요한 파일까지 포함되면 다음과 같은 문제가 발생한다:빌드 속도 저하 (전달할 파일이 많아짐)이미지 용량 증가 (원하지 않는 파일이 포함됨)보안 이슈 (민감 정보 유출 가능성)이를 방지하기 위해 .dockerignore 파일을 사용한다.사용 목적항목 설명🚀 빌드 속도 향상COPY . . 또는 ADD 시 불필요한 파일 제외로 context 전달이 빠름📦 이미지 경량화.git, 로그 파일, 캐시 파일, 테스트 코드 등 불필요한 파일이 이미지에 포함..
Dockerfile Multi-Stage Build
·
virtual environment/Docker
1. Multi-Stage Build"빌드와 실행 환경을 분리하여 최적화된 이미지를 생성"개요Multi-Stage Build는 Dockerfile에서 여러 개의 FROM을 사용하는 방식각 FROM 명령은 별도의 독립된 빌드 단계(Stage) 를 나타내기 때문에 여러 개의 FROM 절을 사용하여 빌드와 런타임 이미지를 분리초기 단계에서는 빌드에 필요한 모든 도구(GCC, Go, Node.js 등)를 설치한 이미지에서 애플리케이션을 빌드최종 단계에서는 필요한 실행 파일만 최소한의 베이스 이미지에 복사하여 실행 환경을 구성빌드에 필요한 도구들을 최종 이미지에 포함시키지 않음 → 이미지 크기 최소화, 보안성 향상Multi-Stage Build를 사용하는 이유프로젝트에는 보통 다음과 같은 작업이 필요함.단계 설명..
DevContainer를 이용한 VS Code 개발 환경 구성 (Docker 기반)
·
virtual environment/Docker
Docker를 활용하면 개발 환경의 일관성, 이식성, 재현성을 확보할 수 있다.특히, VS Code의 Dev Containers 기능을 이용하면 컨테이너 안에서 마치 로컬처럼 개발할 수 있으며, 팀 단위 협업 시 동일한 환경을 쉽게 공유할 수 있다.DevContainer란?DevContainer는 .devcontainer/ 디렉토리에 정의된 설정을 기반으로 Docker 컨테이너 안에서 개발 환경을 구동할 수 있게 해주는 VS Code 기능이다.구성 요소:.devcontainer/devcontainer.json: 컨테이너 설정을 정의 (image, mount, extensions 등).devcontainer/Dockerfile: 필요한 소프트웨어를 설치하는 데 사용되는 DockerfileDevContain..
Docker Data Root 디렉터리 변경
·
virtual environment/Docker
Docker의 기본 데이터 디렉터리(/var/lib/docker)를 다른 위치(예: /mnt/docker-data)로 변경하는 방법이다.이는 저장 공간 부족 문제 해결 또는 고속 디바이스로의 마이그레이션에 유용하다. 1. 현재 Docker Root Directory 확인sudo docker info | grep "Docker Root Dir"# 출력 예시WARNING: No swap limit supportDocker Root Dir: /var/lib/docker 2. Docker 서비스 중지sudo systemctl stop dockersudo systemctl stop docker.socketsudo systemctl stop containerd.servicesudo systemctl disable ..
sudo 없이 Docker 사용 설정
·
virtual environment/Docker
Docker는 기본적으로 root 권한으로 실행되며, 일반 사용자가 sudo 없이 docker 명령어를 사용하려면 다음과 같은 설정이 필요하다.1. 현재 사용자를 docker 그룹에 추가sudo 없이 Docker를 사용하려면 현재 사용자를 docker 그룹에 추가해야 한다.sudo usermod -aG docker $USERaG: 기존 그룹을 유지한 채로 docker 그룹을 추가$USER: 현재 로그인한 사용자를 의미2. 변경사항 적용추가한 그룹 권한을 반영하려면 로그아웃 후 재로그인이 필요혹은 다음 명령어로 즉시 적용할 수 있다:newgrp docker3. 정상 작동 확인오류 없이 실행되면 정상적으로 설정 완료! 🎉docker ps도커를 user group에 추가를 했음에도❗ 여전히 "permissi..