Как одновременно получить доступ к mysql-контейнеру в docker и со стороны других контейнеров и со стороны хостовой машины?

Для того чтобы получить доступ к MySQL-контейнеру в Docker и со стороны других контейнеров, а также со стороны хостовой машины, следует применить несколько шагов.

1. Создайте Docker-контейнер для MySQL, например, используя следующую команду:

   docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=password -d mysql:latest

2. Убедитесь, что контейнер MySQL работает, выполнив команду:

   docker ps

3. Создайте другой контейнер, который будет использовать связь с контейнером MySQL:

   docker run --name other-container --link mysql-container:mysql -d your-image:latest

Здесь other-container - это имя контейнера, mysql-container - имя контейнера MySQL, mysql - это имя, по которому контейнер MySQL будет доступен из другого контейнера.

4. Внутри контейнера other-container вы можете использовать имя хоста mysql, чтобы получить доступ к MySQL-серверу. Например, при использовании сценария на Python вы можете использовать следующий код:

   import mysql.connector

   db = mysql.connector.connect(
       host="mysql",
       user="root",
       password="password"
   )

5. Чтобы получить доступ к MySQL из хостовой машины, вам нужно использовать порты, которые MySQL-контейнер экспонирует. Так, при создании контейнера MySQL, чтобы пробросить порт 3306 (стандартный порт MySQL), можно использовать следующую команду:

   docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:latest

Теперь, чтобы получить доступ к MySQL из хостовой машины, вы можете использовать IP-адрес хостовой машины и порт 3306, например, запустив программу, как MySQL Workbench, и указав IP-адрес хостовой машины и порт 3306.

Обратите внимание, что вам также потребуется установить необходимый клиент MySQL на хостовую машину для доступа к базе данных MySQL.

В результате этих шагов вы сможете получить доступ к MySQL-контейнеру из других контейнеров и хостовой машины одновременно.