在ubuntu上部署静态页面html,在Docker容器中部署静态网页的方法教程

本文详细介绍了如何在Ubuntu上使用Docker部署静态HTML页面,包括设置端口映射的不同方式,如通过`docker run`命令指定ip:hostPort:containerPort。接着,通过创建容器、安装Nginx和vim,创建并部署静态网页。文章还展示了如何启动Nginx,验证网页,并通过curl访问创建的index.html文件。最后,讨论了容器重启后Nginx的启动问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

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

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/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:

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文件:

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

this is the first docker static file

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

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

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

2b535f0d2ad12b272462a80a4f2c90d3.png

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

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镜像名查看:

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文件:

[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_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 ~]#

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值