Problema
Tengo un IO de disco extremadamente lento dentro de un contenedor Docker. Estoy usando Boot2Docker, así que en realidad ahora me pregunto si el problema es vboxsf.
Pruebas
solía este guión inicialmente porque estaba depurando una aplicación web, pero parece que es el disco que se lee.
- Dentro de Docker: 1.6156311035156
- Anfitrión: 0.022423028945923
Probé la velocidad del disco con dd y los resultados dentro del contenedor:
$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"; rm ddfile
25000+0 records in
25000+0 records out
204800000 bytes (205 MB) copied, 4.23099 s, 48.4 MB/s
real 0m4.241s
user 0m0.000s
sys 0m2.110s
Y en el host:
$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"; rm ddfile
25000+0 records in
25000+0 records out
204800000 bytes transferred in 0.482290 secs (424640750 bytes/sec)
sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"
0.01s user 0.30s system 48% cpu 0.650 total
El host emitió en bytes y el contenedor en mbs, pero al convertir esos números, la diferencia de velocidad es aproximadamente 10 veces la velocidad.
Estoy usando Docker's -v host / folder: container: / folder para montar el código base en el contenedor. No estoy muy seguro de a dónde ir desde aquí. ¿Hay algunos problemas conocidos con los montajes Docker? ¿O podría haber otro problema en juego?
Respuestas:
por lo que está utilizando un mac. Eso significa que está instalando la ventana acoplable en virtualbox ... así es como funciona el almacenamiento
Así que está agregando otra capa de VM sobre lo que la ventana acoplable ya tiene.
No creo que nadie haya afirmado que la IO de la ventana acoplable funcionará cerca de lo que se ve en el host.
fuente
El problema es vboxsf, no docker. Pasé días jugando con esto. vboxsf es increíblemente lento. NFS es más rápido, depende de lo que quieras hacer.
Decidí que no necesitaba los archivos en mi host de todos modos, por lo que, posteriormente, acabo de crear un nuevo disco virtual en mi archivo errante, que es donde se clonó mi fuente, y luego simplemente hice una copia de seguridad de ese archivo.
Esto es difícil de hacer con el boot2docker que encontré, así que solo uso virtual box y vagrant con una imagen que hice, hp-ess / docker, que contiene la última ventana acoplable y la ventana acoplable.
fuente