Vuelva a ejecutar la sesión acoplada salida

0

Descargué la imagen de Docker y la ejecuté de manera interactiva usando -itargumentos. Sin embargo, faltan algunas aplicaciones y las instalo apt-get. El problema es que cada vez que salgo de la sesión se borra todo lo que tengo instalado y tengo que reinstalarlo la próxima vez. Pensé que tal vez instalar aplicaciones en un directorio montado usando la -vopción podría funcionar, pero dado que ya hay otras aplicaciones en ese directorio, pensé que podría no ser la solución ideal. ¿Existe una forma estándar de guardar la sesión actual, es decir, guardar las aplicaciones que he instalado? ¿Qué pasa con los cambios en los archivos .bashrcy .bash_profile, y similares? ¿Existe alguna forma elegante de salvarlos también?

ACTUALIZAR:

Esta es la sesión y su ID de contenedor, que me gustaría volver a ejecutar. ¿Hay alguna manera de ejecutarlo de manera interactiva nuevamente usando la ID del contenedor?

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                       PORTS               NAMES
50e77c283ae9        shogun/shogun-dev         "bash"              24 hours ago        Exited (1) 4 hours ago                           dreamy_fermi
Ameer Jewdaki
fuente

Respuestas:

2

Veo por su problema que tiene dos formas de evitar esto:

  • Genere una imagen acoplable a partir de un contenedor que tenga todos los paquetes y configuraciones que necesita persistentes. De esta manera, no necesita instalar paquetes y hacer configuraciones cada vez que crea un nuevo contenedor
  • Cree una imagen de Docker personalizada desde Dockerfile con todos los paquetes que necesita instalar. Al ejecutar el contenedor, puede asignar archivos personalizados y el almacenamiento de datos persistentes mediante -v volume.

Usemos un ejemplo para aclarar esto.

# docker run -it --name test_con ubuntu:16.04 /bin/bash

Instalaré algunos paquetes, como vim, bash-complete y wget.

root@9c67dc1776cd:/# apt-get update
root@9c67dc1776cd:/# apt-get install vim bash-completion wget

Luego cree una nueva imagen acoplable desde este contenedor, la he llamado test_con. Para esto usaremos la opción de comando commit.

# docker commit -m "updated packages" test_con ubuntu:v1

Si la ejecución del comando es exitosa, debería obtener una salida similar a esta.

sha256:cdf9dc8fe82407b49bae2a2840e7f59706ac84e9f6a0fff55a62afc7dd0db3c3

Confirme si se creó un nuevo contenedor con este comando:

# docker images

Cree un contenedor de prueba a partir de él y verifique si wget está presente.

# docker run --name test --rm -it ubuntu:v1
root@401345aecec5:/# which wget
/usr/bin/wget

Para la segunda opción, puede mirar esta página wiki en los comandos de docker. Esto te ayudará a personalizar tus imágenes en la creación inicial.

Mika Wolf
fuente
1

El punto de Docker es que no cambia. Si desea cambiarlo, actualice la imagen de Docker .

Alex
fuente
He actualizado la pregunta con la información sobre la sesión, en particular el ID de la sesión. ¿Hay alguna manera de ejecutarlo nuevamente?
Ameer Jewdaki
1
@AmeerJewdaki Parece que realmente podrías beneficiarte de seguir el tutorial de Docker . ¡No hay vergüenza en ello!
Alex