Programming/Server

[Docker] 자주 사용 명령어 모음

bisi 2020. 4. 17. 13:24

docker  명령어 정리 

run 실행시 옵션

  • run은 생성하고 시작하는 명령어 (=생성과 시작을 동시에!)
  • 생성은 했지만 시작이 되지 않는 경우
    • ps로는 보이지만, ps -a로 안보임 -> run 옵션 확인 
    • 컨테이너 볼륨 공유에 대하셔 privileged를 주지 않았거나,
    • -p옵션에 대하여 중복되는 포트를 할당해줬거나
    • 단일 어플리케이션을 위한 컨테이너를 경우 -e 옵션을 주지 않으면 컨테이너 생성 안됨.

 

 

run 옵션 형식

docker run {옵션들, 복수 사용 가능} {이미지 이름} {컨테이너 실행 시 입력될 커맨드 라인} {기타 인자들}

 

 

주로 쓰는옵션 

 

1) 컨테이너 자원 할당

-c, --cpu-share 

cpu스케쥴링에서 컨테이너가 얼마나 많은 부분을 차지 할지 나타내는 것.
기본값은 1024


-m 
메모리 제한 
바이트, 키로바이트, 메가바이트 기가 바이트 순으로 넣을 수 있으며 컨테이너가 해당 메모리 제한을 넘어가게 되면 컨테이너가 종료된다. 

 

--cpuset
사용하지 않는 것을 추천
인자를 1,2,4 또는 1과 같이 준다, 해당 cpu를 전부 다 점유해 버린다. 
개인적으로 사용하는 컨테이너라면 상관 없지만, 서비스에는 적합하지 않다. 



2) interacive하게 컨테이너 사용

--name 

컨테이너 이름

 

-i 

interacive라는 뜻

컨테이너와 상호적으로 주고 받고 하겠다

입력에 대한 출력을 나타내는 말.


-t 

tty라는 뜻

tty(터미널과 동일한 의미)를 사용하겠다. 

즉 터미널과 비슷한 환경을 조성해줌.



3) 도커의 디렉토리 공유

  • 컨테이너는 호스트 OS와 분리되어야한다는 도커의 철학!이 있지만,
  • 필요에 따라 호스트 OS의 파일을 공유해서 사용할 수 있으며, 다른 컨테이너들끼리 파일을 공유하며 효율적으로 작업이 가능할때도 있다.

 

--mount

--volume 옵션과 동일함.

docker document를 참고하면 --volume 옵션보다 --mount를 사용하길 권장한다. 

volumes 관련 공식문서 사이트  : https://docs.docker.com/storage/volumes/

호스트 OS의 디렉토리와 컨테이너 내부 디렉토리를 공유 시킴. 

사용예시 

 --mount type=bind,source=/home/vagrant/nginx/html,target=/usr/share/nginx/html



--volumes-from

컨테이너들 끼리의 디렉토리공유.



--privileged 
호스트 OS에 접근할 수 있도록 권한을 주는 옵션
touch: cannot touch 'log': Permmission denied

 


4) 네트워크 설정

  • 외부와 연결하는 수단인 네트워크 옵션
  • 컨테이너 안에서 서비스를 구동하고, 외부에서 그 서비스에 접근하려고 한다면 컨테이너에 -p옵션을 주는 것이 바람직.
  • IP와 포트로 그 컨테이너 안에 서비스로 접속할수 있기 때문.


-p

형식 : {연결할 호스트의 포트 번호}:{컨테이너의 포트 번호}

컨테이너 포트를 개방한 뒤, 호스트 포트와 연결한다.



-P, --publish-all
임의의 포트를 컨테이너에 할당 


-expose
컨테이너 포트만 개방한다.외부와 연결하지 않고 포트만 개방.
컨테이너들 끼리의 접근할때 사용


--add-host
컨테이너 내부의 /etc/hosts에 호스트 이름과 IP 주소를 설정해준다.
(없으면 임의의 ip address 할당)


--dns
DNS 서버의 IP 주소를 설정해준다


--mac-address
컨테이너 MAC 주소를 설정해준다


--net
컨테이너 네트워크 설정(bridge, none, container:, host)


-h ,-- hostname
컨테이너 호스트 이름 설정해준다


--link
다른 컨테이너에서 접근시 이름을 설정

 

 

5) 기타 옵션들

-d, --detach
컨테이너를 생성하고 백그라운드에서 실행시킨다.
이 옵션을 주지 않으면 포어그라운드에서 실행한다. 


-u, -user
사용자명을 입력


--restart
커맨드 실행 결과에 따라서 재기동을 설정 (no, on-failure(횟수), always)


--rm
커맨드 실행 완료 후 컨테이너를 자동으로 삭제시키는 옵션 

 

 

 

 

 

참고 사이트 
https://www.leafcats.com/191
https://blog.naver.com/alice_k106/220306793372