본문 바로가기

Program

docker run 인자 완전 정복 – 컨테이너 실행의 모든 것

반응형

 

🐳 docker run 인자 완전 정복 – 컨테이너 실행의 모든 것


📌 docker run의 기본 구조

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS: 컨테이너 실행을 제어하는 다양한 인자(옵션)들
  • IMAGE: 실행할 Docker 이미지 이름
  • COMMAND: 컨테이너가 실행할 명령어
  • ARG: 명령어에 전달할 인자


🎯 자주 사용하는 docker run 옵션 인자들

1. -d (Detached Mode: 백그라운드 실행)

docker run -d nginx
  • 컨테이너를 백그라운드에서 실행
  • 터미널에 묶이지 않고 실행되므로 서버 실행에 유용

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

docker run --name my_web nginx
  • 자동 생성되는 무작위 이름 대신, 식별하기 쉬운 이름 부여
  • 이후 docker stop my_web처럼 이름으로 관리 가능

3. -p (포트 매핑)

docker run -p 8080:80 nginx
  • 호스트의 8080 포트를 컨테이너의 80 포트에 연결
  • 외부에서 접근 가능해지는 중요한 설정

4. -v (볼륨 마운트)

docker run -v /my/host/path:/usr/share/nginx/html nginx
  • 호스트의 디렉터리를 컨테이너 내부에 연결
  • 개발 중 코드 자동 반영, 데이터 유지 등에 활용

5. -e (환경 변수 설정)

docker run -e MYSQL_ROOT_PASSWORD=1234 mysql
  • 환경 변수 설정을 통해 애플리케이션 구성 가능
  • 주로 데이터베이스 컨테이너에서 비밀번호, 포트 설정 등에 사용

6. --rm (종료 시 컨테이너 자동 삭제)

docker run --rm ubuntu echo "hello"
  • 일회성 테스트나 스크립트 실행에 적합
  • 실행 후 자동으로 컨테이너 삭제

7. -it (터미널 인터랙션 + 입력)

docker run -it ubuntu bash
  • 컨테이너 내부에 bash 쉘로 접속
  • 개발자나 운영자가 직접 명령을 입력하고 테스트할 수 있음

8. --network (네트워크 설정)

docker run --network host nginx
  • 컨테이너가 호스트 네트워크를 그대로 사용
  • 보안 또는 성능 최적화 시 유용

9. --restart (자동 재시작 정책)

docker run --restart=always nginx
  • 시스템 재부팅이나 오류 종료 후 자동 재시작
  • no, on-failure, always, unless-stopped 등 다양한 정책 사용 가능

10. --privileged (특권 모드)

docker run --privileged alpine
  • 컨테이너가 호스트 시스템의 모든 권한을 갖게 됨
  • 시스템 장치 접근 필요할 때 사용 (주의 필요)

🧪 종합 예제

docker run -d \
  --name my_nginx \
  -p 8080:80 \
  -v ~/myapp:/usr/share/nginx/html \
  --restart=always \
  nginx

이 명령어는 다음을 의미합니다:

  • 백그라운드에서 nginx 컨테이너 실행
  • 컨테이너 이름은 my_nginx
  • 호스트 포트 8080 → 컨테이너 80포트 매핑
  • 로컬 디렉터리 ~/myapp을 nginx 루트 디렉터리로 마운트
  • 재부팅 후 자동 재시작 설정

💡 docker run vs docker start

구분 docker run docker start

기능 새 컨테이너 생성 및 실행 이미 존재하는 중지된 컨테이너 재실행
사용 시점 처음 실행할 때 멈춘 컨테이너 재시작할 때
옵션 사용 가능 제한적 (docker create로 만든 옵션 기반)

🔍 실무에서 유용한 팁

  • 개발 중인 웹 앱을 실시간 반영하고 싶다면 -v 옵션 활용
  • 데이터베이스 컨테이너는 꼭 -e로 비밀번호 설정
  • CI/CD 파이프라인에서 자동화하려면 --rm + -it 조합 추천
  • 운영 환경에선 --restart=always로 장애 대응

✅ 정리

  • docker run은 컨테이너를 생성하고 실행하는 가장 핵심적인 명령어입니다.
  • 다양한 인자를 조합하면 컨테이너의 네트워크, 볼륨, 환경변수, 자동 재시작 등을 유연하게 설정할 수 있습니다.
  • 실무에서는 보안과 성능을 고려한 --network, --privileged, --restart 등의 옵션도 중요합니다.

 

도커는 개발자뿐 아니라 DevOps, 인프라 엔지니어에게도 필수 도구입니다. docker run 명령어에 익숙해지면, 도커를 자유자재로 다룰 수 있는 능력이 확실히 올라갑니다. 위 내용을 실습과 함께 적용해보며 익혀보세요. 궁금한 점은 댓글로 남겨 주세요!

반응형