美文网首页Docker
Docker应用示例1--使用Docker创建Web服务

Docker应用示例1--使用Docker创建Web服务

作者: 红薯爱帅 | 来源:发表于2017-07-26 11:03 被阅读116次

    1,目的

    在已经掌握docker安装、docker仓库的基本使用、docker镜像和容器的基本操作和相互转化的基础上,可尝试通过docker搭建一个web服务器,便于分布式部署或快速移植web服务器。
    通过本文的学习,可以了解学习docker容器与宿主机的文件和端口映射,进一步熟练使用docker容器。

    2,修改容器,搭建简单的web服务

    安装nginx

    # apt-get install nginx
    

    修改nginx配置文件

    # vi /etc/nginx/conf.d/web.conf 
    
    # server的配置
    server {
        # 监听端口 
        listen 81;
        # 项目的初始化页面
        location / {
           root  /home/visual/nginx_web/;
           index index.html;
        }
    }
    

    修改开机启动项

    # vi /etc/rc.local
    
    ####!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    service ssh start
    service nginx start
    
    /bin/bash
    
    exit 0
    

    3,创建镜像,便于再次启动容器

    通过commit操作创建docker镜像文件,上篇文章已经讲过,命令如下

    kevin@apple:~/docker$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
    568e5204fff3        ubuntu              "/bin/sh -c 'while..."   40 hours ago        Exited (137) 38 hours ago                       kind_khorana
    00f561d97811        ubuntu              "/bin/echo hello w..."   40 hours ago        Exited (0) 40 hours ago                         nifty_mcnulty
    93a1b9d39683        ubuntu              "bash"                   40 hours ago        Exited (0) 5 seconds ago                        zealous_noether
    abdc084f9821        hello-world         "/hello"                 41 hours ago        Exited (0) 18 hours ago                         sleepy_clarke
    kevin@apple:~/docker$ docker commit 93a1b9d39683 learn/nginx:v2
    sha256:ab92edd21696770f1eb37e9229b6834094a8d3381e5b4e9edc620b7927004bb4
    kevin@apple:~/docker$ docker images
    REPOSITORY                                       TAG                 IMAGE ID            CREATED             SIZE
    learn/nginx                                      v2                  ab92edd21696        5 seconds ago       370MB
    learn/visual_init                                v1                  56a4eab7dc5b        37 hours ago        321MB
    registry.cn-beijing.aliyuncs.com/zhangsp/ai      visual_init         56a4eab7dc5b        37 hours ago        321MB
    ubuntu                                           latest              14f60031763d        5 days ago          120MB
    hello-world                                      latest              1815c82652c0        5 weeks ago         1.84kB
    

    4,启动新容器

    使用新创建的镜像learn/nginx:v2,启动新容器

    # docker run -it --name nginx_test -h docker-nginx -p 8001:81 -p 8000:80 -v /home/kevin/docker/nginx_web/:/home/visual/nginx_web/ learn/nginx:v2 /bin/sh /etc/rc.local
    

    启动容器的参数介绍

    • -it,交互方式启动
    • --name nginx_test,指定新容器的名称是nginx_test
    • -h docker-nginx,指定新容器的主机名是docker-nginx
    • -p 8001:81 -p 8000:80,指定宿主机与docker容器的端口映射,宿主机的8001对应docker容器的81,宿主机的8000对应docker容器的80
    • -v /home/kevin/docker/nginx_web/:/home/visual/nginx_web/,指定宿主机与docker容器的文件映射,宿主机的/home/kevin/docker/nginx_web/ 对应docker容器的 /home/visual/nginx_web/
    • learn/nginx:v2,指定启动容器对应的镜像是learn/nginx:v2,可以是镜像ID
    • /bin/sh /etc/rc.local,指定容器启动后,执行shell脚本是/etc/rc.local

    查看docker容器,容器nginx_test处于up状态,说明启动正常

    kevin@apple:~/docker/nginx_web$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                                        NAMES
    cbbbe7a5d47a        learn/nginx:v2      "/bin/sh /etc/rc.l..."   25 minutes ago      Up 24 minutes                  0.0.0.0:8000->80/tcp, 0.0.0.0:8001->81/tcp   nginx_test
    966bd52b72da        ubuntu              "/bin/sh -c 'while..."   42 hours ago        Exited (137) 40 hours ago                                                   stupefied_knuth
    00f561d97811        ubuntu              "/bin/echo hello w..."   42 hours ago        Exited (0) 42 hours ago                                                     nifty_mcnulty
    93a1b9d39683        ubuntu              "bash"                   43 hours ago        Exited (0) About an hour ago                                                zealous_noether
    abdc084f9821        hello-world         "/hello"                 43 hours ago        Exited (0) 20 hours ago                                                     sleepy_clarke
    

    5,测试docker_nginx是否正常

    通过浏览器测试8001端口

    通过浏览器测试8001端口-1.png

    通过浏览器测试8000端口

    通过浏览器测试8000端口.png

    修改宿主机的文件,并测试8001端口

    • 修改宿主机的/home/kevin/docker/nginx_web/index.html文件
    kevin@apple:~/docker/nginx_web$ vi index.html 
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx! I am in docker!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx! I am in Docker!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    
    • 通过浏览器测试8001端口,发现“Welcome to nginx! I am in docker!”,说明内容已经修改,使用docker做为web服务器的功能已经OK
    通过浏览器测试8001端口-2.png

    相关文章

      网友评论

        本文标题:Docker应用示例1--使用Docker创建Web服务

        本文链接:https://www.haomeiwen.com/subject/gkpnkxtx.html