У меня есть две машины.Моя машина с IP1(Europe)
, а другая машина с общедоступной IP2(USA)
.На IP2
у меня запущен контейнер mysql с томом /var/lib/mysql
, который должен быть реплицирован в какую-то папку на хост-компьютере ~/mysqldatabase
.Добавлено правило брандмауэра для порта 3306
.Также у меня есть ssh подключение к машине.Так что я не уверен, с чего начать.Обычно, когда нет докера, я просто добавляю
bind-address = 0.0.0.0
в качестве конфигурации в mysql и открываю порт брандмауэра 3306
(или другой, указывающий на mysql), и все работает.Так что, вероятно, я могу установить пакет mysql-server (хост ubuntu16.04) вне докера на машине IP2 и установить его так, чтобы он указывал на папку ~/mysqldatabase
, но действительно ли это необходимо делать?Есть ли способ подключиться напрямую с IP1
на IP2:mysql_container:mysql_database
Я запускаю контейнер для установки mysql двумя способами.Один из них с файлом докера.А другой - со службой systemctl.
Часть docker-compose.yml:
version: "3"
services:
mysql:
image: mysql:5.7
volumes:
- /home/username/mysqldatabase:/var/lib/mysql
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: somedb
MYSQL_USER: someuser
MYSQL_PASSWORD: someuserpassword
mysql.service
[Unit]
Description=Run %p
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm -f %p
docker run --rm --name mysql -v /home/username/mysqldatabase:/var/lib/mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=rootpass -e MYSQL_DATABASE=somedb -e MYSQL_USER=someuser -e MYSQL_PASSWORD=someuserpassword \
mysql:5.7
ExecStop=/usr/bin/docker stop %p
[Install]
WantedBy=multi-user.target
Чтобы сделать вещи болеепросто скажем, что я использую только второй подход.
I DON "T имеют:
- 1.mysql-client, mysql-server или mysql на машине IP2
- 2.и я нигде не установил привязку к 0.0.0.0, потому что хочу подключиться напрямую к контейнеру mysql. Возможно, мне нужно установить привязку к 0.0.0.0 внутри этого контейнера.
Результат для брандмауэра
sudo netstat -tunlp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 24717/docker-proxy