Cómo desconectarse de la consola lxc


41

Estoy trabajando con lxc en Ubuntu 12.04, y es realmente genial. Sin embargo, no puedo desconectarme de una lxc-consolesesión después de conectarme. Leí en alguna parte que Ctrl-aqme desconectará de la consola, pero no parece funcionar.

¿Debería estar ejecutando lxc-consoleen su screenlugar?


Tengo el mismo problema. Si inicia un contenedor olvidando el parámetro "-d", no hay salida. Ctrl aq no tiene efecto. La única solución que he encontrado es iniciar sesión en la consola, y hacer "sudo poweroff", eso te saca.
eos

también puedes hacer una lxc-stopde otra concha
Martin Serrano

Respuestas:


56

Sí, Ctrl-aqdebería funcionar de manera predeterminada; sin embargo, lxc-consoleno , en realidad no se usa screenpara lograr el comportamiento de la consola. De hecho, es posible que encuentre un conflicto si está usando la pantalla, ya que también se usa Ctrl-acomo prefijo. Si está dentro screenpero no se da cuenta, deberá escribir, Ctrl-a a qya que el comportamiento predeterminado de screenes que debe escribir Ctrl-a apara enviar realmente ^aal shell que se ejecuta dentro de él. Puede cambiar el prefijo de escape pasando la opción -eo --escape=PREFIXa lxc-console.

Además, parece que puede haber un error, de lxc-startmodo que si entra inmediatamente en modo consola cuando inicia el contenedor que no puede usar Ctrl-a qpara escapar, de hecho, todos los caracteres de control parecen estar jodidos e imprimidos en la pantalla en lugar de comportarse como esperabas. Una solución alternativa es ejecutarlo con la opción -do --daemonpara que no inicie inmediatamente una consola y conectarse manualmente:

lxc-start -d -n container-name
lxc-console -n container-name

1
<kbd> Ctrl-a q </kdb> no tiene ningún efecto en una consola conectada con lxc versión 0.9.0
Jay Taylor

55
Si los desarrolladores de lxc alguna vez se preguntan por qué Docker tuvo una adopción mil millones de veces mayor, este error es una de las principales razones.
Florian Heigl

1
@FlorianHeigl Si bien estoy de acuerdo con su opinión acerca de que este error es feo, las verdaderas razones son las actitudes: bugs.debian.org/cgi-bin/bugreport.cgi?bug=768073 access.redhat.com/articles/1365153 access. redhat.com/discussions/2772171 (y muchas otras ocasiones en que RedHat responde a "LX (C | D)?" con "No, Docker!" (tenga en cuenta que estos son los mejores resultados de Google para "LXD Debian" y "LXD Redhat consultas ").
Bojan Markovic

2

Lo que hice para detener el contenedor.

  1. Abre una nueva sesión.
  2. Inicie sesión como root.
  3. Verifique el estado del contenedor.
  4. lxc-stop -n <name of the container>

Esto detendrá el contenedor.


0

¿No se conecta a través de screen? Ctrl-a ddebería sacarte de eso.

La página Ubuntu LXC tiene más información.


No, esto no funciona. He estado usando la pantalla para poder desconectarme de la consola lxc. Además, el enlace que publicó no tiene ninguna información sobre este problema.
robbyt

"Separar pantalla: Ca d o Ca Cd" - help.ubuntu.com/community/LXC#Mini_screen_how-to ; No estoy seguro de qué hacer si eso no funciona.
El Yobo

1
@ElYobo No, en lxc-consolerealidad no usa screen, solo tiene un comportamiento similar y, de manera predeterminada, en realidad usa una clave que entra en conflicto con screenla que se describe aquí .
aculich

0

Una forma alternativa de iniciar sesión es simplemente hacer un uso ssh <ip>instantáneo lxc-console. Puede usar iniciarlo como demonio usando lxc-start -d -n <name>y luego iniciar sesión usando la consola para obtener la IP por primera vez.


0

Tuve un problema similar al trabajar con mi Trusty LXC en Xenial-host y después de iniciar el contenedor con lxc-start -F -n CNno podía salir y volver al host cuando se desconectó del contenedor. Además, sudo lxc-ls -fen el host se colgó y ninguno de los lxc-stopcomandos con las opciones -k o -W o --no-lock funcionó, por lo que eventualmente eliminé el proceso del contenedor que funcionó, pero luego comencé el contenedor con lxc-starto lxc-attachno funciona correctamente , pero muestra errores sobre lxc_cgfsng y no encuentra el init pid, etc.

Ver más aquí: https://github.com/lxc/lxc/issues/1195


-6

Cuando haya terminado de trabajar con alguna aplicación, generalmente puede finalizarla con CTR + C. Si eso no funciona, siempre existe el comando para salir: CTRL +.

CTRL + D, por otro lado, significa "FIN DE ARCHIVO", y generalmente funciona para evitar que algún programa lea el teclado. Puede cerrar sesión en el shell normal con CTRL + D.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.