Para el que quiera entretenerse...

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jmtella
    Administrator
    • Nov
    • 19902

    Para el que quiera entretenerse...

    Escenario: 19041.xx, containers instalado, docker https://docs.docker.com/docker-for-w...release-notes/ instalado reiniciar, y cuando arranque docker con el boton derecho en el icono del systray, switchear a windows containers.

    Vamos a crear un contendor linux que se ejecute bajo windows (y no en contendores linux).

    Lo primero determinar la red que le vamos a asignar: para ello, en powershell:

    docker network ls

    y nos fijamos cual es el network ID de la red WSL (aunque seriviria para todas pero hay que hacer más cosas). En mi caso: 1722b310327f

    Ahora descargamos la imagen de un linux, por ejemplo de una kali y que cree un contenedor.

    docker run -t -i --network 1722b310327f kalilinux/kali-rolling /bin/bash

    Esto bajará la imagen la primera vez... y creará el primer conenedor y nos conectará a el. Ademas lo asignará a ese ID de red..

    Por tanto apareceremos conectados como root. Para empezar a jugar, os aconsejo:

    passwd

    para ponerle password al root.

    apt-get update

    y ahora instalar al menos los paquetes minimos para saber la red (IP, pruebas, etc):

    apt-get install iproute2
    apt-get install iptools-ping

    SI os salis del conetenedor (con exit), para volver a conectaros a el, lo primero:

    docker ps -a

    y nos dará el ID de los contenedores arrancados. Para conectaros a él, o al que querais:

    docker start -i nnnnnnn (siendo nnnnn) el ID que habeis visto.

    Y ahora a jugar... crearle un escritorio, un xrdp, etc... y teneis precisamente un cotnenedor linux (en este caso el sistema operativo KALI totalmente nativo) ejecutandose como conetendor windows...
  • jquilezl
    Super Moderator
    • Dec
    • 714

    #2
    Uf, esto del docker es de infarto. Sigo todos los pasos, o casi. Como docker no me muestra la red wsl (que en hyper-v sí la veo y la conexión por escritorio remoto a los linux instalados el otro día en wsl va perfectamente), lo instalo en la que se llama "bridge". Hasta aquí, perfecto. Actualizo, le instalo el escritorio, configuro xrdp tal como indicaste. Veo desde dentro de la consola de Kali la ip de eth0, me aseguro de que xrdp está lanzado e intento entrar con escritorio remoto: Nones, no lo encuentra. Como había estado trasteando con el ubuntu por wsl, me aseguro de que tiene el xrdp parado, y aun así, reinicio el equipo para asegurarme. Y aquí empieza el problema: docker casca al iniciar, y me tiene ya hasta el gorro de reinstalar docker. Cuando quiere arranca y cuando quiere casca. Mañana seguiré.

    Eso sí, entretenido sí que es.
    Editado por última vez por jquilezl; 25/02/2020, 20:44:22.

    Comentario

    • jmtella
      Administrator
      • Nov
      • 19902

      #3
      Originalmente publicado por jquilezl Ver Mensaje
      Uf, esto del docker es de infarto. Sigo todos los pasos, o casi. Como docker no me muestra la red wsl (que en hyper-v sí la veo y la conexión por escritorio remoto a los linux instalados el otro día en wsl va perfectamente), lo instalo en la que se llama "bridge". Hasta aquí, perfecto. Actualizo, le instalo el escritorio, configuro xrdp tal como indicaste. Veo desde dentro de la consola de Kali la ip de eth0, me aseguro de que xrdp está lanzado e intento entrar con escritorio remoto: Nones, no lo encuentra. Como había estado trasteando con el ubuntu por wsl, me aseguro de que tiene el xrdp parado, y aun así, reinicio el equipo para asegurarme. Y aquí empieza el problema: docker casca al iniciar, y me tiene ya hasta el gorro de reinstalar docker. Cuando quiere arranca y cuando quiere casca. Mañana seguiré.

      Eso sí, entretenido sí que es.
      https://jmtella.com/foro/forum/ejerc...fffff-y-docker

      Comentario

      • jmtella
        Administrator
        • Nov
        • 19902

        #4
        Parece que lo conseguiste...pero ahora otro reto... imaginate que docker cambiase los identificadores de los networks... no es normal pero a veces lo hace. ¿como arrancarias el contendor sin tener que reinstalarlo desde la imagen?

        Comentario

        • jquilezl
          Super Moderator
          • Dec
          • 714

          #5
          Sí, ha ido bien. Lo otro, a pensarlo toca.

          Comentario

          • jmtella
            Administrator
            • Nov
            • 19902

            #6
            Originalmente publicado por jquilezl Ver Mensaje
            Sí, ha ido bien. Lo otro, a pensarlo toca.
            Pista...

            docker inspect <objeto docker>

            Comentario

            • jquilezl
              Super Moderator
              • Dec
              • 714

              #7
              No des pistas, que lo acababa de encontrar

              docker container inspect nnnn
              En "NetworkMode" nos da la red a la que se asoció el contenedor, "xxxxx"

              Ahora

              docker network disconnect bridge xxxxx
              docker network create --driver bridge yyyyy
              docker network connect yyyyy

              Siendo yyyyy el nuevo id de la red
              Más fácil, editar el archivo config.v2.json de la carpeta en la que se encuentra instalado el contenedor y actualizar en Network Id, tanto el número corto como el largo que está al final.

              Lo he sacado de github, no me atrevo a probarlo, que con lo inestable que es docker, lo mismo vuelve a cascar.
              Editado por última vez por jquilezl; 26/02/2020, 22:11:51.

              Comentario

              • jmtella
                Administrator
                • Nov
                • 19902

                #8
                Originalmente publicado por jquilezl Ver Mensaje
                No des pistas, que lo acababa de encontrar

                docker container inspect nnnn
                En "NetworkMode" nos da la red a la que se asoció el contenedor, "xxxxx"

                Ahora

                docker network disconnect bridge xxxxx
                docker network create --driver bridge yyyyy
                docker network connect yyyyy

                Siendo yyyyy el nuevo id de la red
                Más fácil, editar el archivo config.v2.json de la carpeta en la que se encuentra instalado el contenedor y actualizar en Network Id, tanto el número corto como el largo que está al final.

                Lo he sacado de github, no me atrevo a probarlo, que con lo inestable que es docker, lo mismo vuelve a cascar.
                Ni se te ocurra (de momento) crear en docker una red... (y olvidate de GitHub ya que el 99% de las respuestas son para contenedores Linux)

                Solo el disconnect y el connect... (una vez hecho el inspect)

                Comentario

                • jmtella
                  Administrator
                  • Nov
                  • 19902

                  #9
                  Originalmente publicado por jmtella Ver Mensaje

                  Ni se te ocurra (de momento) crear en docker una red... (y olvidate de GitHub ya que el 99% de las respuestas son para contenedores Linux)

                  Solo el disconnect y el connect... (una vez hecho el inspect)
                  Y de paso, ahora, sorprendete.

                  Mira las CPU's que le da windows a una maquina WSL, y mira las CPU's que le da un containder de docker. Para verlo cualquier de estos comandos:

                  nproc --all

                  lscpu | grep 'CPU(s)'

                  grep processor /proc/cpuinfo | wc -l

                  cat /proc/cpuinfo | grep "model name"

                  Comentario

                  • jmtella
                    Administrator
                    • Nov
                    • 19902

                    #10
                    Originalmente publicado por jmtella Ver Mensaje

                    Y de paso, ahora, sorprendete.

                    Mira las CPU's que le da windows a una maquina WSL, y mira las CPU's que le da un containder de docker. Para verlo cualquier de estos comandos:

                    nproc --all

                    lscpu | grep 'CPU(s)'

                    grep processor /proc/cpuinfo | wc -l

                    cat /proc/cpuinfo | grep "model name"
                    Por cierto, sorprendete tambien con la memoria que usa un linux WSL y la que usa un container windows como el que has instalado...

                    Puedes verla con el comando TOP. En linux wsl viene instalado y en el container windows debes instalarlo con el paquete:

                    apt-get install procps

                    ..otra mala sorpresa...

                    Comentario

                    • jquilezl
                      Super Moderator
                      • Dec
                      • 714

                      #11
                      A la izquierda WSL, y a la derecha container. La WSL usa por defecto todos los procesadores, mientras que el contenedor por defecto sólo dos.

                      Comentario

                      • jquilezl
                        Super Moderator
                        • Dec
                        • 714

                        #12
                        Y con la memoria pasa lo mismo, la máquina WSL emplea directamente los recursos del host, mientras que el contenedor está aislado del host. Si la WSL casca puede afectar al host, mientras que el container puede petar si quiere, que al host no le debería afectar.

                        Comentario

                        • jmtella
                          Administrator
                          • Nov
                          • 19902

                          #13
                          Originalmente publicado por jquilezl Ver Mensaje
                          A la izquierda WSL, y a la derecha container. La WSL usa por defecto todos los procesadores, mientras que el contenedor por defecto sólo dos.
                          Y con la memoria: WSL toda la memoria-.. el conenedor 1 GB...

                          Se pueden configurar ambos al crearr un conenedor con docker run, pero no he visto la manera de cambiarlo cuando el contenedor está ya creado...

                          Comentario

                          • jquilezl
                            Super Moderator
                            • Dec
                            • 714

                            #14
                            Pero por lo que veo, no es que la WSL emplee toda la memoria, sino que se ejecuta en el mismo espacio de direcciones del host, con lo que eso conlleva, mientras que el contenedor una un espacio de direcciones (y recursos) independiente. Mira la imagen que he puesto en la segunda respuesta, la WSL no está empleando toda la memoria, se ve en el administrador de tareas de Windows, sino que tiene acceso a toda ella.

                            Comentario

                            • jquilezl
                              Super Moderator
                              • Dec
                              • 714

                              #15
                              Lo curioso es que a la máquina WSL aunque le cambie la afinidad para que sólo se ejecute en dos procesadores, el cpuinfo dentro de la máquina sigue viendo los 20.

                              Comentario

                              Trabajando...
                              X