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


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

    为方便管理,先创建一个mydocker文件夹

    mkdir mydocker
    

    拉取nginx镜像

    sudo docker pull nginx
    

    查看本地镜像列表,确认成功拉取nginx镜像

    sudo docker images
    

    创建容器

    sudo docker run -it nginx /bin/bash
    

    复制容器id后退出

    将default.conf复制出来修改,再将原文件覆盖。监听的端口号从80改为了2020,Web默认目录,从/usr/share/nginx/html改为/mydocker

    sudo docker cp [复制的容器ID]:/etc/nginx/conf.d/default.conf .
    

    创建dockerfile和html文件

    将dockerfile、html和defaut.conf文件放入预先创建的文件夹中,然后构建镜像

    cd mydocker
    sudo docker build -t myweb .
    

    创建容器验证结果

    sudo docker run --name my_web -p 2020:2020 -d myweb
    

    访问浏览器

    二、实现一个自定义的数据库容器服务

    pull一个mysql镜像

    sudo docker pull mysql
    

    创建文件夹mysql

    mkdir mysql
    

    创建构建镜像所需的文件:

    • dokerfile:
    #dockerfile
    FROM mysql:5.7
    #不允许空密码登录
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    
    #root密码
    ENV MYSQL_ROOT_PASSWORD=123456
    
    maintainer lzs1345311153@qq.com
    #将所需文件放到容器中
    COPY setup.sh /mysql/setup.sh
    COPY schema.sql /mysql/schema.sql
    COPY privileges.sql /mysql/privileges.sql
     
    #设置容器启动时执行的命令
    CMD ["sh", "/mysql/setup.sh"]
    
    • schema.sql:
    -- 创建数据库
    -- 设置数据库引擎和字符编码规则(UTF-8)
    create database `docker_mysql` default character set utf8 collate utf8_general_ci;
    
    use docker_mysql;
    
    -- 建表
    DROP TABLE IF EXISTS mytest;
    
    CREATE TABLE mytest (
    `id` varchar(255) NOT NULL,
    `name` varchar(255) DEFAULT "",
    `email` varchar(255) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    -- 插入数据
    INSERT INTO mytest (`id`, `name`,`email`)
    VALUES
    (031702115,'lzs','1345311153@qq.com');
    
    • setup.sh:
    #setup.sh
    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
    
    • privileges.sql:
    -- privileges.sql
    use mysql;
    
    select host, user from user;
    
    -- 因为mysql版本是5.7,因此新建用户为如下命令:
    
    create user lzs identified by '123456';
    
    -- 将docker_mysql数据库的权限授权给创建的lzs用户,密码为123456:
    
    grant all on docker_mysql.* to lzs@'%' identified by '123456' with grant option;
    
    -- 这一条命令一定要有:
    
    flush privileges;
    

    创建镜像

    sudo docker build -t mysql:lzs .
    

    创建容器

    sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:lzs
    

    进入容器

    首先查看容器

    sudo docker ps
    

    复制容器号,输入以下代码

    sudo docker exec -it <刚刚复制的容器号> /bin/bash
    

    root登录

    mysql -u root -p
    

    进入数据库docker_mysql,并利用source /mysql/schema.sql进行建表,show tables;查表

    使用privileges.sql中创建的lzs用户进行登录:

    mysql -u lzs -p
    

    查询数据库docker_mysql中mytest表中的数据:

    use docker_mysql
    select * from mytest
    

    对数据库docker_mysql中的表mytest插入一条数据:

    insert into mytest values('031702116','rjx','1509405353@qq.com');
    

    删除第一条数据

    delete from mytest where name='lzs'
    

  • 相关阅读:
    各个版本的iPhone SDK下载地址
    [置顶]JavaScript类型总览(图)
    自定义UIPageControl 控件(一)
    用自定义协议调用自己的程序
    【Android游戏开发二十六】追加简述SurfaceView 与 GLSurfaceView效率!
    【Cocos2d游戏开发之三】CCScene切换的所有特效(27种)以及设置屏幕横竖屏!
    【Cocos2d游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)
    【Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!]
    使用UIView实现自动登录
    苹果推送通知服务(APNs)编程
  • 原文地址:https://www.cnblogs.com/tinygod/p/12769754.html
Copyright © 2020-2023  润新知