• 2020年系统综合实践 第二次作业


    一、实现一个自定义的web容器服务(以Nginx为例)

    (1)从Docker Hub 上 pull Nginx镜像作为基础;

    • docker pull nginx;

    • 查看是否PULL成功:docker images;

    (2)查看Nginx的配置文件的路径;

    find / -name default.conf;

    (3)拷贝default.conf文件,修改相对应的配置;

    • docker cp 容器ID/名称:容器内路径 宿主机路径;

    • 修改端口号和web文件存放目录;

    (4)编辑html文件,作为测试使用;

    (5)编辑Dockerfile文件;

    FROM nginx
    
    MAINTAINER island
    
    COPY default.conf /etc/nginx/conf.d/
    
    COPY index.html /usr/share/nginx/web_html/
    
    EXPOSE 8080
    
    

    (6)构建镜像;

    docker build -t island/nginx .;

    (7)运行容器;

    docker run -it --name nginx-teset -p 8080:2020 -d island/nginx ;

    (8)打开浏览器,访问8080端口;

    二、实现一个自定义的数据库容器服务(以MYSQL为例)

    (1)从Docker Hub 上 pull mysql镜像作为基础;

    docker pull mysql;

    (2)在宿主机上创建mysql文件夹,用来存放镜像相关文件;

    mkdir mysql;

    (3)创建create_user.sql(用来创建用户)、school.sql(用来创建数据库和表);

    • 创建用户的SQL文件;
    create user 'docker' identified by '123456';
    
    grant all on test.* to 'docker'@'%' identified by '123456' with grant option;
    
    flush privileges;
    
    • 创建数据库和表的SQL文件;
    -- 创建数据库,数据库名为“test"
    
    create database `test` default character set utf8 collate utf8_general_ci;
    
    -- 切换到上一步所建的数据库中
    
    use test;
    
    -- 如果存在school表,则删除
    
    DROP TABLE IF EXISTS `school`;
    
    -- 建表
    
    CREATE TABLE `school`(
    
    	`id` varchar(9) NOT NULL,
    
    	`name` varchar(20) NOT NULL,
    
    	`age` integer(3) NOT NULL,
    
    	PRIMARY KEY (`id`)
    
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- 插入测试数据
    
    INSERT INTO `school` (`id`,`name`,`age`) VALUES('000000001','JACK',18);
    

    (4)创建Dockerfile文件;

    #基础镜像
    
    FROM mysql:5.7
    
    #作者信息
    
    MAINTAINER island
    
    
    
    #设置不允许空秘密登陆
    
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    
    
    
    #设置root用户密码
    
    ENV MYSQL_ROOT_PASSWORD 123456
    
    
    
    #把需要的SQL文件复制到容器中
    
    COPY create_user.sql /mysql/create_user.sql
    
    COPY school.sql /mysql/school.sql
    

    (5)构建镜像;

    docker build -t island/mysql:test;

    (6)启动容器;

    • docker run -itd --name mysql_test island/mysql:test;

    • docker exec -it mysql_test /bin/bash;

    (7)启动mysql服务,登入ROOT用户;

    • 未输入密码时无法登入;
    • 输入密码时登入成功;

    (8)利用SQL文件,创建数据库和数据表;

    • source /mysql/school.sql;

    • 查询数据库是否成功创建;

    (9)创建新的用户;

    source /mysql/create_user.sql;

    (10)用新用户登入,并对test数据库中的school表进行操作;


    (11)查看容器配置信息;

    docker inspect mysql_test;

    三、遇到的问题与解决办法

    (1)找不到nginx的配置文件;

    通过发现了Linux有 find这条命令,可以很快的找到文件的路径。
    find / -name 文件名;

    (2)Nginx监听端口,无法显示出放在工作目录下的HTML文件。

    只需要把文件名称改为:index.html 就可以显示出来。

    (3)MYSQL容器在登入MYSQL服务时,不需要密码也可以登入。

    这个问题困扰了我最久,最后在无意中发现,开容器的时候不能直接进入,如果直接进入容器的话,就不需要密码也可以登入MYSQL服务,通过先让容器在后台运行,在切换回容器在登入MYSQL服务的时候就需要密码了。

  • 相关阅读:
    Spring类中的split()方法
    单例模式
    c#操作文件
    c#选择文件
    c#判断程序是否正在运行
    .net创建文件夹和txt文件
    .net 程序睡眠之后执行
    .net读取txt文件
    .net Post Json数据
    sql查看表结构以及表说明
  • 原文地址:https://www.cnblogs.com/lokk/p/12764697.html
Copyright © 2020-2023  润新知