zoukankan      html  css  js  c++  java
  • 2020系统综合实践 第2次实践作业

    1.实现一个自定义的web容器服务

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

    • 1.拉取nginx镜像:
      docker pull nginx
    • 2.创建并运行容器
      • 创建容器
        sudo docker run -it nginx /bin/bash
      • 查看容器的工作目录,方便进行后续操作
        pwd

        可见容器工作在根目录下
    • 3.更改nginx的web存放目录
      • 修改nginx.conf文件
        • 直接修改好像很复杂,所以先复制出来修改,再将原文件覆盖
          sudo docker cp <容器ID>:/etc/nginx/conf.d/default.conf .

        • 然后就能顺利地修改conf文件啦

          修改箭头指向的参数
          listen是监听的端口号,从80改为了2049
          root为Web默认目录,从/usr/share/nginx/html改为/usr/my_html/

        • 修改完成后编辑dockerfile

          from nginx
          #base image
          
          copy default.conf /etc/nginx/conf.d/
          # cover file
          
          copy index.html /usr/my_html/
          # copy my file
          
          maintainer lyh<471727250@qq.com>
          #author
          
          expose 8000
          #expose port 8000
          
        • 构建镜像
          docker build -t mynginx .

          构建成功,但是不知道为什么报错了,但是没有影响?

        • 创建容器验证结果
          sudo docker run --name my_nginx -p 8000:2049 -d mynginx

          访问浏览器http://localhost:8000/

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

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

    • 参考文档:dockerfile运行mysql并初始化数据
    • 首先,pull一个mysql镜像
      sudo docker pull mysql[红色]大坑预警!!!
    • 创建命令文档
      • dokerfile:
        from mysql:5.7
        #基础镜像
        
        maintainer lyh<471727250@qq.com>
        #维护者信息
        
        ENV MYSQL_ALLOW_EMPTY_PASSWORD no
        #不允许空密码登录
        
        ENV MYSQL_ROOT_PASSWORD=123456
        #root密码
        
        COPY setup.sh /mysql/setup.sh
        COPY schema.sql /mysql/schema.sql
        COPY privileges.sql /mysql/privileges.sql
        #所需文件
        
        CMD ["sh", "/mysql/setup.sh"]
        #启动命令
        
      • setup.sh
        #!/bin/bash
        set -e
        
        #查看mysql服务的状态,方便调试,这条语句可以删除
        echo `service mysql status`
        
        echo '1.启动mysql....'
        #启动mysql
        service mysql start
        sleep 3
        echo `service mysql status`
        
        echo '2.开始导入数据....'
        #导入数据
        mysql < /mysql/schema.sql
        echo '3.导入数据完毕....'
        
        sleep 3
        echo `service mysql status`
        
        #重新设置mysql密码
        echo '4.开始修改密码....'
        mysql < /mysql/privileges.sql
        echo '5.修改密码完毕....'
        
        #sleep 3
        echo `service mysql status`
        echo `mysql容器启动完毕,且数据导入成功`
        
        tail -f /dev/null
        
      • schema.sql
        -- 创建数据库
        create database `docker_mysql` default character set utf8 collate utf8_general_ci;
        
        use docker_mysql;
        
        -- 建表
        DROP TABLE IF EXISTS test;
        
        CREATE TABLE test (
         `id` bigint(20) NOT NULL,
         `name` varchar(255) DEFAULT ""
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        
        -- 插入数据
        INSERT INTO test (`id`, `name`)
        VALUES
        (0209,'lyh');
        
      • privileges.sql
        use mysql;
        select host, user from user;
        -- 因为mysql版本是5.7,因此新建用户为如下命令:
        create user lyh identified by '123456';
        -- 将docker_mysql数据库的权限授权给创建的用户,密码为123456:
        grant all on docker_mysql.* to lyh@'%' identified by '123456' with grant option;
        -- 这一条命令一定要有:
        flush privileges;
        
    • 创建镜像
      sudo docker build -t mysql_lyh .
    • 创建容器
      sudo docker run --name msql -p 8000:2049 -d mysql_lyh
    • 查看日志
      sudo docker logs msql

      ???有问题 不对劲不对劲
      查看当前容器的运行状态:

      我那么大一个容器,它不见了!然后我就在怀疑人生搁置实验的时候,QQ群传来的喜讯,mysql镜像换5.7就可以了
    • 回炉
      • sudo docker pull mysql:5.7
      • 然后将dokerfile中from mysql改为from mysql:5.7
      • 删除上一个容器sudo docker rm 173
      • sudo docker build -t mysql_lyh .
      • sudo docker run --name msql -p 8000:2049 -d mysql_lyh

        创建容器正常成功
    • 验证
      • 进入容器
        sudo docker exec -it 8c8c31980a69 /bin/bash
      • root登录:
        mysql -u root -p
        输入密码
      • 进行一些查询操作
      • 退出,重新用自定义的用户和密码登录
    • 结束
  • 相关阅读:
    c#之字段,属性,索引器,常量
    c#类,对象,类成员简介
    c#之接口,依赖反转,单元测试
    c#之 抽象类与开闭原则
    c#重写与多态
    c#之类
    c#之类的继承,类成员的访问控制
    c#之委托
    c# try catch用法思路
    js的全局变量
  • 原文地址:https://www.cnblogs.com/fangdaoyou/p/12732974.html
Copyright © 2011-2022 走看看