기억의 습작

2. 도커 옵션 명령어 본문

SCM (형상관리)/docker

2. 도커 옵션 명령어

뿌사리다 2021. 8. 25. 21:39

목차

  1.  도커 이미지에 이름설정
  2. 도커 입출력 적용
  3. 도커 이미지 포트 포워딩
  4. 컨테이너가 사용하는 포트 정보 확인
  5. 도커 컨테이너속 hostname 설정
  6. 도커 내부의 프로퍼티 값 입력
  7. 서버 재부팅 후 컨테이너 자동 실행 여부
  8. 도커 외부의 디렉토리(host)를 내부의 디렉토리에 링크
  9. 컨테이너가 종료되면 자동 삭제됨
  10. 컨테이너 시작시 (Docker run) 디스크 용량 한도 설정하여 시작하기
  11. 컨테이너 안에서 host의 리눅스 커널 기능을 모두 사용
  12. CPU리소스 분배
  13. 메모리 사용량 제한(b,k,m,g 등의 단위 사용)
  14. 도커 빌드

 

도커 이미지에 이름 설정  

(생략하면 랜덤으로 이름이 랜덤으로 생성됨)

--name my-centos    <-- my-centos 이라는 이름으로 컨테이너를 등록하겠다

 

도커 입력출력 설정

-i      <- interactive 약어로 입력할 수 있도록 정의
-t    <- tty 약어로 출력을 할 수 있도록 정의
ex) docker exec -it my-centos /bin/bash
docker실행시 -it 나 -d 둘중 하나가 설정되어야 한다. 동시에 설정할 수 없다.

 

도커 이미지에서 사용하는 포트를 포트포워딩 한다.

외부(컨테이너 밖)에서 ssh접속하기 위해
-p 18080:8080     <-- 커네이너 안에는 8080으로 톰켓이 띄워 있는데 이것을 외부에서 18080으로 접속해 들어가겠다

 

컨테이너가 사용하는 포트 정보 확인

port
ex) docker port my-centos

 

도커 컨테이너 속 hostname 설정

-h homeserver     <-- 컨테이너 호스트 이름을 homeserver 로 설정하겠다.

 

도커 내부의 프로퍼티 값 입력

-e VNC_PASSWORD=yourpassword    <-- 컨테이너 실행전에 내부의 프로퍼티값을 설정한 다음 서비스 하겠다
-e YOUR_PROPERTY=mykey                  <- 사용자가 이런식으로 값을 셋팅할 수 있다.
(예를들어 초기 패스워드를 넣어두고 이미지 실행시키기)

 

서버 재부팅 후 컨테이너 자동 실행 여부

--restart always    <-- 서버가 리부팅되서 도커가 다시 시작되면 해당 컨테이너가 자동으로 실행되도록 하겠다.

 

도커 외부의 디렉토리(host)를 내부의 디렉토리에 링크

-v /srv/gitlab3/config:/etc/gitlab  <-도커내부 /etc/gitlab 디렉토리를 도커 바깥(host) /srv/gitlab3/config 디렉토리에  링크
-v D:/Docker/filebrowser:/srv      <-도커내부 /srv 에 있는 파일들을 도커 바깥(host) D:/Docker/filebrowser 디렉토리에 링크

더보기

아래와 같이 docker 로 컨테이너 생성시 -v 옵션을 추가하여 컨테이너와 os간의 디렉토리를 공유하고자 할때 –privileged 옵션을 주지 않으면 permission denied 애러가 발생한다. (기본 설정은 unprivileged이고 host의 device에 접근이 불가능하다)

ex) docker run -it --privileged -v /tmp:/data centos /bin/bash

컨테이너가 종료되면 자동 삭제됨

--rm     <-- -d옵션과 함께 사용할 수 없음

 

컨테이너 시작시 (Docker run) 디스크 용량 한도 설정하여 시작하기

--storage-opt size=35G

 

컨테이너 안에서 host의 리눅스 커널 기능을 모두 사용

-- privileged    <-- 생략하면  Unprivileged 모드이다
privileged옵션을 사용하지 않으면 시스템 주요 자원에 접근하라 수 있는 권한이 부족하기 때문에 특정 장치 등의 시스템 자원에 접근할 수 없다. 예를 들어 네트워크 인터페이스의 활성화/비활성화나 IP주소 변경등이 불가능한다.

 

CPU리소스 분배

-c=512                     
--cpu-shares=512     <- 컨테이너에 가중치를 설정해 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지 설정
ex) $ docker run --cpu-share=512
cpu 코어 개수를 할당하는 것이 아닌 시스템에 존재하는 cpu를 어느 비중만큼 나눠 쓸 것인지 명시하는 옵션
설정하지 않은 기본값은 1024 입니다.

--cpuset-cpus=2        <- 컨테이너가 호스트 CPU의 개수를 지정하여 특정 CPU만 사용하도록 설정


메모리 사용량 제한(b,k,m,g 등의 단위 사용)

-m=512                           <-- 해당 컨테이너의 메모리 사용요량을 512m로 제안한다
--memory=512m        <-- 해당 컨테이너의 메모리 사용요량을 512m로 제안한다
--memory-swap=1g    <-- 스왑 메모리도 설정할 수 있다.
ex) $ docker run  --memory=512m
사용제한 가능한 최소 메모리는 4MB 입니다.

 WARNING: Your kernel does not support swap limit capabilities, memory limited without swap.
 위와 같은 경고가 표시되었다면
 이는 리눅스 커널 설정의 문제로 swap 제한을 지원하지 않는다는 경고이다.

 grub설정을 바꾸고 재시작하면 경고 없이 작동할 것이다.
 
 $ vi /etc/default/grub
 
 (생략)…
 
 GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"     <-- 기존것을 빨간색 으로 수정
 $ update-grub
 $ reboot

 

도커 빌드

build    <-- Dockerfile 이라는 파일속에 컨테이너 생성할 설정파일이있고 그 상태에서 build 하면 이미지가 만들어진다.
ex) docker build -t ppusari.iptime.org:5000/my-centos

 

 

728x90
반응형
LIST