使用docker,我使用:
创建网络和mysql图像 sudo docker network create --driver bridge mynet_nw
sudo docker run --network=mynet_nw --name=mydb -v /opt/mysql_data:/var/lib/mysql --env="MYSQL_ROOT_PASSWORD=mypassword" mysql:5.7
我想跑:
mysql -uroot -pmypassword -h ????? -P 3306
能够在mydb数据库中运行命令。代替 ?????我试过mydb,但它给了我错误。我错过了什么吗?
答案 0 :(得分:3)
不幸的是,它并没有这样做。网络选项(如--link选项)用于允许容器之间的通信。
如果要从主机进行连接,可以使用以下示例进行连接:
MYSQL_IPADD=$( docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mydb )
mysql -uroot -pmypassword -h $MYSQL_IPADD -P 3306
否则,您可以将端口3306映射到主机:
docker run --network=mynet_nw -p 3306:3306 --name=mydb -v /opt/mysql_data:/var/lib/mysql --env="MYSQL_ROOT_PASSWORD=mypassword" mysql:5.7
mysql -uroot -pmypassword -h localhost -P 3306
另一种选择是使用容器mysql命令与服务器通信:
docker run -it --network mynet_nw mysql mysql -uroot -pmypassword -h mydb -P 3306