[Docker] dockerhub에 이미지 업로드
·
DevOps/Docker
dockerhub에 이미지 업로드dockerhub에 새로운 repository 만들기 기존의 이미지에 새로운 태그 추가하기버전은 1.0로 지정$ docker tag polls-front dodo43/polls-front:1.0 docker login 하기해당 url로 접속하고 code 입력$ docker login docker registry에 이미지 업로드$ docker push dodo43/polls-front:1.0 registry 확인해보면 새로운 이미지가 추가됨 이미지 자세히 확인해보면 arm64 아키텍처, 컨테이너 배포시 아키텍처 다르면 구동 안되기 때문에 주의
[Docker] 투표 앱 docker compose로 배포해보기
·
DevOps/Docker
1. Django 이미지 만들기CORS_ALLOWED_ORIGINS와 CSRF_TRUSTED_ORIGINS에 frontend 추가하기 Django 프로젝트 디렉터리에 Dockerfile, .dockerignore 파일 생성하기 Dockerfilepython:3.12-slim이미지 사용가상 환경 설정하고, 종속성 설치 후 서버 실행8000번 포트 노출해서 외부 접근 허용FROM python:3.12-slimWORKDIR /appCOPY ./ /app/# 가상 환경 설정 및 종속성 설치RUN python -m venv .venvRUN pip install -r requirements.txt# 서버 실행ENV DEBUG=TrueEXPOSE 8000CMD ["python", "manage.py", "runser..
[Docker] Multi-stage build
·
DevOps/Docker
Multi-stage buildDockerfile에서 여러 개의 베이스 이미지를 사용하여 이미지를 빌드하는 방법최종 이미지의 크기를 줄이고, 빌드 프로세스를 효율적으로 관리하기 위해 사용FROM을 기준으로 여러 스테이지로 나뉘어 이미지를 빌드하고, 마지막 스테이지에서 생성한 파일과 상태를 기반으로 빌드됨각 스테이지는 독립적으로, 스테이지가 종료되면 해당 스테이지에 생성한 파일은 사라짐COPY --from=을 통해 이전 스테이지에서 생성한 파일을 복사할 수 있음Multi-stage build 예시# Stage 1: BuildFROM node:18-alpine AS builderWORKDIR /appCOPY package.json yarn.lock ./RUN yarn installCOPY . .RUN yar..
[Docker] docker compose
·
DevOps/Docker
docker compose여러 개의 docker 컨테이너를 관리하는 도구docker-compose.yaml 파일에 컨테이너들을 정의모든 컨테이너를 실행하거나 종료할 수 있는 기능을 제공docker compose 명령어docker compose up: 모든 컨테이너를 실행docker compose down: 모든 컨테이너 중지docker compose ps: 실행 중인 서비스 확인docker compose restart : 특정 서비스만 재시작docker-compose.yaml 예시services: app: image: node:18-alpine command: sh -c "yarn install && yarn run dev" ports: - 127.0.0.1:3000:3000 ..
[Docker] Volume
·
DevOps/Docker
Volume도커 컨테이너에서 데이터를 저장하고 관리하는 데 사용되는 지속적인 저장소Volume이 필요한 이유? 컨테이너는 기본적으로 휘발성이기 때문에, 컨테이너가 종료되거나 삭제되면 내부의 파일 시스템 데이터도 사라짐, 볼륨은 컨테이너의 데이터를 영구적으로 유지하거나 컨테이너 간에 공유할 수 있도록 함Volume의 종류bind mount: 호스트 파일 시스템을 사용호스트 파일 시스템의 특정 디렉터리를 컨테이너의 특정 디렉터리와 마운트docker volume: 도커가 관리하는 볼륨볼륨은 호스트 디렉터리의 /var/lib/docker/volumes/에 저장됨볼륨과 컨테이너의 특정 디렉터리를 마운트하여 사용tmpfs mount: 볼륨을 메모리에 저장하는 방식컨테이너 종료 시 저장된 데이터가 사라짐Bind mo..
[Docker] Dockefile
·
DevOps/Docker
Dockefile도커 이미지를 생성하기 위해 필요한 명령어들을 포함한 파일베이스 이미지를 시작점으로 여러 명령어들로 구성됨Base Image새로운 Docker 이미지를 빌드할 때 기본이 되는 이미지Dockerfile의 첫 번째 명령어인 FROM에 명시새로운 애플리케이션 환경을 구축하기 위해 필요한 초기 파일 시스템과 환경을 제공 Base Image의 유형운영체제 기반 베이스 이미지리눅스 배포판 또는 특정 OS 환경을 제공애플리케이션이 실행되는 데 필요한 기본적인 도구와 라이브러리 포함busybox, alpine, ubuntu, debian 등언어/플랫폼 기반 베이스 이미지특정 언어나 플랫폼 환경이 사전 설치된 이미지python, node, golang, openjdk 등명령어FROM: 베이스 이미지를 지..
[Docker] 이미지
·
DevOps/Docker
이미지란? 컨테이너를 실행하기 위한 모든 파일, 라이브러리, 설정 등을 포함한 읽기 전용 템플릿Dockerfile을 사용하여 이미지를 생성컨테이너를 생성하기 위한 템플릿 역할이미지 이름 구성//:레지스트리: 이미지를 저장하고 관리하는 원격 저장소계정 이름: 이미지 소유자를 구분하기 위한 네임스페이스이미지 이름: 이미지의 고유 이름태그: 이미지 버전 예시Docker Hub의 공식 Nginx 이미지docker.io/library/nginx:latest 를 의미nginx:latest이미지 레이어도커의 이미지는 여러 이미지 레이어가 중첩된 형태로, 각 레이어는 이전 레이어의 변경 사항을 가지고 있음예를 들어 nginx 이미지를 다운 받을 때, ubuntu 이미지가 존재하는 경우 nginx 레이어만 다운받음 → ..
[Docker] Docker 설치 및 기본 명령어
·
DevOps/Docker
mac에 Docker 설치터미널에서 orbstack 설치하고, 실행하기$ brew install orbstack hello-world 컨테이너 실행해서 다음과 같이 뜨면 정상적으로 설치된 것$ docker run hello-world orbstack에서 확인해보면, hello-world 이미지로 생성된 zen_roentgen(임의의 이름) 컨테이너가 종료된 상태Docker 기본 명령어docker ps: 실행 중인 컨테이너 확인docker ps -a: 모든 컨테이너 확인docker images: 로컬 이미지 목록 확인docker run: 이미지를 기반으로 컨테이너를 생성하고 실행docker stop: 실행 중인 컨테이너를 중지docker exec -it /bin/sh: 실행 중인 컨테이너 내부로 들어가 ..