docker中容器nginx部署网站

时间:2021-05-27 21:48:39

 

1.创建映射端口的交互式容器

[plain]  view plain  copy  print ?
  1. docker run -p 80 --name web -i -t daocloud.io/ubuntu /bin/bash  

2.安装Nginx

[plain]  view plain  copy  print ?
  1. apt-get install -y nginx  

3.安装文本编辑器vim

[csharp]  view plain  copy  print ?
  1. apt-get install -y vim  

4.创建静态页面

[plain]  view plain  copy  print ?
  1. mkdir -p /var/www/html  
  2. cd /var/www/html  
  3. vim index.html  

使用i切换到插入模式

index.html中写入以下内容:

[html]  view plain  copy  print ?
  1. <html>  
  2. <head>  
  3. <title>Nginx in Docker</title>  
  4. </head>  
  5. <body>Hello Docker</body>  
  6. </html>  


保存退出

5.修改Nginx配置文件

[plain]  view plain  copy  print ?
  1. vim /etc/nginx/sites-enabled/default  

这样打开Nginx的配置文件之后会看见:

[plain]  view plain  copy  print ?
  1. server {  
  2.         listen 80 default_server;  
  3.         listen [::]:80 default_server ipv6only=on;  
  4.    
  5.    
  6.    
  7.    
  8.         root /var/www/html;  
  9.         index index.html index.htm;  
  10.    
  11.         # Make site accessible from http://localhost/  
  12.         server_name localhost;  
  13.    
  14.         location / {  
  15.                 # First attempt to serve request as file, then  
  16.                 # as directory, then fall back to displaying a 404.  
  17.                 try_files $uri $uri/ =404;  
  18.                 # Uncomment to enable naxsi on this location  
  19.                 # include 
  20. /etc/nginx/naxsi.rules  
  21.         }  

这个时候修改root的内容,修改成咱们html文件所在的位置.保存退出.

切换到根目录:

cd /

6.运行Nginx

[plain]  view plain  copy  print ?
  1. nginx  

可以使用ps -ef查看一下nginx是否运行了起来.

使用Ctrl+p+q可以将容器放在后台运行.

使用Docker ps可以查看容器的运行效果.

也可以使用docker port web查看容器的端口映射:

80/tcp -> 0.0.0.0:32768

7.验证网站访问

[plain]  view plain  copy  print ?
  1. curl http://127.0.0.1:32768  

 

也可以在浏览器中访问这个页面:

[csharp]  view plain  copy  print ?
  1. http://127.0.0.1:32768  


 

使用docker inspect web查看容器的ip地址:

[plain]  view plain  copy  print ?
  1. "NetworkSettings": {  
  2.     "Bridge": "docker0",  
  3.     "Gateway": "172.17.42.1",  
  4.     "GlobalIPv6Address": "",  
  5.     "GlobalIPv6PrefixLen": 0,  
  6.     "IPAddress": "172.17.0.1",  
  7.     "IPPrefixLen": 16,  
  8.     "IPv6Gateway": "",  
  9.     "LinkLocalIPv6Address": "fe80::42:acff:fe11:1",  
  10.     "LinkLocalIPv6PrefixLen": 64,  
  11.     "MacAddress": "02:42:ac:11:00:01",  
  12.     "PortMapping": null,  
  13.     "Ports": {  
  14.         "80/tcp": [  
  15.             {  
  16.                 "HostIp": "0.0.0.0",  
  17.                 "HostPort": "32768"  
  18.             }  
  19.         ]  
  20.     }  
  21. },  


可以看到"IPAddress": "172.17.0.1",这是容器的IP地址.

使用

[plain]  view plain  copy  print ?
  1. curl http://127.17.0.1  

就可以直接查看了.

也可以在浏览器中使用这个容器的IP地址.

 

 

最后需要说明一点,如果使用命令将容器停止:

[plain]  view plain  copy  print ?
  1. docker stop web  

然后开启容器:

[plain]  view plain  copy  print ?
  1. docker start -i web  


这个时候使用:

[plain]  view plain  copy  print ?
  1. ps -ef  


发现nginx是没有启动的.

使用Curl+p+q将容器放入后台.

 

使用:

[plain]  view plain  copy  print ?
  1. docker exec web nginx  


启动nginx服务.

 

使用:

[plain]  view plain  copy   print ?
  1. curl http://172.17.0.1  


发现不行了.

 

这个时候我们使用:

[plain] view plain copy  print?
  1. docker inspect web  


看到以下输出结果:

[csharp]  view plain  copy   print ?
  1. "NetworkSettings": {  
  2.     "Bridge""docker0",  
  3.     "Gateway""172.17.42.1",  
  4.     "GlobalIPv6Address""",  
  5.     "GlobalIPv6PrefixLen": 0,  
  6.     "IPAddress""172.17.0.2",  
  7.     "IPPrefixLen": 16,  
  8.     "IPv6Gateway""",  
  9.     "LinkLocalIPv6Address""fe80::42:acff:fe11:2",  
  10.     "LinkLocalIPv6PrefixLen": 64,  
  11.     "MacAddress""02:42:ac:11:00:02",  
  12.     "PortMapping"null,  
  13.     "Ports": {  
  14.         "80/tcp": [  
  15.             {  
  16.                 "HostIp""0.0.0.0",  
  17.                 "HostPort""32769"  
  18.             }  
  19.         ]  
  20.     }  
  21. },  


发现容器的IP地和端口号都发生了变化,这个时候我们能知道,容器在重启之后的IP地址和端口号都会发生变化.