본문 바로가기

Computer/Docker

Docker container 실행 - docker run (2)

반응형

컨테이너의 네트워크 설정

Docker run 명령어는 네트워크 옵션을 다음과 같이 지원합니다.

Option Description
--add-host=[호스트명:IP 주소] 컨테이너의 /etc/hosts에 호스트명과 IP 주소를 정의
--dns=[IP 주소] 컨테이너용 DNS 서버의 IP 주소 지정
--expose 지정한 범위의 포트 번호를 할당
--mac-address=[MAC 주소] 컨테이너의 MAC 주소를 지정
--hostname, -h 컨테이너 자신의 호스트명 지정
--publish,
-p[호스트의 포트 번호:컨테이너의 포트 번호]
호스트와 컨테이너의 포트 매핑
--publish-all, -P 호스트의 임의의 포트를 컨테이너에 할당

다음의 명령은 nginx라는 이름의 이미지를 바탕으로 test라는 이름의 컨테이너를 생성하고 백그라운드에서 실행하면서 호스트의 포트 번호 8000과 컨테이너의 포트 번호 80을 매핑시킵니다. 따라서 이 명령을 실행하고 호스트의 8000 포트에 접근하면 컨테이너에서 작동하고 있는 nginx (80 포트)에 접근할 수 있습니다.

docker run -d -p 8000:80 --name test nginx

또한 -P 옵션을 사용하면 호스트 머신의 임의의 포트를 할당합니다.


다음 명령을 실행하고 컨테이너 안의 /etc/hosts 를 확인하면 컨테이너의 호스트명이 정의되어 있는 것을 확인할 수 있습니다.

docker run -it --hostname test --add-host test.com:192.168.1.1 --name test centos

 

자원을 지정하여 컨테이너 실행

CPU나 메모리와 같은 자원을 지정하여 컨테이너를 생성할 수 있습니다.

Options Description
--cpu-shares, -c CPU의 사용 배분
--memory, -m 사용할 메모리를 제한하여 실행
--volume=[호스트의 디렉토리: 컨테이너의 디렉토리], -v 호스트와 컨테이너의 디렉토리를 공유

컨테이너를 시작할 때 해당 컨테이너의 CPU와 메모리의 자원 이용을 제한할 수 있는데 메모리의 사용량은 --memory 옵션으로, CPU 시간은 --cpu-shares 옵션으로 지정할 수 있습니다. cpu-shares에는 기본값으로 1024가 들어가고 memory는 256m 이 들어갑니다. 다음 명령어로 cpu 사용량을 절반으로 줄이면서 사용 메모리를 1기가로 할당할 수 있습니다. 또한 -v 옵션으로 호스트의 디렉토리와 컨테이너의 디렉토리를 공유할 수 있습니다. 이때 주의할 점은 디렉토리의 절대 경로가 들어가야 합니다.

docker run --cpu-shares=512 --memory=1g centos

 

컨테이너 시작환경 설정

컨테이너의 환경변수나 컨테이너 안의 작업 디렉토리 등을 지정하여 컨테이너를 실행할 수 있습니다.

Options Description
--env=[환경변수], -e 환경변수 설정
--env-file=[파일명] 환경변수를 파일로부터 설정
--workdir=[경로], -w 컨테이너의 작업 디렉토리 지정
-u, --user=[사용자명] 사용자명 지정

다음 명령어를 통해 컨테이너를 시작할 때 환경변수를 설정할 수 있습니다. 혹은 환경변수 설정 파일을 미리 만들어놓았을 경우 --env-file 옵션을 통해 파일명을 지정하면 설정 파일대로 환경변수가 설정됩니다. 또한 -w 옵션을 통해 /test_dir 경로를 작업 경로로 지정할 수 있습니다. (컨테이너 접속 시 /test_dir 경로로 접속합니다)

docker run -it -e foo=bar -w=/test_dir centos

반응형

'Computer > Docker' 카테고리의 다른 글

Dockerfile (2) - RUN, CMD, ENTRYPOINT  (1) 2021.04.30
Dockerfile (1) - 개요  (0) 2021.04.29
Docker container 실행 - docker run (1)  (2) 2021.04.13
Docker 이미지 커맨드  (0) 2021.04.03
Docker의 작동 구조  (0) 2021.03.27