2014-06-20 13 views
29

ho bisogno di impostare il limite di descrittore di file in modo corretto sul contenitore finestra mobile mi collego al contenitore con SSH (https://github.com/phusion/baseimage-docker)come impostare ulimit/descrittore di file sul contenitore docker tag immagine è Phusion/baseimage-finestra mobile

già provato:

  • modificare limits.conf contenitore ignorare questo file di procedura
  • upstart trovato alla https://coderwall.com/p/myodcq ma questa immagine finestra mobile ha diversi tipi di processo init. (Runit)
  • ho cercato di modificare la configurazione di libreria PAM in /etc/pam.d
  • prova per PAM abilitato per ssh in sshd_config

L'uscita è sempre lo stesso.

bash: ulimit: open files: cannot modify limit: Operation not permitted 

risposta

24

Dopo qualche ricerca ho trovato questo su un gruppi di discussione di Google:

finestra mobile attualmente inibisce questa funzionalità per una maggiore sicurezza.

Questo è perché le impostazioni ulimit del sistema host si applicano al contenitore finestra mobile. È considerato un rischio per la sicurezza che i programmi in esecuzione in un contenitore possono modificare le impostazioni ulimit per l'host.

La buona notizia è che avete due soluzioni diverse tra cui scegliere.

  1. Rimuovere sys_resource da lxc_template.go e ricompilare finestra mobile. Quindi sarai in grado di impostare il limite massimo desiderato.

o

  1. Arrestare il demone finestra mobile. Modificare le impostazioni ulimit sull'host. Inizia il demone finestra mobile. Ora ha i tuoi limiti modificati e anche i suoi processi figlio .

ho applicato il secondo metodo:

  1. sudo service docker stop;

  2. cambiato i limiti in /etc/security/limits.conf

  3. riavvio della macchina

  4. esegui il mio container

  5. eseguire ulimit -a nel contenitore per confermare che il limite di file aperti è stato ereditato.

See: https://groups.google.com/forum/#!searchin/docker-user/limits/docker-user/T45Kc9vD804/v8J_N4gLbacJ

+1

Inoltre v'è un utile tutorial su modifica/etc/sicurezza/limits.conf' in https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Setting_Shell_Limits_for_the_Oracle_User.html –

+0

sai perché richiede un riavvio? Perché non solo riavviare la shell? – CMCDragonkai

4

In realtà, ho provato la risposta di cui sopra, ma non sembra funzionare.

per ottenere la mia contenitori a riconoscere il cambiamento ulimit, ho dovuto aggiornare il file docker.conf prima di iniziare:

$ sudo service docker stop 
$ sudo bash -c "echo \"limit nofile 262144 262144\" >> /etc/init/docker.conf" 
$ sudo service docker start 
+0

Queste modifiche non prevalgono quando la macchina si riavvia dopo il riavvio, ma una volta riavviati i servizi della finestra mobile dopo che la macchina è arrivata, il contenitore assume la configurazione richiesta. –

2

Ecco quello che ho fatto.

set ulimit -n 32000 nel file /etc/init.d/docker

e riavviare il servizio finestra mobile

docker run -ti node:latest /bin/bash

eseguire questo comando per verificare

[email protected]:/# ulimit -a

dovrebbe vedere questo in r isultato

open files (-n) 32000

[[email protected] ec2-user]# docker run -ti node /bin/bash 
[email protected]:/# ulimit -a 
core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 58729 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 32000 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 10240 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 58729 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 
0

Per boot2docker, possiamo impostare su /var/lib/boot2docker/profile, per esempio:

ulimit -n 2018

Essere avvertito di non impostare questo limite troppo alto come rallenterà giù apt-get! Vedi bug #1332440. L'ho avuto con debian jessie.

26

L'ultima finestra mobile supporta l'impostazione di ulimits tramite la riga di comando e l'API. Ad esempio, docker run prende --ulimit <type>=<soft>:<hard> e ce ne possono essere tanti come preferisci. Quindi, per il tuo nofile, un esempio sarebbe --ulimit nofile=262144:262144

+9

Ciò significa che il contenitore specifico ha un limite superiore rispetto agli altri? L'ulimit della macchina host rimane invariato? – garbagecollector

+1

@garbagecollector Sì, significa che il contenitore specifico ha un limite superiore rispetto ad altri. Questo perché se ** - ulimit ** non è specificato nel comando ** docker run **, il contenitore eredita l'ulimit predefinito dal daemon docker. Inoltre, l'ulimit della macchina host rimane totalmente invariato. –

+1

@SuhasChikkanna solo per assicurarsi, se il limite massimo di "file aperti" del contenitore è superiore rispetto all'host sottolineato "max file aperti", il limite del contenitore verrà ignorato? –

6

Ho provato molte opzioni e non sono sicuro del motivo per cui alcune soluzioni suggerite sopra funzionano su una macchina e non su altre.

una soluzione che funziona e che è semplice e può lavorare per contenitore è:

docker run --ulimit memlock=819200000:819200000 -h <docker_host_name> --name=current -v /home/user_home:/user_home -i -d -t docker_user_name/image_name 
0

Il comando docker run ha una bandiera --ulimit è possibile utilizzare questo flag per impostare il limite di file aperto nel contenitore di finestra mobile.

Eseguire il comando seguente quando si gira il contenitore per impostare il limite del file aperto.

docker run --ulimit nofile=<softlimit>:<hardlimit> il primo valore prima dei due punti indica il limite del file soft e il valore dopo i due punti indica il limite del file rigido.si può verificare eseguendo il vostro contenitore in modalità interattiva ed eseguire il seguente comando in vostri contenitori sborsare ulimit -n

PS: controllare questo post blog per maggiore chiarezza

Problemi correlati