加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

行使Nginx实现处事器中多容器共存

发布时间:2018-10-10 23:10:02 所属栏目:业界 来源:码农的人生
导读:【新产物上线啦】51CTO播客,随时随地,碎片化进修 配景 有一台腾讯的Linux云主机,在处事器上陈设了一个docker(称为ServiceDocker,名称为sign,下同),ServiceDocker内部行使了80、443、3306端口,别离映射到宿主机(云主机)的沟通端口(即80、443、3306)。
副问题[/!--empirenews.page--] 【新产物上线啦】51CTO播客,随时随地,碎片化进修

配景

有一台腾讯的Linux云主机,在处事器上陈设了一个docker(称为ServiceDocker,名称为sign,下同),ServiceDocker内部行使了80、443、3306端口,别离映射到宿主机(云主机)的沟通端口(即80、443、3306)。

ServiceDocker中安装了XAMPP,在此基本上陈设了扫码签到小措施的处事器。ServiceDocker的80和443端口别离提供http和https处事,3306为MySQL数据库的端口。

ServiceDocker绑定了域名sign.famend.cn。

方针

云主机中的一个ServiceDocker占用了80、443端口,假如想在主机中再陈设一台处事器对外处事,就不能行使80和443端口了。

我们的方针是在主机中可以陈设多个ServiceDocker,每个ServiceDocker绑定各自的域名,对外提供处事,担保80和443端口可用。

行使Nginx实现处事器中多容器共存

思绪

修改ServiceDocker的端口映射,把ServiceDocker端口80、443别离映射到主机的89、449端口,这样主机的80、443端口开释出来了。

开释出来的80和443端供词Nginx行使。安装带Nginx的docker(称为NginxDocker,名称为mynginx,下同)。NginxDocker内部行使端口80、443,别离映射到主机的80和443端口。

NginxDocker用来做反向署理。当有会见哀求时,读取Nginx设置后,差异的URL定向到各自对应的Docker。譬喻:会见http://sign.famend.cn:80,则自动映射到http://sign.famend.cn:89。

实现步调

1. 修改ServiceDocker的端口映射,开释80和443端口。

Docker没有提供呼吁修改端口,从网上我找到了2种要领。

要领1:先遏制容器,再将容器打包成镜像,接着运行新的镜像。在运行新的镜像时指定新的端口。行使的呼吁如下:

  1. #先遏制容器 
  2. docker stop containerA 
  3. #将容器commit成为一个镜像 
  4. docker commit containerA newImageB 
  5. #运行容器 
  6. docker run -p 8080:8080 -p 8081:8081 -v /home/data/:/home/data/ -dt newImageB 

要领2:先遏制容器,接着遏制容器处事,然后修改容器设置文件,最后启动容器处事、启动容器。步调如下:

① 遏制ServiceDocker(ServiceDocker的名称为sign),遏制docker处事。

  1. sudo docker stop sign 
  2. sudo service docker stop 

② 行使 docker ps -a 呼吁找到要修改容器的 CONTAINER ID。

③ 运行 docker inspect 【CONTAINER ID】 | grep Id 呼吁。

④ 执行 cd /var/lib/docker/containers 呼吁令进入找到与 Id 沟通的目次。

在执行cd 呼吁时假如提醒permission denied,可以先执行 sudo -s。

进入id对应的目次后,打开文件hostconfig.json。

找到80端口的映射,如下:

  1. "80/tcp": [ 
  2. "HostIp": "0.0.0.0", 
  3. "HostPort": "80" 
  4. }] 
  5.   
  6. 把 "HostPort": "80" 修改成 "HostPort": "89" , 如下 
  7. "80/tcp": [ 
  8. "HostIp": "0.0.0.0", 
  9. "HostPort": "89" 
  10. }] 

修改之前,ServiceDocker内部的80端口映射为主机的80端口;修改之后,ServiceDocker内部的80端口映射为主机的89端口。

稍加声名,有文章(参考资料中的2、3)提到还必要修改config.v2.json,亲测不必要。这个文件在启动ServiceDocker时会自动修改。

⑤ 启动docker处事,然后启动ServiceDocker(名称为sign)。

  1. sudo service docker start 
  2. sudo docker start sign 

要领(1)和要领(2)都可以,我选用了要领(2)。

在执行完要领(2)之后,打开赏识器验证,提醒“网站无法会见”。

起源预计docker中的处事器没有启动,运行呼吁:

  1. sudo /opt/lampp/lampp stop 
  2. sudo /opt/lampp/lampp start 

运行stop的时辰,发明apache 没有启动,也许是修改了80端口的缘故。

在执行start之后,打开赏识器验证http://sign.famend.cn:89和https://sign.famend.cn:449,乐成会见。

修改Docker端口的要领并不伟大,假如docker往后的版本可以或许提供响应呼吁,信托会利便许多。

趁便,运行 crontab -l 查察ServiceDocker中的按时使命是否启动,假如没启动,运行 service cron start 启动按时使命。

下一步,设置NginxDocker反向署理,让http://sign.famend.cn:80和https://sign.famend.cn:443也能乐成会见。

2. 设置NginxDocker反向署理。

① 下载nginx,并运行它。

  1. docker container run  
  2.   -d  
  3.   -p 80:80  
  4.   -p 443:443  
  5.   --rm  
  6.   --name mynginx  
  7.   nginx 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读