J'ai déjà googlé sur ce sujet et trouvé quelques discussions. Sur la base de ces fils, j'ai suivi les étapes suivantes. Mais je fais face à un problème.
Fondamentalement, je veux créer une image docker pour mysql, puis me connecter à partir de ma machine hôte (Mac OS X).
Basé sur this post, je dois partager le socket mysql unix avec l'hôte. vers cela, j'ai fait les étapes suivantes
1. Start docker quick terminal
2. docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
3. docker exec -it mysql bash
4. mysql -uroot -p
5. create database MyDB;
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
7. exit;
8. mkdir /Users/abhi/Host
9. docker run -it -v /Host:/shared mysql/mysql-server:latest
Maintenant, je reçois l'erreur
MacBook-Pro:~$ docker run -it -v /Users/abhi/Host:/shared mysql/mysql-server
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
Mais vous voyez que j'ai fourni le mot de passe et initialisé ma base de données.
Tout ce que je veux, c'est que depuis ma machine hôte, je puisse me connecter à la base de données mysql fonctionnant à l'intérieur de docker.
EDIT :: ----- solution qui a fonctionné ------
Merci RICO. Enfin, les étapes qui ont fonctionné pour moi sont
1. Start docker quick terminal
2. docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
3. docker exec -it mysql bash
4. mysql -uroot -p
5. create database MyDB;
or:
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
7. exit;
8. docker-machine env default
Utilisez l'adresse IP obtenue à l'étape 8. le port est 3306, l'utilisateur est root, le mot de passe est le mot de passe, la base de données est MyDB.
La connexion est réussie!
Donc, fondamentalement, vous devez exposer le port mysql à votre hôte:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
Ensuite, vous pouvez accéder à partir de votre hôte en utilisant la ligne de commande mysql:
mysql -h127.0.0.1 -ppassword -uroot
Je ne sais pas pourquoi vous essayez d'exécuter un autre conteneur pour vous connecter (vous vouliez peut-être lier deux conteneurs)
Si vous utilisez Mac (ou Windows) avec docker-machine, vous souhaitez vous connecter à l'adresse IP de votre VM docker-machine. Par exemple:
$ docker-machine ssh default
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.9.0, build master : 16e4a2a - Tue Nov 3 19:49:22 UTC 2015
Docker version 1.9.0, build 76d6bc9
docker@default:~$ ifconfig eth1
eth1 Link encap:Ethernet HWaddr 08:00:27:E6:C7:20
inet addr:192.168.99.100 Bcast:192.168.99.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fee6:c720/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18827 errors:0 dropped:0 overruns:0 frame:0
TX packets:10280 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1791527 (1.7 MiB) TX bytes:2242596 (2.1 MiB)
Connectez-vous ensuite à:
mysql -h192.168.99.100 -ppassword -uroot