- 도커(Docker) 기본 명령어 실습: 컨테이너 생성 및 관리2025년 07월 14일 11시 29분 40초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
도커(Docker) 기본 명령어 실습: 컨테이너 생성 및 관리
오늘은 도커를 사용하여 컨테이너를 생성하고 관리하는 기본적인 명령어들을 실습하고, 그 과정을 블로그 포스팅 형식으로 정리하고자 한다. 도커는 애플리케이션을 빠르고 안정적으로 배포할 수 있도록 지원하는 컨테이너화 플랫폼이다.
1. Dockerfile 준비
우선, 컨테이너 이미지를 빌드하기 위한
Dockerfile을 준비하였다. 이Dockerfile은node이미지를 기반으로 하며, 컨테이너가 시작될 때 500초 동안 시스템을 일시 정지하도록 설정되어 있다.# FROM openjdk:17-jdk FROM node ENTRYPOINT ["/bin/bash", "-c", "sleep 1000"] # 1000초 동안 시스템 일시 정지위
Dockerfile에서ENTRYPOINT명령어는 컨테이너가 시작될 때 항상 실행되는 명령어를 정의하는 역할을 한다. 여기서는/bin/bash -c "sleep 1000"명령어가 실행되어 컨테이너가 지정된 시간 동안 대기 상태에 머무르게 된다.Dockerfile에서 주석을 사용할 수 있다. 주석 처리된FROM openjdk:17-jdk부분은 이전에 Java 기반의 이미지를 사용해본 흔적을 보여준다. 현재는node이미지를 활용하고 있다.2. Docker 이미지 빌드
이제 작성한
Dockerfile을 이용하여 도커 이미지를 빌드한다.docker build명령어는Dockerfile을 기반으로 이미지를 생성한다.-t옵션은 이미지에 태그(이름)를 지정하는 데 사용된다.docker build -t my-node-server .위 명령어를 실행하면 다음과 같은 출력을 확인할 수 있다.
[+] Building 20.8s (6/6) FINISHED docker:desktop-linux => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 116B 0.0s => [internal] load metadata for docker.io/library/node:latest 2.4s => [auth] library/node:pull token for registry-1.docker.io 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [1/1] FROM docker.io/library/node:latest@sha256:e7db48bc35ee8d2e8d1511dfe779d78076966bd101ab074ea2858da8d59efb7f 18.1s # ... (중략) ... => => naming to docker.io/library/my-node-server 0.0smy-node-server라는 이름의 이미지가 성공적으로 빌드되었음을 알 수 있다.3. Docker 컨테이너 실행
빌드한 이미지를 사용하여 도커 컨테이너를 실행한다.
docker run명령어는 이미지를 기반으로 컨테이너를 생성하고 실행한다.-d옵션은 컨테이너를 백그라운드에서 실행하도록 한다.docker run -d my-node-server명령어 실행 후 컨테이너 ID가 출력된다.
d1b676062062d0174fee4454a6640a50d39f9df3c25629dcde6cd0cd777b590a이 ID는 실행된 컨테이너를 고유하게 식별하는 역할을 수행한다.
4. 실행 중인 컨테이너 확인
현재 실행 중인 도커 컨테이너 목록을 확인하려면
docker ps명령어를 사용한다.docker ps출력 결과에서 방금 실행한
my-node-server컨테이너가Up상태로 실행 중임을 확인할 수 있다.CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d1b676062062 my-node-server "/bin/bash -c 'sleep…" 5 seconds ago Up 4 seconds ecstatic_keldysh 47dfe4cce037 my-jdk17-server "/bin/bash -c 'sleep…" 3 minutes ago Up 3 minutes nervous_keller여기서
nervous_keller라는 이름의my-jdk17-server컨테이너도 보이는데, 이는 이전에 실습했던 Java 기반 컨테이너가 여전히 실행 중임을 나타낸다.5. 컨테이너 내부로 접속
실행 중인 컨테이너 내부로 진입하여 명령어를 실행하려면
docker exec명령어를 사용한다.-it옵션은 대화형(interactive) 터미널을 할당하여 컨테이너 내부에서 직접 명령어를 입력할 수 있게 한다.docker exec -it d1 bash여기서
d1은my-node-server컨테이너의 일부 ID이다. 컨테이너 내부로 접속하면 프롬프트가root@d1b676062062:/#와 같이 변경된다.6. 컨테이너 내부에서 Node.js 버전 확인
컨테이너 내부에서 Node.js가 제대로 설치되었는지 확인하기 위해
node --version명령어를 실행한다.root@d1b676062062:/# node --version v24.4.0작업을 마친 후
exit를 입력하여 컨테이너 내부에서 벗어난다.root@d1b676062062:/# exit exit7. 컨테이너 상태 다시 확인
컨테이너 내부에서 나온 후 다시
docker ps를 실행하여 컨테이너들이 여전히 실행 중인지 확인한다.docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d1b676062062 my-node-server "/bin/bash -c 'sleep…" 3 minutes ago Up 3 minutes ecstatic_keldysh 47dfe4cce037 my-jdk17-server "/bin/bash -c 'sleep…" 5 minutes ago Up 5 minutes nervous_keller여전히 두 컨테이너 모두 정상적으로 실행 중임을 확인할 수 있다.
결론
이번 실습을 통해
Dockerfile을 작성하고, 이를 이용해 도커 이미지를 빌드하며, 빌드된 이미지를 컨테이너로 실행하고, 최종적으로 실행 중인 컨테이너 내부로 접속하여 확인하는 과정까지 경험하였다. 이 과정은 도커를 활용한 애플리케이션 개발 및 배포의 가장 기본적인 단계라고 할 수 있다.728x90반응형'DevOps > Docker' 카테고리의 다른 글
Docker 컨테이너의 시작점: ENTRYPOINT 명령어 완벽 이해 (0) 2025.07.15 Dockerfile의 COPY 명령어와 .dockerignore 파일 활용 실습 (1) 2025.07.15 Docker 볼륨을 이용한 데이터 영속성 확보 실습(PostgreSQL, MongoDB) (5) 2025.07.11 Docker를 이용한 MySQL 컨테이너 실행(볼륨 마운트) 및 문제 해결 (1) 2025.07.10 도커(Docker) 컨테이너 로그 확인, 컨테이너 내부 명령어 실행(logs, exec) 및 redis 컨테이너 활용 예제 (7) 2025.07.09 다음글이 없습니다.이전글이 없습니다.댓글