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