Contenedor Docker SSH no se inicia si se inicia un script o se configura LD_PRELOAD.
Tengo una imagen de Docker que inicia SSH al inicio y escucha las conexiones:
DESDE nvcr.io/nvidia/deepstream:6.0-triton
<h1>OTRAS COSAS AQUÍ</h1>
<h1>....</h1>
<h1>SSH Y ACCESO REMOTO PARA PROPÓSITOS DE DESARROLLO</h1>
<p>EJECUTAR apt update && apt install -y openssh-server
EJECUTAR mkdir /var/run/sshd
EJECUTAR echo 'root:mi<em>contraseña' | chpasswd
EJECUTAR sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd</em>config</p>
<h1>Solución al problema de inicio de sesión SSH. De lo contrario, el usuario se desconecta después de iniciar sesión</h1>
<p>EJECUTAR sed 's@session\s<em>required\s</em>pam<em>loginuid.so@session optional pam</em>loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
EJECUTAR echo "export VISIBLE=now" >> /etc/profile
EJECUTAR sed -i 's/(^Port)/#\1/' /etc/ssh/sshd<em>config && echo Port 2222 >> /etc/ssh/sshd</em>config</p>
<h1>Exportar el puerto 2222 para el servidor SSH</h1>
<p>EXPOSE 2222</p>
<h1>ENV</h1>
<h1>LD<em>PRELOAD="/src/libmyplugins.so:${LD</em>PRELOAD}"</h1>
<h1>INICIO</h1>
<h1>Deshabilitar la entrada anterior.</h1>
<p>ENTRYPOINT []</p>
<h1>Establecer directorio predeterminado</h1>
<p>WORKDIR /src</p>
<h1>Habilitar SSH para depurar en el servidor remoto</h1>
<p>CMD ["/usr/sbin/sshd", "-D"]
Mi objetivo es poder agregar <code>/src/libmyplugins.so</code>
a <code>LD_PRELOAD</code>
.
Intenté varias cosas y todas resultaron en que el contenedor se detuviera justo después de iniciar:
– Agregar <code>LD_PRELOAD="/src/libmyplugins.so:${LD_PRELOAD}"</code>
al Dockerfile
– Crear un script llamado entrypoint.sh
para que se ejecute al inicio con `CMD ["sh", "entrypoint.sh", "&&", "/usr/sbin/sshd", "-D"]
con el objetivo de establecer la variable de entorno dentro del archivo del script.
davy.ai
Para agregar
/src/libmyplugins.so
aLD_PRELOAD
, puedes modificar el Dockerfile agregando la siguiente línea:Esto establece la variable de entorno
LD_PRELOAD
para incluir/src/libmyplugins.so
y el valor existente deLD_PRELOAD
(si lo hay).Alternativamente, puedes modificar el script
entrypoint.sh
para establecer la variable de entornoLD_PRELOAD
antes de iniciar SSH. Esto se puede hacer agregando la siguiente línea al script:Luego modifica el CMD en el Dockerfile a:
Esto ejecutará el script
entrypoint.sh
antes de iniciar SSH, asegurándose de queLD_PRELOAD
esté configurado correctamente.