千家信息网

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

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,前言一般我们在访问容器时需要通过容器的端口来访问,那如何设置容器的端口映射呢?我们通过以下命令来设置:docker run -p ip:hostPort:containerPort [--name]
千家信息网最后更新 2025年12月02日在Docker容器中部署静态网页的方法教程

前言

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

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

docker run -p ip:hostPort:containerPort [--name] [-i] [-t] 镜像名 [COMMAND][ARG...]
  • ip:表示宿主机ip
  • hostPort:宿主机端口号
  • containerPort:容器端口号

设置的方式有以下几种:

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

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

hostPort:containerPort映射主机端口和容器端口

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

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

[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映射指定地址的指定端口到容器的指定端口

[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):

[root@localhost ~]# docker run -p 80 --name static_test -i -t hub.c.163.com/library/ubuntu /bin/bashroot@25fcbf6e953d:/# apt-get install -y nginxReading package lists... DoneBuilding dependency tree  Reading state information... DoneE: Unable to locate package nginxroot@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... Doneroot@25fcbf6e953d:/# apt-get install -y nginxReading package lists... DoneBuilding dependency tree  Reading state information... Done**安装日志省略。。。。。。。。。。**

然后安装vim:

root@25fcbf6e953d:/# apt-get install -y vimReading package lists... DoneBuilding dependency tree  Reading state information... DoneThe following additional packages will be installed:**安装日志省略。。。。。。。。。。**

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

root@25fcbf6e953d:/# mkdir -p /var/www/htmlroot@25fcbf6e953d:/# root@25fcbf6e953d:/# cd /var/www/html/root@25fcbf6e953d:/var/www/html# vim index.htmlroot@25fcbf6e953d:/var/www/html# ll total 8drwxr-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.htmlroot@25fcbf6e953d:/var/www/html# cat index.html 

this is the first docker static file

root@25fcbf6e953d:/var/www/html#

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

root@25fcbf6e953d:/var/www/html# whereis nginxnginx: /usr/sbin/nginx /etc/nginx /usr/share/nginxroot@25fcbf6e953d:/var/www/html# cd /etc/nginx/sites-enabled/root@25fcbf6e953d:/etc/nginx/sites-enabled# lltotal 4drwxr-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/defaultroot@25fcbf6e953d:/etc/nginx/sites-enabled# vim default 

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

root@25fcbf6e953d:/etc/nginx/sites-enabled# nginxroot@25fcbf6e953d:/etc/nginx/sites-enabled# ps -ef UID  PID PPID C STIME TTY   TIME CMDroot   1  0 0 04:48 ?  00:00:00 /bin/bashroot  827  1 0 05:06 ?  00:00:00 nginx: master process nginxwww-data 828 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 829 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 830 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 831 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 832 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 833 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 834 827 0 05:06 ?  00:00:00 nginx: worker processwww-data 835 827 0 05:06 ?  00:00:00 nginx: worker processroot  836  1 0 05:07 ?  00:00:00 ps -efroot@25fcbf6e953d:/etc/nginx/sites-enabled# 

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

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

root@localhost ~]# docker psCONTAINER ID  IMAGE       COMMAND     CREATED    STATUS    PORTS     NAMES25fcbf6e953d  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_test80/tcp -> 0.0.0.0:32772[root@localhost ~]# 

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

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

[root@localhost ~]# curl http://127.0.0.1:32772/index.html

this is the first docker static file

[root@localhost ~]#

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

通过容器ip进行访问:

[root@localhost ~]# docker inspect static_test其他信息省略"IPAddress": "172.17.0.5",
[root@localhost ~]# curl http://172.17.0.5/index.html

this is the first docker static file

[root@localhost ~]#

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

[root@localhost ~]# docker stop static_teststatic_test[root@localhost ~]# docker ps CONTAINER ID  IMAGE       COMMAND     CREATED    STATUS    PORTS     NAMESb4f32bbe4a34  hub.c.163.com/library/ubuntu "/bin/bash"    41 hours ago  Up 41 hours         loving_brattaind75a2d8c7822  xingguo/df_test1    "nginx -g 'daemon off" 2 days ago   Up 2 days   0.0.0.0:32770->80/tcp df_nginx_web959c0fc5d903  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_teststatic_test[root@localhost ~]# docker ps CONTAINER ID  IMAGE       COMMAND     CREATED    STATUS    PORTS     NAMES25fcbf6e953d  hub.c.163.com/library/ubuntu "/bin/bash"    29 minutes ago  Up 2 seconds  0.0.0.0:32773->80/tcp static_testb4f32bbe4a34  hub.c.163.com/library/ubuntu "/bin/bash"    41 hours ago  Up 41 hours         loving_brattaind75a2d8c7822  xingguo/df_test1    "nginx -g 'daemon off" 2 days ago   Up 2 days   0.0.0.0:32770->80/tcp df_nginx_web959c0fc5d903  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_testUID     PID     PPID    C     STIME    TTY     TIME    CMDroot    4719    4702    0     13:17    pts/2    00:00:00   /bin/bash[root@localhost ~]# docker exec static_test nginx[root@localhost ~]# docker top static_testUID     PID     PPID    C     STIME    TTY     TIME    CMDroot    4719    4702    0     13:17    pts/2    00:00:00   /bin/bashroot    4800    1     0     13:18    ?     00:00:00   nginx: master process nginxamandab+   4801    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4802    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4803    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4804    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4805    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4806    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4807    4800    0     13:18    ?     00:00:00   nginx: worker processamandab+   4808    4800    0     13:18    ?     00:00:00   nginx: worker process[root@localhost ~]# 

总结

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

容器 端口 网页 静态 口号 宿主 宿主机 文件 日志 目录 主机 交互式 信息 内容 可以通过 镜像 运行 前言 命令 地址 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 决策树 r语言内置数据库 网上论坛和网络安全 协议软件开发难度 屏幕共享软件开发在哪能看 公交公司网络安全应急方案 阿里云搭建邮箱服务器 同时连接两个数据库 网络安全日常检查表模板 绿联打印共享服务器支持打印机 逆战为什么跟服务器断开连接 网络安全保障的第一责任人 网络安全演练方案及总结 网络安全系统是数据库吗 网络安全等级7级 计算机网络技术苏州订单班 台账和数据库有什么区别 如何给网页做分布式数据库 大学生数据库期末考试考什么 忍者必须死3玩哪个服务器 阿里云服务器做企业网盘 软件开发图例 网络安全手机支付 软件开发助理招聘信息 华为服务器出售的影响 数据库代码创建学生信息表 南京学习网络安全的学校 数据库后期维护升级方案 软件开发 转正申请 远程数据库备份到本地 企业学习软件开发怎么收费
0