tag library hub dockers container compose docker boot2docker docker-machine

library - dockers container download



ReenvĂ­o de puertos en docker-machine? (6)

Aún puede acceder al comando VBoxmanage.exe desde la VirtualBox utilizada por la máquina acoplable:

VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port27017,tcp,,27017,,27017";

  • Use la docker-machine info para obtener el nombre de su vm.
  • use modifyvm si la vm no se ha iniciado aún.

Vea un ejemplo práctico en esta respuesta .

Esa es la solución actual, a la espera de la posibilidad de pasar el argumento a docker-machine ssh : ver el número 691 .

La otra solución es no reenviar el puerto y usar directamente la IP de la máquina virtual:

$(docker-machine ip default)

Como lo commented sdc :

Puede confirmar que el reenvío de puertos está configurado correctamente con

VBoxManage showvminfo boot2docker-vm | grep "NIC.* Rule"

Como boot2docker está en desuso, boot2docker a docker-machine pero no sé cómo abrir un puerto desde docker-machine . En boot2docker podría hacer esto:

boot2docker ssh -L 27017:localhost:27017

Esto reenviará el puerto 27017 de VirtualBox a localhost 27017, siempre que la conexión SSH esté abierta. Tenga en cuenta que no estoy buscando una forma de abrir el puerto permanentemente en VirtualBox. ¿Cómo puedo lograr esto con docker-machine ?


Como tengo dificultades para recordar cómo hacerlo, he creado un pequeño script llamado bash (que significa "reenvío de puertos") que te permite:

$ pf 8080

Esto reenviará el puerto de la ventana acoplable 8080 al puerto de host 8080 en segundo plano (anexa -f para que se ejecute en primer plano). Para usar un puerto host diferente simplemente hazlo:

$ pf 8090:8080

que mapea el puerto de host 8090 a 8080.

Para detener el reenvío de puertos agrega -s :

$ pf 8090:8080 -s

(en realidad, el puerto de host también es suficiente: pf 8090 -s ). También hay otras opciones disponibles, así que pf página de pf .


Con las versiones recientes de la máquina, simplemente puede hacer (donde por defecto es el nombre de la máquina):

docker-machine ssh default -L 27017:localhost:27017

Esta es una solución más temporal que el cambio de configuración de VM.

Utilice la siguiente variación para solo reenviar puertos en un proceso en segundo plano:

docker-machine ssh default -f -N -L 27017:localhost:27017

  • -f Solicita a ssh que vaya al fondo justo antes de la ejecución del comando.
  • -N Permitir comando vacío (útil aquí para reenviar puertos solamente)

Puede ingresar a la máquina y pasar los argumentos normales de reenvío de puerto:

ssh docker@$(docker-machine ip default) -L 27017:localhost:27017

La contraseña del usuario de docker es tcuser . (ver https://github.com/boot2docker/boot2docker )


Si no quiere la necesidad de usar contraseñas, agregaría que solo debe apuntar a la clave privada.

ssh -L 8080:localhost:8080 -i ~/.docker/machine/machines/default/id_rsa docker@$(docker-machine ip default)


Solo para mejorar en el guión la respuesta de @VonC: actualmente, si usa Docker Toolbox en MacOS X, la máquina VM predeterminada es "predeterminada". Por lo tanto, una secuencia de comandos para asignar todo lo expuesto del contenedor debe verse así:

for port in `docker port cassandra | cut -d''-'' -f1`; do port_num=`echo ${port} | cut -d''/'' -f1` port_type=`echo ${port} | cut -d''/'' -f2` echo "Create rule natpf1 for ${port_type} port ${port_num}" VBoxManage controlvm "default" natpf1 "${port_type}-port${port_num},${port_type},,${port_num},,${port_num}" done

Si intenta ejecutar varias veces, se debe agregar una declaración antes de la creación para eliminar la regla existente:

VBoxManage controlvm "default" natpf1 delete "${port_type}-port${port_num}"

En el script, se supone que ya tiene puertos de reenvío desde el contenedor a la VM.

docker port cassandra

da salida como:

7000/tcp -> 0.0.0.0:7000