Docker agrega mapeo de puertos a contenedores en ejecución

Descripción del problema

Cuando se ejecuta un contenedor en Docker, solo se asigna un puerto cuando se ejecuta -p. Para expandir nginx más adelante, es necesario abrir otros puertos. Por supuesto, reiniciar un contenedor puede resolver el problema configurando algunas asignaciones de puertos -p más en los parámetros de inicio de la ventana acoplable. Sin embargo, si no desea reiniciar un contenedor, pruebe los dos métodos siguientes.

Solución

método uno:

1. Obtenga la IP del contenedor

docker inspect -f '{
   
   {range .NetworkSettings.Networks}}{
   
   {.IPAddress}}{
   
   {end}}' 容器id

2. Utilice el reenvío de iptable para asignar el puerto 80 del contenedor al puerto 8081 del host de la ventana acoplable.

iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:80

Método dos:

1.El comando Docker ps encuentra la identificación del contenedor

2.Configure el contenedor para que se inicie automáticamente

docker update 容器id --restart=always

3. Utilice el comando docker inspect 6fe599270a48 | grep HostsPath para encontrar la dirección del archivo de configuración del puerto del contenedor nginx.

[root@VM-0-6-centos 123]# docker inspect 6fe599270a48 | grep HostsPath
        "HostsPath": "/var/lib/docker/containers/6fe599270a482e0bf6b3c9a38a8d6212f6f5339e65b7bf32834ab9a5c6e81f9f/hosts",

4. Ingrese la ruta del archivo de configuración.

5. Cierre el contenedor acoplable.

systemctl stop docker

Nota:
Si se produce   un error comoAdvertencia: Deteniendo docker.service, pero aún puede activarse mediante:

6. Modifique el archivo de configuración hostconfig.json

vim hostconfig.json

Agregue el mapeo de puertos que necesitamos:

"PortBindings": {
    "80/tcp": [
        {
            "HostIp": "",
            "HostPort": "8081"
        }
    ],
    "8000/tcp": [
        {
            "HostIp": "",
            "HostPort": "8000"
        }
    ],
    "9000/tcp": [
        {
            "HostIp": "",
            "HostPort": "9000"
        }
    ]
}

7. Modifique el archivo de configuración config.v2.json

Abra config.v2.json en la misma ruta y modifique: ExposedPorts和Puertos

"ExposedPorts": {
    "80/tcp": {},
    "8000/tcp": {},
    "9000/tcp": {}
}
"Ports": {
		"80/tcp": [{
			"HostIp": "0.0.0.0",
			"HostPort": "80"
		}],
		"8000/tcp": [{
			"HostIp": "0.0.0.0",
			"HostPort": "8000"
		}],
		"9000/tcp": [{
			"HostIp": "0.0.0.0",
			"HostPort": "9000"
		}]
}

8. Reinicie el contenedor acoplable.

systemctl start docker

Supongo que te gusta

Origin blog.csdn.net/qq_42014561/article/details/128593933
Recomendado
Clasificación