docker容器内怎么连接外部的mysql

docker容器内怎么连接外部的mysql,第1张

1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下

[plain] view plain copy print?

FROM centos:centos6

MAINTAINER Fanbin Kong "kongxx@hotmail.com"

RUN yum install -y mysql-server mysql

RUN /etc/init.d/mysqld start &&\

mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein'"&&\

mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein'"&&\

mysql -u root -pletmein -e "show databases"

EXPOSE 3306

CMD ["/usr/bin/mysqld_safe"]

-

docker运行的java无法请求到别的服务器怎么办

这个其实应该非常少碰到,我碰到了算是巧合,因为默认的系统参数其实是不会出现这种情况的。

两种可能的原因会造成Docker容器内无法访问外部网络:

容器使用了桥接网络但防火墙屏蔽了通信

/etc/sysctl.conf系统配置参数问题

我碰到的情况属于第二种,配置参数问题,修正方法:

编辑/etc/sysctl.conf

将其中的net.ipv4.ip_forward=0改成net.ipv4.ip_forward=1。

重载配置,之后Docker的容器即可正常通信,如果不行,restart下容器。

sysctl -p

Docker-Conpose为应用创建一个网络,Docker-Compose为每个Service创建一个容器,并加入到这个网络中,被网络中的其它容器访问和发现。此容器能够以容器名称作为hostname标识,被其它容器访问。

在不使用Docker Compose的时候,将两个容器链接起来使用 --link 参数,相对来说比较简单,以 nginx 镜像为例子:

这样 test2 与 test1 便建立了链接,就可以在 test2 中使用访问 test1 中的服务了,在docker-compose更简单。

示例docker-compose创建资源

docker-compose.yml

在myapp目录使用命令docker-compose up,将执行以下几步:

更新容器

使用docker-compose up将停止并移除旧容器,重建新容器。

任何连接到旧容器的(其它容器的)连接将关闭,然后检测条件,根据容器名称查找并重建连接。

Links

默认情况下,Docker-Compose下的Servcie之间是可通过服务名称(容器名称,也即hostname)相互访问的。

links只不过为Service提供了以别名访问其它Service的一种方式。

容器连接external_links

我们以 Docker-compose一键部署zk集群+dubbo-admin 为例,将其拆开部署,如下:

zk.yml

启动zk容器 docker-compose -f zk.yml up -d

tomcat.yml

启动tomcat容器 docker-compose -f tomcat.yml up -d

注意,tomcat容器依赖于zk容器,所以要先启动zk容器。

接着我们使用ping来测试下连通性:

从上面得知,两个容器都能ping通。

学习交流群: 64691032


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/757169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-17
下一篇2023-08-17

发表评论

登录后才能评论

评论列表(0条)

    保存