recebendo o erro 'Operação não permitida' ao configurar o ulimit para o memlock em um contêiner Docker executando o ubuntu: xenial (host macOS)

1

Estou com problemas para definir o limite do sistema de 'memlock' em um container que eu inicio assim:

   docker run -it ubuntu:xenial

Aqui está o que eu tentei resumir:

Na sessão 1 do terminal do bash:

docker run -it ubuntu:xenial

defina /etc/security/limits.conf para incluir essas linhas * hard memlock unlimited * soft memlock unlimited

no final do arquivo.

Em seguida, de outro terminal bash no host 'bash in' para o mesmo contêiner e tente fazer isso:

root@6ae391cfb6de:/# ulimit -l unlimited

Eu recebo este erro:

bash: ulimit: max locked memory: cannot modify limit: Operation not permitted

DETALHES para reproduzir

Estou executando o MacOS Sierra 10.12.6 / Docker versão 18.03.1-ce, compilação 9ee9f40

Casca # 1

macOS > %código% OUTPUT IS: ilimitado

macOs > ulimit -l # output of this command is 'unlimited' which shows host ulimits are not the issue

os comandos abaixo são executados no exemplo xenial-docker iniciado a partir do comando acima no Mac no bash shell # 1

 cd  # to home directory
 grep limit .bashrc      # check it any session limits are defined at shell startup -- nothing found

 cat >> /etc/security/limits.conf <<EOF
 *                hard    memlock         unlimited
 *                soft    memlock         unlimited
 EOF

Shell # 2 no Mac

containerId='docker ps | grep ubuntu | sed -e's/ .*//''  # assumes you only have one docker instance of ubuntu running
docker exec -t -i $containerId  bash                     # 'bash in' to ubuntu running container launched in shell #2
ulimit -l 
# output  is 82000    ... huh?
#
# try setting
ulimit -l unlimited
#
#  Nope.. i get this error: 
#       bash: ulimit: max locked memory: cannot modify limit: Operation not permitted

Fim: DETALHES para reproduzir

Alguma dica ou orientação muito apreciada.

    
por Chris Bedford 20.06.2018 / 09:23

2 respostas

0

Meu amigo Chris Cellucci me deu a resposta: corra com --privilegiado

Vou expandir isso com mais detalhes hoje ou amanhã.

    
por 20.06.2018 / 21:37
0

Não seria bom que o documento fornecesse essa capacidade.

No Linux, acho que é a capacidade CAP_IPC_LOCK .

Por que você precisa bloquear, isso geralmente não é uma boa ideia ou é necessário. Isso não impedirá a troca no modo de hibernação.

Eu verifiquei aqui link docker no mac duas versões. Ambos são executados em um contêiner em uma instância do Linux em uma máquina virtual. Portanto, os recursos serão relevantes: você precisará adicionar o recurso apropriado. Consulte o link

    
por 20.06.2018 / 11:26