前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Docker创建Web服务详解

使用Docker创建Web服务详解

作者头像
星哥玩云
发布2022-07-19 15:46:36
1.5K0
发布2022-07-19 15:46:36
举报
文章被收录于专栏:开源部署

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镜像文件,上篇文章已经讲过,命令如下

linuxidc@linuxidc:~/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 linuxidc@linuxidc:~/docker$ docker commit 93a1b9d39683 learn/nginx:v2 sha256:ab92edd21696770f1eb37e9229b6834094a8d3381e5b4e9edc620b7927004bb4 linuxidc@linuxidc:~/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/linuxidc/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/linuxidc/docker/nginx_web/:/home/visual/nginx_web/,指定宿主机与docker容器的文件映射,宿主机的/home/linuxidc/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状态,说明启动正常

linuxidc@linuxidc:~/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端口

通过浏览器测试8000端口

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

修改宿主机的/home/linuxidc/docker/nginx_web/index.html文件

linuxidc@linuxidc:~/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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档