当前位置:   article > 正文

docker部署实操(二)下之如何解决容器之间采用宿主机内网IP进行通讯_docker部署走内部ip

docker部署走内部ip

如何解决容器之间采用宿主机内网IP进行通讯

 

操作环境: centos7服务器一台,只开放一个80端口;采用docker方式部署。

 

  • MongoDb数据库安装

一个MongoDb数据库:用于接口推送文档数据存储。安装步骤如下:

  1. 拉取镜像:docker pull mongo
  2. 启动容器,挂载主机目录/home/mongoDb到容器中:

docker run --name mongodb --privileged=true  -v /etc/localtime:/etc/localtime -v /docker/mongoDB/data:/data/db -p 27017:27017 -d mongo --auth

  1. 进入mongo控制台

docker exec -it mongodb mongo admin

  1. 创建用户

创建管理员用户

# 进入 admin 的数据库(测试166: admin/123456

 use admin # 创建管理员用户 db.createUser( { user: "******", pwd: "******", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )

创建特定数据库用户

# 创建有可读写权限的用户. 对于一个特定的数据库, 比如'gfMeteor'

# 必须先进入 gfMeteor 的数据库

use gfMeteor

db.createUser({

    user: "******",

    pwd: "******",

    roles: [{role: "readWrite",db: "gfMeteor"}]

})

  1. 远程连接的开启

修改 mongo 配置文件

/etc/mongod.conf.orig

将其bindIP:127.0.0.1 改为0.0.0.0将这一行注释掉
127.0.0.1只允许本地连接,不接受其它远程主机连接mongodb

 

  • 4.3.2、Tomcat安装

一个tomcat服务器:用于部署接口推送数据查询应用。

tomcat安装步骤如下:

1、拉取tomcat镜像:docker pull docker.io/tomcat

2、启动容器:

docker run -d --name meteor-open --privileged=true -v /etc/localtime:/etc/localtime -v /home/mytimezone:/etc/timezone -v /home/applogs:/data/applogs/ -v /home/tomcat/meteor-open/webapps:/usr/local/tomcat/webapps -p 8081:8080 tomcat

其中,mytimezone是自己创建的文件,里面的内容为 Asia/Shanghai, java容器时区修正;

 

一个tomcat服务器:用于部署对MongoDB操作封装的接口应用。

tomcat安装步骤如下:

1、拉取tomcat镜像:docker pull docker.io/tomcat

2、启动容器:

docker run -d --name push-rest --privileged=true -v /etc/localtime:/etc/localtime -v /home/mytimezone:/etc/timezone -v /home/applogs:/data/applogs/ -v /home/tomcat/push-rest/webapps:/usr/local/tomcat/webapps -p 8000:8080 tomcat

其中,mytimezone是自己创建的文件,里面的内容为 Asia/Shanghai, java容器时区修正;

 

注意事项:

开放端口:(容器间采用宿主机内网IP通讯,被访问容器必须设置;否则容器间无法通讯)

Push-rest、meteor-open容器需要访问mongoDB容器相连;网关需要访问 meteor-open

目的:避免docker容器重启内部ip发生变化

查看防火墙状态

firewall-cmd --state

firewall-cmd --zone=public --add-port=8081/tcp --permanent

firewall-cmd --zone=public --add-port=27017/tcp --permanent

firewall-cmd --reload

 

重启容器时,必须先开启防火墙,因上面配置了规则,关闭防火墙会无法启动容器,除非先移除规则:

firewall-cmd --zone=public --remove-port=27017/tcp --permanent

 

否则,异常信息类似:

Error response from daemon: driver failed programming external connectivity on endpoint push-rest (c23d18c1877acf4b9e1b6d44aa3b3d598aa45b8b789866fea452df1a6ad5f5d0):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8000 -j DNAT --to-destination 172.17.0.8:8080 ! -i docker0: iptables: No chain/target/match by that name.

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/211284?site
推荐阅读
相关标签
  

闽ICP备14008679号