[Solved] docker: Error response from daemon: driver failed programming external connectivity on endpoint mysq

Docker starts mysql5.7 and reports Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

  • 1. The error is as follows: Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.
  • 2. Use the `netstat -tanlp` command to query
  • 3. `kill 1454` query again, you can see that port 3306 has been released
  • 4. Restart `systemctl restart docker`

1. The error is as follows: Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

docker.io/library/mysql:5.7
[root@CentOS7 ~]# docker run -p 3306:3306 --name mysql \
> -v /mydata/mysql/log:/var/log/mysql \
> -v /mydata/mysql/data:/var/lib/mysql \
> -v /mydata/mysql/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
6da1e73bdbb0234153c1dc23e25479897cd075d254d39dfb2d9d934571bf00c7
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (44413c44d35c9c05438197a65d380c06d9365031b931b1f59b7266d05980cabd): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

2. Use the netstat -tanlp command to query

It is known that:
The reason is that port 3306 is occupied by the process ID of PID=1454.

3, kill 1454 query again, you can see that port 3306 has been released

4. Restart systemctl restart docker

docker run again and it is successful

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7