zoukankan      html  css  js  c++  java
  • 第2次实践作业

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

    ①拉取nginx镜像

    ②在用户目录下创建Dockerfile目录,目录内用来存放Dockerfile及要用到的文件

    ③通过命令docker run --name nginxtest -d nginx启动一个名为nginxtest的容器

    ④将容器内的default.conf文件(nginx配置文件)拷贝到宿主机的Dockerfile目录

    ⑤修改该配置文件的监听端口为12345,并将web存放目录修改为my-html

    ⑥编辑Dockerfile配置文件

    ⑦构建自定义镜像

    ⑧启动容器并进入镜像

    ⑨查看网页

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

    ①拉取mysql5.7镜像

    ②在用户目录下新建mysqlDockerfile目录,并创建如下四个文件

    • Dockerfile:用来构建自定义镜像
    • setup.sh:用来初始化sql,并导入sql配置语句
    • priviliges.sql:用来新建数据库用户及分配表的权限
    • schema.sql:用来新建数据库,新建表并插入数据

    ③四个文件的配置及说明如下:

    • Dockerfile
    FROM mysql:5.7
    
    #不允许空密码登录
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    
    #设置root密码
    ENV MYSQL_ROOT_PASSWORD admin
    
    #拷贝所需文件
    COPY setup.sh /mysql/setup.sh
    COPY schema.sql /mysql/schema.sql
    COPY privileges.sql /mysql/privileges.sql
    
    #设置容器启动时执行的命令
    CMD ["sh","/mysql/setup.sh"]
    
    #设置暴露端口
    EXPOSE 3306
    
    • 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`
    
    #增加用户docker
    mysql < /mysql/privileges.sql
    echo '成功添加用户docker'
    
    #sleep 3
    echo `service mysql status`
    echo `mysql容器启动完毕,且数据导入成功`
    
    tail -f /dev/null
    
    • schema.sql
    create database `S_C` default character set utf8 collate utf8_general_ci;
    
    use S_C;
    
    DROP TABLE IF EXISTS `S`;
    
    CREATE TABLE `S`(
    `Sno` varchar(255) NOT NULL,
    `Sname` varchar(255) NOT NULL,
    `Sex` varchar(5) NOT NULL,
    CHECK(`Sex`='男' OR `Sex`='女'),
    PRIMARY KEY(`Sno`)
    );
    
    INSERT INTO `S`(`Sno`,`Sname`,`Sex`) VALUES('031702626','杨世杰','男');
    
    • privileges.sql
    use mysql;
    select host, user from user;
    create user docker identified by '123456';
    -- 将S_C数据库的权限授权给创建的用户docker,密码为123456:
    grant all on S_C.* to docker@'%' identified by '123456' with grant option;
    -- 这一条命令一定要有:
    flush privileges;
    

    docker bulid -t mysql-dicky .构建自定义镜像

    docker run --name mysql-dicky -p 8081:3306 -d mysql-dicky 运行容器

    docker logs mysql-dicky查看运行日志

    docker exec -it mysql-dicky bash进入容器并使用sql语句查看数据库及表内容

    mysql -u docker -p以docker身份登录mysql并查看表格数据

  • 相关阅读:
    Warning: Cannot modify header information
    curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in
    PHP Warning: strtotime(): It is not safe to rely on the system's timezone settings.
    出现Deprecated: Function ereg_replace() is deprecated in 的原因及解决方法
    APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4
    Apache无法启动解决 the requested operation has failed
    用json获取拉钩网的信息
    json
    如何用组件组装一个简单的机器人
    vue-组件
  • 原文地址:https://www.cnblogs.com/dicky99/p/12768365.html
Copyright © 2011-2022 走看看