• 2020综合实践 第二次综合实践作业


    引言:上一次作业同学们实现了docker环境的安装和基本配置,已经能够从docker的官方镜像仓库中拉取镜像,初步实现了入门。然而,从官方仓库拉取的镜像是最简单的镜像,在实际应用中经常需要根据需求额外修改镜像,这就涉及到了镜像的定制。在docker中我们可以使用Dockerfile文件实现自定义镜像,本次作业需要完成2个Dockerfile编写实践,掌握编写Dockerfile文件的基本方法。编写Dockerfile文件

    (1) Dockerfile的几个重要参数

    (2) 实现一个自定义的web容器服务

    推荐apache或nginx,要求标明镜像作者信息,安装必要的工具以方便维护;设定你自己的web存放目录,安全起见,请将默认的监听端口80更改为你自定义的端口,并且声明暴露的端口,容器启动时,能直接进入web代码的存放目录。(以nginx为例)

    a.什么是nginx

    Nginx (engine x):是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。它基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。
    nginx百度百科

    b.安装nginx

    安装nginx镜像

    查看是否安装完成成

    使用命令来运行 nginx 容器

    其中-name nginx-test:容器名称。
    -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
    -d nginx: 设置容器在在后台一直运行

    编写nginx的dockerfile

    根据这两篇博客的启发:nginx基础配件讲解nginx的安装目录和配置语法可知:进入nginx_ruin容器内部,由以上资料,查找相关配置文件信息

    whereis nginx查询内部有什么目录文件:查找conf.d、nginx.conf

    进入/etc/nginx目录,ls命令查找可看出配置文件有conf.d、nginx.conf

    分别cat conf.d、nginx.conf,conf.d有相应的server端口

    建立nginx文件夹,里面存放有index.html的文件夹myweb(自己建立的web文件),在该文件目录下copy 原来的default.conf文件和编写Doclerfile文件

    cd /usr/nginx/进入该目录文件进行以下操作:
    vim Dockerfile,编写dockerfile,申明:来源,作者,联系方式和对外暴露端口8888

    有一系列操作可知,index.html的路径,我们要做的是替换该页面为自己的html文件

    copy default.conf到/usr/nginx/文件目录中

    vim default.conf编辑default.conf,修改监听端口为2506,设置路径为/usr/share/nginx/myweb(容器里面页面存放路径)

    在该目录下建立自己的新镜像mynginx:6666

    在新镜像上run一个ruinweb容器,并对外暴露端口

    在页面上访问localhost:8888

    本地存放的相应目录

    (2) 实现一个自定义的数据库容器服务

    可选择Mysql,Mariadb等,要求标明镜像作者信息,为了方便维护,需要能够查看容器内的配置信息,包括但不限于网络、应用配置文件等。在环境变量中设置好数据库的root密码且不允许空密码登录,创建一个测试数据库,指定用户名和密码。

    • pull mysql:5.7版本
    • 在/usr/nginx目录下创建mysql文件存放配置文件,分别编写以下四个文件(第一个文件可忽略)
    • 在新镜像mysql_ruin_3:test基础上运行zly_sql_3容器,并进入zly_sql容器
    • 密码登录sql
    • 查看数据库与表格
    • 也可以插入数据

    *退出sql

    (3)途中遇到的问题

    • 配置nginx文件时,误解了default.conf文件location路径,开始以为是路径是linux本地路径下的静态页面的路径,卡了好久,后来询问老师才知道是链接到容器目录下存放的html页面(ps:老师好有耐心,超可爱~~)
    • 配置mysql文件时,要注意环境变量的配置,还有标点符号哦,过程进入mysql输入密码有遇到error 1045错误,可以通过root用户进入,即mysql -u root -p
    • 配置mysql文件时,遇到运行容器立马就停止,可以删除Dockerfile文件中的cmd命令,即可解决;
    • 途中win10版本限制太多,就改了ubuntu做docker了
    • 还有就是我太菜了。。。。

    (4)附上配置文件

    nginx

    mysql

    (setup.sh)
  • 相关阅读:
    LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义
    字符,字节和编码
    堆和栈的区别
    js正则表达式限制文本框只能输入数字,小数点,英文字母
    WPF 中的 LinkButton
    WPF中DataGrid的应用
    C#获取web.config配置文件内容
    js中格式化时间字符串
    WPF中的用户控件(UserControl)
    VS2010安装其他版本framework的问题解决方案
  • 原文地址:https://www.cnblogs.com/ruinzly/p/12728267.html
Copyright © 2020-2023  润新知