기본적으로 Docker 컨테이너는 호스트 머신의 CPU 자원을 제한없이 사용할 수 있습니다. 즉, 하나의 컨테이너가 수행될 때 CPU-Intensive 한 작업을 돌리면, 호스트 머신의 CPU 자원을 점유해버리는 상황도 발생할 수 있습니다. 이는 컨테이너간 독립적인 환경을 구축할 수 없음을 의미하기 때문에 CPU 사이클에 대한 쿼터(Quota)를 적용할 필요가 있습니다. Docker는 기본적으로 CFS 스케줄러를 사용하며, 버전 1.13이상에서 실시간 스케줄러를 이용할 수 있습니다. CFS 스케줄러를 이용하기 때문에 설정들이 CFS 스케줄러와 연관되어 있습니다. CPU에 대한 실시간 스케줄링은 다음과 같이 할 수 있습니다. cpu를 할당해서 sysbench 테스트를 진행해보겠습니다. cpu 0과 1, 2..
여기서 다뤄볼 것은 아래와 같습니다. Docker 버전확인 pull 명령으로 이미지 받기 images 명령으로 이미지 목록 출력하기 run 명령으로 컨테이너 생성하기 ps명령으로 컨테이너 목록 확인하기 start 명령으로 컨테이너 시작하기 restart 명령으로 컨테이너 재시작하기 attach 명령으로 컨테이너에 접속하기 exec 명령으로 외부에서 컨테이너 안의 명령 실행하기 stop명령으로 컨테이너 정지하기 rm 명령으로 컨테이너 삭제하기 rmi 명령으로 이미지 삭제하기 Docker 버전확인 pull 명령으로 이미지 받기 images 명령으로 이미지 목록 출력하기 run 명령으로 컨테이너 생성하기 docker run 형식입니다. 여기서는 ubuntu이미지를 컨테이너로 생성한 뒤 ubuntu 이미지 안의..
레이어 저장방식 도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백메가에 이릅니다. 처음 이미지를 다운받을 땐 크게 부담이 안되지만 기존 이미지에 파일 하나 추가했다고 수백메가를 다시 다운받는다면 매우 비효율적일 수 밖에 없습니다. 도커는 이런 문제를 해결하기 위해 레이어layer라는 개념을 사용하고 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해줍니다. 이미지는 여러개의 읽기 전용read only 레이어로 구성되고 파일이 추가되거나 수정되면 새로운 레이어가 생성됩니다. ubuntu 이미지가 A + B + C의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지는 A + B + C + nginx가 됩니다. web..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #include #include #include #include using namespace std; int pillar; vector pillar_information; void receive_pillar_data() { int location; int hight; for(int pillar_number = 0; pillar_number > location; cin >> hi..