본문 바로가기

프로젝트 설정/Docker

[Docker] Docker run

반응형

docker install

https://24hours-beginner.tistory.com/461

 

[Docker] Docker installation on Ubuntu 20.04

docs가 너무 잘되어있으니 왠만하면 Docs를 참고합시다. https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu docs.docker.com 1. sudo apt-get remove docker docker-engine docker.io containerd runc 2. sudo apt-get upd

24hours-beginner.tistory.com

docker run의 기본 구조

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

주요 옵션과 사용 예시

1. -d, --detach

  • 사용했을 때: 컨테이너가 백그라운드에서 실행됩니다. 예: docker run -d nginx
  • 사용하지 않았을 때: 컨테이너가 포그라운드에서 실행되며, 컨테이너의 로그 출력을 터미널에서 볼 수 있습니다.

2. --name

  • 사용했을 때: 컨테이너에 사용자 정의 이름을 지정합니다. 예: docker run --name my_nginx nginx
  • 사용하지 않았을 때: Docker가 임의의 이름을 생성하여 할당합니다.

3. -p, --publish

  • 사용했을 때: 호스트의 포트를 컨테이너의 포트에 매핑합니다. 예: docker run -p 80:80 nginx
  • 사용하지 않았을 때: 컨테이너는 외부 네트워크와 연결되지 않습니다.

4. -v, --volume

  • 사용했을 때: 지정된 볼륨이나 디렉토리가 컨테이너에 마운트됩니다. 예: docker run -v /host/data:/container/data nginx
  • 사용하지 않았을 때: 컨테이너는 호스트의 파일 시스템과 공유하지 않습니다.

5. --rm

  • 사용했을 때: 컨테이너가 종료되면 자동으로 삭제됩니다. 예: docker run --rm nginx
  • 사용하지 않았을 때: 컨테이너가 종료된 후에도 파일 시스템에 남아있습니다.

6. -e, --env

  • 사용했을 때: 컨테이너에 환경 변수를 설정합니다. 예: docker run -e "ENV_VAR_NAME=value" nginx
  • 사용하지 않았을 때: 기본 환경 변수 설정이 사용됩니다.

7. --entrypoint

  • 사용했을 때: 컨테이너의 기본 엔트리포인트를 오버라이드합니다. 예: docker run --entrypoint /custom/script.sh nginx
  • 사용하지 않았을 때: 이미지에 정의된 기본 엔트리포인트가 사용됩니다.

8. -i, --interactive

  • 사용했을 때: 컨테이너의 표준 입력을 열어둡니다. 예: docker run -i nginx
  • 사용하지 않았을 때: 표준 입력이 연결되지 않습니다.

9. -t, --tty

  • 사용했을 때: 가상 터미널이 할당됩니다. 예: docker run -t nginx
  • 사용하지 않았을 때: 터미널이 할당되지 않아 대화형 세션이 불가능합니다.

 

고급 옵션과 사용법

--memory

  • 설명: 컨테이너의 메모리 사용량을 제한합니다.
  • 예시: docker run --memory=1g nginx는 컨테이너의 메모리 사용량을 최대 1GB로 제한합니다.

--cpus

  • 설명: 컨테이너가 사용할 수 있는 CPU 코어의 수를 제한합니다.
  • 예시: docker run --cpus=0.5 nginx는 컨테이너가 사용할 수 있는 CPU 자원을 반 코어로 제한합니다.

--network

  • 설명: 컨테이너가 연결될 네트워크를 지정합니다.
  • 예시: docker run --network=host nginx는 호스트의 네트워크를 컨테이너와 공유하도록 설정합니다.

--hostname 옵션

  • --hostname: 컨테이너 내에서 사용할 호스트 이름을 지정합니다.
  • 예시: docker run --hostname=mycontainer nginx 명령어는 컨테이너의 호스트 이름을 mycontainer로 설정합니다.

--network 옵션

  • --network: 컨테이너가 연결될 네트워크 타입을 지정합니다.
  • 옵션 중 host: --network=host를 사용하면 컨테이너가 호스트의 네트워크 네임스페이스를 사용하게 됩니다. 즉, 컨테이너가 호스트의 IP 주소와 포트를 그대로 사용하게 됩니다.
  • 예시: docker run --network=host nginx 명령어는 컨테이너가 호스트의 네트워크 설정을 그대로 사용하도록 합니다.

-p 옵션과 --network=host의 차이점

-p, --publish 옵션

  • 설명: 호스트의 특정 포트를 컨테이너의 특정 포트에 매핑합니다. 이를 통해 외부에서 컨테이너로 네트워크 트래픽을 전송할 수 있습니다.
  • 예시: docker run -p 80:80 nginx 명령어는 호스트의 80번 포트를 컨테이너의 80번 포트에 매핑합니다.

--network=host

  • 설명: 이 옵션을 사용하면, 컨테이너는 호스트의 네트워크 네임스페이스를 공유하며, 호스트의 IP 주소와 모든 포트를 직접 사용합니다. 이 경우, -p 옵션은 필요 없습니다.
  • 차이점: --network=host는 컨테이너와 호스트 간의 격리를 줄이며, 네트워크 성능을 최적화할 수 있지만, 보안상의 위험을 증가시킬 수 있습니다. -p 옵션은 네트워크 격리를 유지하면서 특정 포트만 공유하는 보다 안전한 방법입니다.
반응형