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

简介:

步骤:
1.创建映射端口的交互式容器
docker run -p 80 --name web -i -t daocloud.io/ubuntu /bin/bash
2.安装Nginx
apt-get install -y nginx 不行需要更新一下apt-get update
3.安装文本编辑器vim
apt-get install -y vim
4.创建静态页面

        mkdir -p /var/www/html  
        cd /var/www/html  
        vim index.html  

使用i切换到插入模式

在index.html中写入以下内容:

<html>  
<head>  
<title>Nginx in Dockertitle>  
head>  
<body>Hello Dockerbody>  
html>  

保存退出

5.修改Nginx配置文件
vim /etc/nginx/sites-enabled/default
这样打开Nginx的配置文件之后会看见:

server {  
        listen 80 default_server;  
        listen [::]:80 default_server ipv6only=on;   

        root /var/www/html;  
        index index.html index.htm;  
    # Make site accessible from http://localhost/  
    server_name localhost;  

    location / {  
            # First attempt to serve request as file, then  
            # as directory, then fall back to displaying a 404.  
            try_files $uri $uri/ =404;  
            # Uncomment to enable naxsi on this location  
            # include /etc/nginx/naxsi.rules  
    }  

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

切换到根目录:

cd /

6.运行Nginx

[plain] view plain copy
nginx

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

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

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

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

80/tcp -> 0.0.0.0:32768

7.验证网站访问

[plain] view plain copy
curl http://127.0.0.1:32768

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

[csharp] view plain copy
http://127.0.0.1:32768

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

[plain] view plain copy
"NetworkSettings": {
"Bridge": "docker0",
"Gateway": "172.17.42.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.1",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "fe80::42:acff:fe11:1",
"LinkLocalIPv6PrefixLen": 64,
"MacAddress": "02:42:ac:11:00:01",
"PortMapping": null,
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32768"
}
]
}
},

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

使用

[plain] view plain copy
curl http://127.0.0.1

就可以直接查看了.

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

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

[plain] view plain copy
docker stop web

然后开启容器:

[plain] view plain copy
docker start -i web

这个时候使用:

[plain] view plain copy
ps -ef

发现nginx是没有启动的.

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

使用:

[plain] view plain copy
docker exec web nginx

启动nginx服务.

使用:

[plain] view plain copy
curl http://127.0.0.1

发现不行了.

这个时候我们使用:

[plain] view plain copy
docker inspect web

看到以下输出结果:

[csharp] view plain copy
"NetworkSettings": {
"Bridge": "docker0",
"Gateway": "172.17.42.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "fe80::42:acff:fe11:2",
"LinkLocalIPv6PrefixLen": 64,
"MacAddress": "02:42:ac:11:00:02",
"PortMapping": null,
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32769"
}
]
}
},

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




     本文转自yushiwh 51CTO博客,原文链接:http://blog.51cto.com/yushiwh/2062685,如需转载请自行联系原作者





相关文章
|
2月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1204 4
|
2月前
|
存储 Java Linux
【Docker】(2)还在浏览网页寻找Docker命令?本文全面列举与使用Docker里的各个命令!想要什么命令直接从本文拿!
docker有着比VM更少的抽象层 由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源 因此在CPU、内存利用率上Docker将会在效率上有明显优势 docker利用的时宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核 进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的。 而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个Docker容器只需
397 124
|
2月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
163 5
|
2月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
853 7
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
513 5
|
2月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
258 6