inblog logo
|
LifeLog, DevLog
    Docker

    Docker 기초

    Docker, dockerfile
    KYJTHEYJ's avatar
    KYJTHEYJ
    Feb 23, 2026
    Docker 기초
    Contents
    Docker핵심 개념컨테이너를 실행하기 위한 명령어컨테이너 실행 확인하기docker ps실행 중인 컨테이너 내부 접근docker exec -it [container ID] bash그외 명령어DockerfileDockerfile 명령어전반적인 셋업 과정

    Docker

    어플리케이션을 컨테이너라는 격리된 환경에서 실행되도록 하는 도구

    핵심 개념

    image

    어플리케이션에 실행한 모든 요소를 담은 템플릿
    코드, 라이브러리, 설정 등이 담긴다

    Container

    이미지를 실행한 인스턴스 → 실제로 돌아가는 환경

    운영체제를 새로 띄우는 것이 아니라 OS 커널을 공유하여 실행됨

    독립된 환경으로 작동하므로 로컬 환경마다 다를 수 있는 문제를 해결함

    컨테이너를 실행하기 위한 명령어

    docker run [-d] \
    -p [host port : container port] \ 
    [--name container_name] \
    image_name
    • run

      • 컨테이너를 실행하는 명령어

    • -d

      • detached 로 백그라운드 환경에서 실행하겠다는 의미

    • -p host port : container port

      • host port → 내 로컬에서 사용할 포트 번호

      • container port → 컨테이너에서 사용할 포트 번호

    • --name container_name

      • 컨테이너 이름 지정

    • image_name

      • 실행할 이미지 이름을 기재

    docker run -d -p 6379:6379 --name redis-container redis:latest

    컨테이너 실행 확인하기

    docker ps

    현재 실행중인 컨테이너를 보여주는 명령어

    • STATUS 가 UP 이면 실행 중

    실행 중인 컨테이너 내부 접근

    docker exec -it [container ID] bash

    • exec

      • 접근 명령어

    • -it

      • 터미널 모드로 접속

    • bash

      • Bash shell 로 실행

    Redis 에 접근, Redis 명령어 사용이 가능하다

    그외 명령어

    // 컨테이너 실행 멈추기
    docker stop [컨테이너 이름]
    
    // 로그 보기 (에러 및 실행 확인) (-f -> tail -f 같이 실시간 확인)
    docker logs [-f] [컨테이너 이름]
    
    // 컨테이너 삭제
    docker rm [컨테이너 이름]

    Dockerfile

    이미지를 만드는 설계도

    Dockerfile 명령어

    FROM

    이미지의 시작점을 지정하는 명령어
    기초공사가 끝난 땅을 사는 것과 비슷하다

    Spring Boot 를 배포한다면 JDK 이미지를 가져와야 공사를 이어할테니
    JDK 이미지를 가져와야 한다

    WORKDIR

    컨테이너 안에서 작업할 기본폴더를 지정 하는 명령어

    RUN

    이미지 빌드 시점에 실행되는 명령어
    패키지 설치, 파일 다운로드 등 빌드에 필요한 모든 작업을 수행할 때 사용한다

    ENV

    컨테이너 실행시 환경변수를 설정함, 빌드, 런타임 시점에 전부 사용한다

    COPY

    빌드된 파일을 컨테이너 안으로 복사하는 명령어

    Spring Boot 어플리케이션이니 Jar 를 복사하면 된다

    EXPOSE

    컨테이너의 포트 지정 명령어

    CMD

    실행 명령어를 지정하는 명령어

    다만 run 시 명령어가 있다면 무시된다

    ENTRYPOINT

    컨테이너가 시작되면 자동으로 실행할 명령어

    CMD와 ENTRYPOINT의 명령어 구조는
    보편적인 Shell 명령어와 Exec 형식으로 나뉘는데
    일반적으로 Exec형식으로 사용된다 (쉘이 끼어드는 것을 없애기 위해서)

    ENTRYPOINT java -jar app.jar → /bin/sh java -jar app.jar
    쉘이 실행되면 PID 1번이 Shell 이 되어버리는 것도 문제

    ENTRYPOINT [“java“, “-jar“, “app.jar“] → 그대로 직접 실행됨

    전반적인 셋업 과정

    먼저 공식 이미지 (MySQL, Redis .. 와 같은) 외에
    이미지를 사용하기 위해서는 Dockerfile 을 작성해야한다

    Dockerfile 작성

    FROM eclipse-temurin:25-alpine
    WORKDIR /app
    COPY build/libs/*.jar app.jar
    ENV SPRING_PROFILES_ACTIVE=local
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "app.jar"]

    Docker image 만들기

    docker build -f [도커파일] -t [이름] .

    여기까지 진행하면 우선 로컬 상태는 실행할 수 있다

    하지만 여기까지는 SpringBoot 만 실행 한 것이다
    이제 DB 까지도 Docker 로 실행해봐야 한다

    이렇게 복합적으로 컨테이너를 실행하기 위해서는
    docker compose 를 사용해야 한다

    사용하기 위해서는docker-compose.yml 을 작성해야한다

    Share article
    Contents
    Docker핵심 개념컨테이너를 실행하기 위한 명령어컨테이너 실행 확인하기docker ps실행 중인 컨테이너 내부 접근docker exec -it [container ID] bash그외 명령어DockerfileDockerfile 명령어전반적인 셋업 과정

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog