小知识:在Docker容器中部署静态网页的方法教程

前言

一般我们在访问容器时需要通过容器的端口来访问,那如何设置容器的端口映射呢?

我们通过以下命令来设置:

?
1
docker run -p ip:hostport:containerport [–name] [-i] [-t] 镜像名 [command][arg…]
ip:表示宿主机ip hostport:宿主机端口号 containerport:容器端口号

设置的方式有以下几种:

containerport,指定容器端口号,宿主机端口随机生成

?
1
[root@localhost ~]# docker run -p 80 –name web_test -i -t 80864d42dd23  hub.c.163.com/library/ubuntu /bin/bash

hostport:containerport映射主机端口和容器端口

?
1
[root@localhost ~]# docker run -p 8080:80 –name web_test -i -t 80864d42dd23  hub.c.163.com/library/ubuntu /bin/bash

ip::containerport设置主机的随机端口到容器端口

?
1
[root@localhost ~]# docker run -p 0.0.0.0::80 –name web_test -i -t 80864d42dd23  hub.c.163.com/library/ubuntu /bin/bash

ip:hostport:containerport映射指定地址的指定端口到容器的指定端口

?
1
[root@localhost ~]# docker run -p 0.0.0.0:8080:80 –name web_test -i -t 80864d42dd23  hub.c.163.com/library/ubuntu /bin/bash

下面通过nginx在容器部署静态网页,通过以下步骤

      – 创建80映射端口的交互式容器

      – 安装nginx

      – 安装文本编辑器vim

      – 创建静态网页

      – 运行nginx

      – 验证网页

示例如下(如果安装完ubuntu后不能安装nginx进行apt-get update):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# docker run -p 80 –name static_test -i -t hub.c.163.com/library/ubuntu /bin/bash
root@25fcbf6e953d:/# apt-get install -y nginx
reading package lists… done
building dependency tree 
reading state information… done
e: unable to locate package nginx
root@25fcbf6e953d:/# apt-get update  
get:1 http://archive.ubuntu.com/ubuntu xenial inrelease [247 kb]
get:2 http://archive.ubuntu.com/ubuntu xenial-updates inrelease [102 kb]
**中间日志省略。。。。。。。。。。**                  
fetched 24.9 mb in 9s (2717 kb/s)                                
reading package lists… done
root@25fcbf6e953d:/# apt-get install -y nginx
reading package lists… done
building dependency tree 
reading state information… done
**安装日志省略。。。。。。。。。。**

然后安装vim:

?
1
2
3
4
5
6
root@25fcbf6e953d:/# apt-get install -y vim
reading package lists… done
building dependency tree 
reading state information… done
the following additional packages will be installed:
**安装日志省略。。。。。。。。。。**

然后建立存放静态文件的目录,并创建一个简单的html文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@25fcbf6e953d:/# mkdir -p /var/www/html
root@25fcbf6e953d:/#
root@25fcbf6e953d:/# cd /var/www/html/
root@25fcbf6e953d:/var/www/html# vim index.html
root@25fcbf6e953d:/var/www/html# ll
total 8
drwxr-xr-x. 2 root root 53 mar 13 05:02 ./
drwxr-xr-x. 3 root root 17 mar 13 04:50 ../
-rw-r–r–. 1 root root 79 mar 13 05:02 index.html
-rw-r–r–. 1 root root 612 mar 13 04:51 index.nginx-debian.html
root@25fcbf6e953d:/var/www/html# cat index.html
<html>
<body>
<h1>
this is the first docker static file
</h1>
</body>
</html>
root@25fcbf6e953d:/var/www/html#

找到nginx的安装目录,更改default的root值为刚才创建的目录:

?
1
2
3
4
5
6
7
8
9
root@25fcbf6e953d:/var/www/html# whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx
root@25fcbf6e953d:/var/www/html# cd /etc/nginx/sites-enabled/
root@25fcbf6e953d:/etc/nginx/sites-enabled# ll
total 4
drwxr-xr-x. 2 root root 20 mar 13 04:51 ./
drwxr-xr-x. 6 root root 4096 mar 13 04:51 ../
lrwxrwxrwx. 1 root root 34 mar 13 04:51 default -> /etc/nginx/sites-available/default
root@25fcbf6e953d:/etc/nginx/sites-enabled# vim default

%小知识:在Docker容器中部署静态网页的方法教程-猿站网-插图

然后启动nginx,查看容器进程:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@25fcbf6e953d:/etc/nginx/sites-enabled# nginx
root@25fcbf6e953d:/etc/nginx/sites-enabled# ps -ef
uid  pid ppid c stime tty   time cmd
root   1  0 0 04:48 ?  00:00:00 /bin/bash
root  827  1 0 05:06 ?  00:00:00 nginx: master process nginx
www-data 828 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 829 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 830 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 831 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 832 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 833 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 834 827 0 05:06 ?  00:00:00 nginx: worker process
www-data 835 827 0 05:06 ?  00:00:00 nginx: worker process
root  836  1 0 05:07 ?  00:00:00 ps -ef
root@25fcbf6e953d:/etc/nginx/sites-enabled#

然后按ctrl+p,ctrl+q退出交互式容器。

使用docker ps查看容器的端口和运行情况,也可以通过dcoker port 镜像名查看:

?
1
2
3
4
5
6
root@localhost ~]# docker ps
container id  image       command     created    status    ports     names
25fcbf6e953d  hub.c.163.com/library/ubuntu “/bin/bash”    18 minutes ago  up 18 minutes  0.0.0.0:32772->80/tcp static_test
[root@localhost ~]# docker port static_test
80/tcp -> 0.0.0.0:32772
[root@localhost ~]#

可以看到容器的80端口映射到注解的32772端口。

通过curl访问创建的index.html文件:

?
1
2
3
4
5
6
7
8
9
[root@localhost ~]# curl http://127.0.0.1:32772/index.html
<html>
<body>
<h1>
this is the first docker static file
</h1>
</body>
</html>
[root@localhost ~]#

也可以通过docker inspect 容器名来查看容器的详细信息和ip

通过容器ip进行访问:

?
1
2
3
[root@localhost ~]# docker inspect static_test
其他信息省略
“ipaddress”: “172.17.0.5”,
?
1
2
3
4
5
6
7
8
9
[root@localhost ~]# curl http://172.17.0.5/index.html
<html>
<body>
<h1>
this is the first docker static file
</h1>
</body>
</html>
[root@localhost ~]#

当我们使用docker stop 容器名停止这个容器后,再使用docker start 容器名启动容器后,里面的nginx并没有启动。那么我们使用docker exec 容器名 nginx来启动:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@localhost ~]# docker stop static_test
static_test
[root@localhost ~]# docker ps
container id  image       command     created    status    ports     names
b4f32bbe4a34  hub.c.163.com/library/ubuntu “/bin/bash”    41 hours ago  up 41 hours         loving_brattain
d75a2d8c7822  xingguo/df_test1    “nginx -g daemon off” 2 days ago   up 2 days   0.0.0.0:32770->80/tcp df_nginx_web
959c0fc5d903  xingguo/commit_test1   “nginx -g daemon off” 2 days ago   up 2 days   0.0.0.0:32769->80/tcp nginx_test
[root@localhost ~]# docker start static_test
static_test
[root@localhost ~]# docker ps
container id  image       command     created    status    ports     names
25fcbf6e953d  hub.c.163.com/library/ubuntu “/bin/bash”    29 minutes ago  up 2 seconds  0.0.0.0:32773->80/tcp static_test
b4f32bbe4a34  hub.c.163.com/library/ubuntu “/bin/bash”    41 hours ago  up 41 hours         loving_brattain
d75a2d8c7822  xingguo/df_test1    “nginx -g daemon off” 2 days ago   up 2 days   0.0.0.0:32770->80/tcp df_nginx_web
959c0fc5d903  xingguo/commit_test1   “nginx -g daemon off” 2 days ago   up 2 days   0.0.0.0:32769->80/tcp nginx_test
[root@localhost ~]# docker top static_test
uid     pid     ppid    c     stime    tty     time    cmd
root    4719    4702    0     13:17    pts/2    00:00:00   /bin/bash
[root@localhost ~]# docker exec static_test nginx
[root@localhost ~]# docker top static_test
uid     pid     ppid    c     stime    tty     time    cmd
root    4719    4702    0     13:17    pts/2    00:00:00   /bin/bash
root    4800    1     0     13:18    ?     00:00:00   nginx: master process nginx
amandab+   4801    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4802    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4803    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4804    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4805    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4806    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4807    4800    0     13:18    ?     00:00:00   nginx: worker process
amandab+   4808    4800    0     13:18    ?     00:00:00   nginx: worker process
[root@localhost ~]#

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:http://blog.csdn.net/u014231523/article/details/61916145

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux解决Tomcat内存溢出的问题

2023-4-17 11:24:22

建站知识

小知识:centos7编译安装nginx的方法步骤

2023-4-17 11:28:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索