Docker容器中部署静态网页

原创 2017年03月13日 13:20:23

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

docker run -p ip:hostPort:containerPort [--name] [-i] [-t] 镜像名 [COMMAND][ARG...]

ip:表示宿主机ip
hostPort:宿主机端口号
containerPort:容器端口号

设置的方式有以下几种:

  1. containerPort,指定容器端口号,宿主机端口随机生成
[root@localhost ~]# docker run -p 80 --name web_test -i -t 80864d42dd23        hub.c.163.com/library/ubuntu /bin/bash
  1. 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  
<html>
<body>
<h1>
        this is the first docker static file
</h1>
</body>
</html>
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 

这里写图片描述

然后启动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
<html>
<body>
<h1>
        this is the first docker static file
</h1>
</body>
</html>
[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
<html>
<body>
<h1>
        this is the first docker static file
</h1>
</body>
</html>
[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 ~]# 
版权声明:本文供交流学习,能够帮助到你是我最大的荣幸! https://blog.csdn.net/u014231523/article/details/61916145

通过 Docker 化一个博客网站来开启我们的 Docker 之旅

这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来Docker 化(Dockerize)一个应用。 Docker 是一个过去两年来从某个 idea ...
  • tiansuiwodong
  • tiansuiwodong
  • 2016-07-15 19:54:31
  • 4821

使用数据卷容器,配置Nginx Docker作为静态文件服务器

该方法是直接使用命令行,当然也可使用Dockerfile文件进行创建。 其实,使用docker创建nginx容器是很简单的,但要和数据卷容器结合起来使用,即所有静态文件放在数据卷容器中,然后可以启动多...
  • zhiaini06
  • zhiaini06
  • 2015-04-26 13:26:59
  • 2228

在docker中部署静态网页

1、新建一个80端口的web服务器,ubuntu系统 docker run -p 80 –name web -i -t ubuntu /bin/bash 2、在ubuntu上安装nginx a...
  • acmjk
  • acmjk
  • 2017-12-01 12:54:41
  • 146

Docker使用---静态网站测试

Docker静态网站测试
  • alive2012
  • alive2012
  • 2016-07-10 16:10:02
  • 634

Docker -- 2 -- 利用docker部署网站和数据库

在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录。 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,...
  • wangyaninglm
  • wangyaninglm
  • 2017-02-09 22:52:10
  • 2356

docker nginx实现一个主机部署多个站点

在某站租赁的虚拟机快到期了,续费得花200多,想到在阿里云新买的服务器,不如把这个也转移过去。域名我就用真实的吧,大家别黑我网站就好了,谢谢各位了。 阿里云里面已经用部署了一个站点 用域名 www.d...
  • u011164906
  • u011164906
  • 2017-06-12 20:20:12
  • 2141

Docker网络详解

Docker网络详解 转载请注明来自:http://blog.csdn.net/wsscy2004 网络基础 Docker使用linux桥接,在主机虚拟一个docker0网络接口,在...
  • wsscy2004
  • wsscy2004
  • 2014-05-15 14:06:31
  • 28081

在容器中部署静态网站----Nginx

在容器中部署静态网站----Nginx   步骤: 1.创建映射端口的交互式容器 docker run -p 80 --name web -i -t daocloud....
  • shanyongxu
  • shanyongxu
  • 2016-05-07 11:47:19
  • 7685

在容器中部署静态网站

利用docker技术在容器中使用nginx部署一个静态网站。 容器的端口映射 在使用run的时候指定-p或-P来进行端口映射: -P:将为容器暴露的所有端口进行映射 eg:d...
  • sinat_35930259
  • sinat_35930259
  • 2018-03-22 20:34:30
  • 49

命令部署一个docker静态网站

Docker学习之部署静态网站、   一、打开Docker Quickstart Terminal如下图: 1、系统会有一个默认的docker-machine叫default.可通过命令do...
  • wantiehai
  • wantiehai
  • 2016-09-14 21:39:53
  • 673
收藏助手
不良信息举报
您举报文章:Docker容器中部署静态网页
举报原因:
原因补充:

(最多只允许输入30个字)