[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
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)