设为首页 收藏本站
查看: 1783|回复: 0

[经验分享] docker中两个容器间的互访

[复制链接]

尚未签到

发表于 2015-10-13 11:23:44 | 显示全部楼层 |阅读模式
  在前几篇文章中,我们讨论了如何在Ubuntu14.04(64位)中安装docker,以及如何在docker中部署一个apache服务器并在外部电脑中访问该服务器,和在docker中部署
  一个mysql数据库并在外部电脑中访问这个数据库。
  下面来讨论下docker的容器间的互访,主要以两个容器间的mysql数据库互访为例。
  


  
  有时候,两个启动的容器之间是需要交流的,比如我们在一个容器中运行了一个apache服务器,上面有一个网站,然后网站的数据库我们就可以部署在另外一个容器中。或者两个容器都部署了数据库,然后这两个数据库之间需要交流。
  下面我们以一个容器访问另一个容器的mysql数据库为例。
  容器间的访问主要是通过—link参数来进行的。
  首先按照前面的教程在一个镜像中安装好xampp。
  然后启动这个镜像,并将启动的容器命名为server,作为mysql服务器:

sudo docker run –i –t –P –-name=server ubuntu2 /bin/bash
  (注意P是大写)
  进入到容器server的命令行后,启动mysql

/opt/lampp/lampp start DSC0000.jpg
  在本机电脑中打开另一个命令行终端,运行另外一个容器,作为mysql客户端,并访问容器server中的mysql数据库:

sudo  docker run –i –t –P  --link=server:db –name=client ubuntu2 /bin/bash
  (注意P是大写)
  --link=server:db表示把刚才的server容器重新命名成db,然后你就可以在上面的client容器中访问到server容器了。
  在容器client命令行中,启动mysql:

/opt/lampp/lampp  start接着访问server容器中的mysql数据库

mysql  -h db –u root
  (注意-h后面的值要对应link=server:db中的值)
  到这里就,client就连接上了server容器的mysql数据库了。
  看有哪些数据库:

show databases;
  然后新建一个数据库:

create  database hehe;
  然后回到server容器中的命令行,进入msyql:

mysql –u root
  查看有哪些数据库:

show databases;
  此时应该可以看到hehe。表明client容器中连接上的确实是server中的mysql数据库。


  到这里,对容器间的交流就结束了。


  常见问题:
  
  1. 出现 lost connection to mysql server的错误:
  解决方法:
  首先进入到目录(如果你的mysql是通过xampp安装的)/opt/lampp/etc:
  



cd /opt/lampp/etc

然后用vim 打开my.cnf,找到这一行:  
  

bind-address = 127.0.0.1

将它注释掉,如果没有这行则忽略。



然后找到[mysqld]部分的参数,在配置后面建立一个新行,添加下面这个参数:  
  

skip-name-resolve保存并退出。  
  接着重启xampp:
  

/opt/lampp/lampp restart

到这里应该就解决了。  
  如果你的Mysql不是通过xampp安装的,则my.cnf一般在一般只会存放在/etc/my.cnf或者/etc/mysql/my.cnf下;
  对my.cnf的修改跟上面的一样,然后重启mysql:
  

/etc/init.d/mysql restart

2. Host ip is not allowed to connet to this mysql server之类的错误  
  解决方法:
  进入mysql:
  

mysql -u root

然后对其他用户授权:  
  



GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

到这里应该就解决了。  
  如果还解决,请参考这里:http://joinyo.iyunv.com/blog/1489380



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-126227-1-1.html 上篇帖子: Mac OSX 安装Docker 下篇帖子: 使用Docker Hub官方gcc:latest镜像编译C/C++程序以及缩小镜像的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表