관리 메뉴

피터의 개발이야기

[Docker] Docker Run 명령어 정리 본문

DevOps/Docker

[Docker] Docker Run 명령어 정리

기록하는 백앤드개발자 2025. 1. 7. 20:14
반응형

ㅁ 들어가며

  Docker를 사용하면서 가장 자주 접하는 명령어인 docker run에 대해서 정리해 보았다. 이 명령어는 Docker 이미지로부터 새로운 컨테이너를 생성하고 실행하는데 자주 쓰이는데, 매번 작성 시 참조하기 위해 이 글을 정리하였다.

 

ㅁ docker run의 기본 구조

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

[OPTIONS]: 컨테이너 실행 시 적용할 다양한 옵션들
 IMAGE[:TAG|@DIGEST]: 실행할 Docker 이미지 (태그나 다이제스트 지정 가능)
 [COMMAND]: 컨테이너 내에서 실행할 명령어 (옵션)
 [ARG...]: 명령어에 전달할 인자 (옵션)

 

ㅁ docker run의 동작 방식

docker run 명령어를 실행하면 내부적으로 다음과 같은 과정이 진행됩니다:

  1. docker pull: 지정된 이미지가 로컬에 없다면 Docker Hub에서 자동으로 다운로드 
  2. docker create: 새로운 컨테이너 생성
  3. docker start: 생성된 컨테이너 시작
  4. docker attach: 필요한 경우 컨테이너에 접속

 

ㅁ 주요 옵션 살펴보기

컨테이너 이름 지정 (--name)

docker run --name my-container ubuntu

 

 

백그라운드 실행 (-d, --detach)

docker run -d nginx

 

 

 

포트 매핑 (-p, --publish)

docker run -p 8080:80 nginx

ㅇ 호스트의 8080 포트를 컨테이너의 80 포트에 연결

 

볼륨 마운트 (-v, --volume)

docker run -v /host/path:/container/path ubuntu

ㅇ 호스트의 디렉토리나 파일을 컨테이너 내부에 마운트

 

환경 변수 설정 (-e, --env)

docker run -e MYSQL_ROOT_PASSWORD=mysecretpassword mysql

ㅇ 컨테이너 내부에서 사용할 환경 변수를 설정

 

대화형 모드 (-i, --interactive)

docker run -i ubuntu

ㅇ 표준 입력(STDIN)을 열어 둔다.

ㅇ 주로 -t 옵션과 함께 사용한다.

 

TTY 할당 (-t, --tty)

docker run -t ubuntu

ㅇ TTY(teletypewriter) 항목은 리눅스 디바이스 드라이브중에서 콘솔이나 터미널을 의미한다.

ㅇ 이 두 옵션은 표준입력을 열어두고 콘솔을 할당하여 컨테이너를 종료하지 않고, 터미널의 입력을 계속해서 컨테이너로 전달하여 대화형 셸을 제공한다.

 

작업 디렉토리 설정 (-w, --workdir)

docker run -w /app ubuntu

ㅇ 컨테이너 내부의 작업 디렉토리를 지정

 

네트워크 설정 (--network)

docker run --network host nginx

ㅇ 컨테이너가 사용할 네트워크를 지정

 

리소스 제한 (--memory, --cpu-shares)

docker run --memory 512m --cpu-shares 512 ubuntu

ㅇ 컨테이너가 사용할 수 있는 메모리와 CPU 리소스를 제한한다.

ㅇ 관련 글: [Docker] Docker에서 CPU 및 메모리 제한 설정

 

리소스 자동제거(--rm)

docker run -it --rm ubuntu /bin/bash

ㅇ 컨테이너가 종료되면 컨테이너와 연관된 익명 볼륨을 자동으로 제거한다.


ㅁ 간단 예제

Nginx 웹 서버 실행

docker run -d -p 80:80 --name my-nginx nginx

ㅇ Nginx 웹 서버를 백그라운드에서 실행

ㅇ 호스트의 80 포트를 컨테이너의 80 포트에 매핑

 

MySQL 데이터베이스 서버 실행

docker run -d \
  --name my-mysql \
  -e MYSQL_ROOT_PASSWORD=secret \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  mysql:5.7

ㅇ MySQL 5.7 서버를 실행

ㅇ 루트 비밀번호를 설정

ㅇ 데이터를 영구적으로 저장하기 위한 볼륨을 마운트

 

대화형 Ubuntu 컨테이너 실행

docker run -it --rm ubuntu /bin/bash

ㅇ Ubuntu 컨테이너를 대화형 모드로 실행

ㅇ 종료 시 자동으로 컨테이너를 제거한다.

ㅇ 일회성 작업에 유용하다.

 

ㅁ 마무리

docker run 명령어는 Docker의 핵심 기능을 담고 있는 강력한 도구이다. 다양한 옵션을 조합하여 사용하면 거의 모든 종류의 애플리케이션을 컨테이너화하고 실행할 수 있다. 이 명령어를 마스터하면 Docker를 이용한 개발과 배포 과정을 크게 간소화할 수 있다. 하지만 동시에 각 옵션이 미치는 영향을 정확히 이해하고 사용하는 것도 중요하다.

 

ㅁ 함께 보면 좋은 사이트

docker run 명령어 사용법

docker run 커맨드 사용법

반응형
Comments