일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정보처리기사실기 기출문제
- 티스토리챌린지
- AWS EKS
- 오블완
- Linux
- mysql 튜닝
- 기록으로 실력을 쌓자
- Java
- APM
- IntelliJ
- 정보처리기사 실기 기출문제
- kotlin coroutine
- Spring
- 코틀린 코루틴의 정석
- CKA 기출문제
- minikube
- CKA
- PETERICA
- kotlin
- 정보처리기사 실기
- kotlin querydsl
- CloudWatch
- Elasticsearch
- Kubernetes
- AI
- Pinpoint
- aws
- kotlin spring
- MySQL
- 공부
- Today
- Total
피터의 개발이야기
[Docker] Docker Run 명령어 정리 본문
ㅁ 들어가며
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 명령어를 실행하면 내부적으로 다음과 같은 과정이 진행됩니다:
- docker pull: 지정된 이미지가 로컬에 없다면 Docker Hub에서 자동으로 다운로드
- docker create: 새로운 컨테이너 생성
- docker start: 생성된 컨테이너 시작
- 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를 이용한 개발과 배포 과정을 크게 간소화할 수 있다. 하지만 동시에 각 옵션이 미치는 영향을 정확히 이해하고 사용하는 것도 중요하다.
ㅁ 함께 보면 좋은 사이트
'DevOps > Docker' 카테고리의 다른 글
[Docker] Ubuntu:22.04에 ffmpeg 설치 방법 (0) | 2025.01.08 |
---|---|
[Docker] linux/ffmpeg을 이용한 무배포, ffmpeg 테스트 방법 (0) | 2025.01.08 |
[Docker] MacOS에서 Docker 로그 파일 위치 찾기 (0) | 2025.01.07 |
Trivy: 컨테이너 이미지 취약점 스캐너 사용법 (1) | 2025.01.04 |
[Docker] Distroless 이미지란? (0) | 2025.01.04 |