Testando uma instância do docker com um béquer

1

Eu tenho um conjunto de testes Beaker em execução em um host do docker.

Eu não conheço as complexidades de como o Docker lida com arquivos de swap, mas parece que ele não gosta dele.

O código do Puppet é assim:

exec { 'Create swap file':
  command => "/bin/dd if=/dev/zero of=${swapfile} bs=1M count=${swapfilesize_mb}",
  creates => $swapfile,
}
exec { 'Attach swap file':
  command => "/sbin/mkswap ${swapfile} && /sbin/swapon ${swapfile}",
  require => Exec['Create swap file'],
  unless  => "/sbin/swapon -s | grep ${swapfile}",
}
if $add_mount {
  mount { 'swap':
    ensure  => present,
    fstype  => swap,
    device  => $swapfile,
    dump    => 0,
    pass    => 0,
    require => Exec['Attach swap file'],
  }
}

E a mensagem de erro é a seguinte:

Info: Loading facts
Notice: Compiled catalog for centos-6-x64 in environment production in 0.22 seconds
Info: Applying configuration version '1411345072'
Notice: /Stage[main]/Swap_file/Exec[Create swap file]/returns: executed successfully
Notice: /Stage[main]/Swap_file/Exec[Attach swap file]/returns: mkswap: /tmp/swapfile: warning: don't erase bootbits sectors
Notice: /Stage[main]/Swap_file/Exec[Attach swap file]/returns:         on whole disk. Use -f to force.
Notice: /Stage[main]/Swap_file/Exec[Attach swap file]/returns: Setting up swapspace version 1, size = 5116 KiB
Notice: /Stage[main]/Swap_file/Exec[Attach swap file]/returns: no label, UUID=ceb75f7d-ae8b-4781-bd1b-4123bec9bcf1
Notice: /Stage[main]/Swap_file/Exec[Attach swap file]/returns: swapon: /tmp/swapfile: swapon failed: Input/output error
Error: /sbin/mkswap /tmp/swapfile && /sbin/swapon /tmp/swapfile returned 255 instead of one of [0]
Error: /Stage[main]/Swap_file/Exec[Attach swap file]/returns: change from notrun to 0 failed: /sbin/mkswap /tmp/swapfile && /sbin/swapon /tmp/swapfile returned 255 instead of one of [0]
Notice: /Stage[main]/Swap_file/Mount[swap]: Dependency Exec[Attach swap file] has failures: true
Warning: /Stage[main]/Swap_file/Mount[swap]: Skipping because of failed dependencies
Notice: Finished catalog run in 0.26 seconds

Então, basicamente, como configuro um contêiner do docker para onde posso executar swapon sem gerar erros?

    
por Peter Souter 14.10.2014 / 23:41

2 respostas

0

Então, perguntei na sala #docker freenode e, na verdade, não é possível gerenciar a troca dentro de um contêiner docker:

10:44 AM <petems> cnf: How do I make it so that in a docker container for say, centos 6, I can run swap commands? Is that possible?
10:44 AM <cnf> petems: you can NOT swapon for _only_ the container, sorry
10:45 AM <cnf> petems: docker is NOT a VM
    
por 16.10.2014 / 12:08
0

Para suportar swap no Docker você primeiro tem que habilitar o gerenciamento cgroup de memória e wap com estes argumentos: cgroup_enable = memory swapaccount = 1.

Se você estiver usando o grub, ele deve estar em / etc / default / grub e a linha para adicioná-lo deve ser GRUB_CMDLINE_LINUX ou GRUB_CMDLINE_LINUX_DEFAULT. Depois de fazer essa mudança, execute sudo update-grub e reboot. Um pouco mais de detalhes está aqui: link

Deixe-me saber se isso não ajuda e podemos ir mais longe. Se isso não ajudar, tente executar esses comandos manualmente iniciando o contêiner em um shell. Execute isto para obter um shell interativo e executar os comandos: docker run -t -i image_name / bin / bash

    
por 15.10.2014 / 00:43

Tags