2014-09-23 6 views
16

Ich versuche ein System zu erstellen, das Code unter konsistenten Bedingungen ausführt, und eine Möglichkeit, wie ich es mir vorstellen kann, besteht darin, die verschiedenen Programme in Docker-Containern mit demselben Layout auszuführen die gleiche Menge an Speicherplatz usw. reservieren. Allerdings kann ich nicht herausfinden, wie man die CPU-Auslastung konsistent hält.Begrenzung eines Docker-Containers auf einen einzelnen CPU-Kern

Die nächste Sache, die ich finden kann, sind "CPU-Freigaben", die, wenn ich die Dokumentation verstehe, die CPU-Nutzung in Bezug darauf begrenzen, welche anderen Container/andere Prozesse auf dem System laufen und was auf dem System verfügbar ist . Sie scheinen nicht in der Lage zu sein, den Container auf eine absolute Menge an CPU-Nutzung zu beschränken.

Im Idealfall würde ich Docker Container einrichten, die auf einen einzigen CPU-Kern beschränkt sein würde. Ist das überhaupt möglich?

Antwort

28

Wenn Sie eine neuere Version von Docker verwenden, können Sie --cpuset-cpus="" in docker run verwenden, um die CPU-Kerne Sie zuordnen möchten angeben:

docker run --cpuset-cpus="0" [...] 

Wenn Sie eine ältere Version von Docker verwenden (< 0,9), die LXC als Standard-Ausführungsumgebung verwendet, Sie --lxc-conf verwenden können, den zugeordneten CPU-Kern zu konfigurieren:

docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0" [...] 

In diesen beiden Fällen nur der erste CPU-Kern wird den docker conta zur Verfügung iner. Beide Optionen sind dokumentiert in the docker help.