2017-04-18 3 views
1

할 수있는 병렬 Docker 푸시/풀 수에 제한이 있습니까?Docker 병렬 작업 제한

예. 당신은 도커 당겨 스레드 경우/푸시/그들이 병렬 푸시의 수에 상한 일 것입니다 무슨 동시에 다른 이미지를 밀고/당기는하도록 명령

또는 대안

끌어

하나의 터미널에서 도커가 우분투를 다른 사람에게 끌어 당기면 도커가 실행됩니다. httpd 등을 당깁니다. - Docker가 지원할 수있는 한계는 무엇입니까?

답변

4

고정 표시기 데몬 (dockerd)는 두 개의 플래그가 있습니다

--max-concurrent-downloads int   Set the max concurrent downloads for each pull 
              (default 3) 
    --max-concurrent-uploads int   Set the max concurrent uploads for each push 
              (default 5) 

상한은이 과정 (ulimit -n)에 대한 허용 열려있는 파일의 수에 따라 달라 전망이다. 다른 docker 파일 핸들에 약간의 오버 헤드가있을 것이고, 각각의 push와 pull은 원격 연결을위한 핸들과 로컬 파일 저장을위한 핸들을 여러 개 열 것을 기대합니다.

복잡성을 복잡하게하기 위해 이미지를 푸시하고 당길 때마다 레이어 당 하나의 동시 연결까지 여러 연결이 열립니다. 따라서 12 개의 동시 풀을 실행하면 50-100 개의 잠재적 인 레이어를 가져올 수 있습니다.

도커는 이러한 제한을 늘릴 수 있지만 더 많은 동시 연결을 열지 않는 경우 복귀가 줄어든다는 실질적인 제한이 있습니다. 원격 레지스트리에 대한 대역폭이 제한되어 있다고 가정하면 더 많은 연결이 해당 대역폭을 분할하고 도커 자체는 첫 번째 계층이 완료 될 때까지 대기하여 전송을 푸는 시작합니다. 또한 중단 된 docker pull 또는 push는 레이어의 부분 전송을 잃게되므로 더 많은 동시 연결로 재전송해야하는 잠재적 인 데이터가 증가합니다.

기본 제한은 개발 환경에 매우 적합하며이를 조정해야 할 필요가있는 경우 최대 동시 세션 수를 찾으려고하기 전에 성능 향상을 측정하는 것이 좋습니다.

+0

감사합니다. 매우 유용합니다. Docker 레지스트리 엔드 포인트를 테스트하여 얼마나 잘 확장되는지, 지원할 수있는 동시 연결 수 또는 일반적으로 스트레스 하에서 얼마나 잘 수행되는지 확인해야만한다면 이러한 매개 변수를 사용하여 주위를 돌아 다니는 것이 현명 할 것입니다 여러 종점에서 도커 레지스트리? 이 주제에 대해 너무 밝혀 주시면 감사하겠습니다. – rmoh21

+0

레지스트리, 네트워크 및 엔드 포인트를 모두 제어하는 ​​경우이를 최적화 할 수 있습니다. 하지만 유스 케이스가 특별한 경우가 아니면 노력에 대한 수익이 적을까 봐 걱정됩니다. 대부분은 이미지 자체를 최적화하는 데 훨씬 많은 이점을 얻습니다. – BMitch