• 第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 mynginx:/etc/nginx/conf.d/default.conf ./nginx/myweb

        • 修改conf文件

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

        • 修改完成后编辑dockerfile

          from nginx
          #base image
          
          copy default.conf /etc/nginx/conf.d/
          # cover file
          
          copy index.html /usr/my_html/
          # copy my file
          
          maintainer HuangYH <HuangYH723@outlook.com>
          #author
          
          expose 8080
          #expose port 8080
          
        • 构建镜像
          docker build -t mynginx ~/nginx/myweb/

        • 创建容器验证结果
          sudo docker run --name mynginxhyh -p 8080:2000 -d mynginx

          访问浏览器http://localhost:8080/致命404,怀疑是index.html文件内容问题,下面提示是nginx1.17,更感觉是html文件写歪了

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

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

    • 参考文档:dockerfile运行mysql并初始化数据

    • 首先,pull一个mysql镜像
      sudo docker pull mysql:5.7(看别人说加个5.7不会出问题)

    • 创建命令文档

      • dokerfile:

        from mysql:5.7
        #基础镜像
        
        maintainer HuangYH <HuangYH723@outlook.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
        (0723,'hyh');
        
      • privileges.sql

        use mysql;
        select host, user from user;
        -- 因为mysql版本是5.7,因此新建用户为如下命令:
        create user lyh identified by '123456';
        -- 将docker_mysql数据库的权限授权给创建的qyanzh用户,密码为123456:
        grant all on docker_mysql.* to hyh@'%' identified by '123456' with grant option;
        -- 这一条命令一定要有:
        flush privileges;
        
    • 创建镜像
      sudo docker build -t mysql_hyh .

    • 创建容器
      sudo docker run --name mysqlhyh -p 8000:2000 -d mysql_hyh

    • 查看日志
      sudo docker logs msql

      不运行,再输入一次

    • 验证

      • 进入容器
        sudo docker exec -it mysqlhyh /bin/bash

      • root登录:
        mysql -u root -p
        输入密码

      • 进行一些查询操作

      • 退出,重新用自定义的用户和密码登录

    • 结束

  • 相关阅读:
    20201015-3 每周例行报告
    20201008-1 每周例行报告
    20200924-2 功能测试
    贺敬文2019102936-1总结
    20191114-1 每周例行报告
    20191107-1 每周例行报告
    20191031-1 每周例行报告
    每周例行报告
    20191017-1 每周例行报告
    每周例行报告
  • 原文地址:https://www.cnblogs.com/HuangYH723/p/12771265.html
Copyright © 2020-2023  润新知