How to dynamically modify container port mapping in Docker

How to dynamically modify container port mapping in Docker

Preface: Docker port mapping is often done by mapping the internal port of the container to the specified port of the host machine through -p during the Docker Run command. Generally speaking, the port corresponding to the container port is determined in advance to be mapped. However, in some cases, you have to temporarily map ports. For example, when running a MySQL container in Docker, the default port is not open. So is there any way to expose the specified port in the running container? Please read below--->

Method 1: Change the Docker configuration file (risky)

To achieve our goal, we need to modify the Docker configuration file. Generally speaking, we need to modify the following files: config.v2.json and hostconfig.json. The default path is /var/lib/docker/containers/<容器名稱> .

First, shut down the Docker service through systemctl stop docker . Then modify the ExposedPorts configuration information in the config.v2.json file to add the container internal port, such as "8080/tcp":{}. Then modify the PortBindings configuration information in hostconfig.json as shown below.

After completing the above configuration, restart the Docker service systemctl restart docker , and restart the specified container to access the corresponding port. (This method is risky and is not recommended for frequent use)

 "Config": {
  "ExposedPorts": {
   // Add internal port 5432 mapping "5432/tcp": {},
   "8080/tcp": {}
  },s
  ...
 },

"PortBindings":{
  // Add internal port and external port 15432
  "5432/tcp":[
   {
    "HostIp":"",
    "HostPort":"15432"
   }
  ],
  "8080/tcp":[
   {
    "HostIp":"",
    "HostPort":"28080"
   }
  ]
 },

Method 2: Iptables port forwarding

The principle of Docker's network port mapping is to achieve port forwarding through Iptables. Based on this principle, we can directly use iptables to forward the port to the target container IP. Port forwarding can be achieved by using the following command. This method relies on Iptables rules. In some scenarios, it may cause Iptables rule conflicts and affect the effective startup of the container.

# Port mapping iptables -t nat -A DOCKER -p tcp --dport <container external port> -j DNAT --to-destination <container ip>:<container internal port>
# Cancel the port mapping rule iptables -t nat -D DOCKER -p tcp -d 0/0 --dport <container external port> -j DNAT --to-destination <container ip>:<container internal port>

This is the end of this article about how to dynamically modify container port mapping in Docker. For more information about how to modify container port mapping in Docker, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Solution for multiple Docker containers not having the same port number
  • How to modify the port mapping of a running Docker container
  • Perfect solution to the problem of not being able to access the port of the docker container under Windows 10
  • Docker connects to a container through a port
  • Docker dynamically exposes ports to containers
  • Solution to the Docker container being unable to access the host port
  • Docker implements container port binding local port

<<:  Optimizing the slow query of MySQL aggregate statistics data

>>:  JavaScript ES6 Module Detailed Explanation

Recommend

Implementation of Nginx hot deployment

Table of contents Semaphore Nginx hot deployment ...

Installation process of zabbix-agent on Kylin V10

1. Download the installation package Download add...

jQuery treeview tree structure application

This article example shares the application code ...

TypeScript uses vscode to monitor the code compilation process

Install Install ts command globally npm install -...

How to match the size of text in web design: small text, big experience

With the rise of mobile terminals such as iPad, p...

Differences and usage examples of for, for...in, for...of and forEach in JS

for loop Basic syntax format: for(initialize vari...

How to use ssh tunnel to connect to mysql server

Preface In some cases, we only know the intranet ...

A brief discussion on how to write beautiful conditional expressions in JS

Table of contents Multiple conditional statements...

Nginx server https configuration method example

Linux: Linux version 3.10.0-123.9.3.el7.x86_64 Ng...

Understanding and example code of Vue default slot

Table of contents What is a slot Understanding of...

Use Docker Compose to quickly deploy ELK (tested and effective)

Table of contents 1. Overview 1.1 Definition 1.2 ...

Summary of CSS gradient effects (linear-gradient and radial-gradient)

Linear-gradient background-image: linear-gradient...

JavaScript canvas to achieve scratch lottery example

This article shares the specific code of JavaScri...