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

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

    1. 从 docker hub拉取nginx作为基础镜像

    sudo docker pull nginx
    

    sudo docker images,可以看到镜像拉取成功

    2. 创建并运行容器

    • 创建容器

      sudo docker run -it nginx /bin/bash

    • 查看容器的工作目录, 可见容器工作在根目录下

      pwd

      img

    3. 修改nginx容器的配置文件

    • 查看容器的ID

      sudo docker ps

    • 复制default.conf文件到根目录下,修改文件的权限为可读写

      sudo docker cp <容器ID>:/etc/nginx/conf.d/default1.conf .

    -

    -

    • 修改 default.conf 文件

      listen是监听的端口号,从80改为了81

      root/usr/share/nginx/html改为/web

    4. 创建一个html文件

    5. 创建一个dockerfile文件

    6. 构建自己的定制镜像

    进入dockerfile所在的目录内打开终端

    sudo docker build -t mynginx .
    

    7. 运行一个容器查看效果

    sudo docker run --name my_nginx -p 8888:1127 -d mynginx
    

    8. 在浏览器查看8888端口,是自己之前写的html文件

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

    • 首先pull一个mysql镜像,5.7版本

      sudo docker pull mysql:5.7

    • 之后要创建四个文件,分别是Dockerfile,setup.sh(启动脚本),schema.sql(创建数据库文件),privileges.sql(权限文件)

      • dokerfile:

        #基础镜像
        FROM mysql:5.7
        
        #维护者信息
        MAINTAINER yxy
        
        #设置不允许空密码登陆,且设置root密码
        ENV MYSQL_ALLOW_EMPTY_PASSWORD no
        ENV MYSQL_ROOT_PASSWORD=root1999
        
        #将所需文件放到容器中
        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` varchar(20) NOT NULL,
          `name` varchar(40) DEFAULT NULL,
          `sex` varchar(10) DEFAULT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        
        -- 插入数据
        INSERT INTO test (`id`, `name`, `sex`)
        VALUES
        ('031702108','yxy','female');
        
      • privileges.sql:

        use mysql;
        select host, user from user;
        -- 因为mysql版本是5.7,因此新建用户为如下命令:
        create user docker identified by '111111';
        -- 将docker_mysql数据库的权限授权给创建的docker用户,密码为111111:
        grant all on docker_mysql.* to docker@'%' identified by '111111' with grant option;
        -- 这一条命令一定要有:
        flush privileges;
        
    • 创建镜像,在Dockerfile所在的文件夹中打开终端,运行命令

      sudo docker build -t yxymysql .

    • 使用指定用户名和密码进入数据库

      mysql -u docker -p

      img

    • 查看已经存在的数据库

      show databases;

      img

    • 进入到 docker_mysql 数据库

      use docker_mysql

      img

    • 查看 test 表中的数据

      select * from test;

      img

    • 使用exit退出登录,然后使用root登录

      mysql -u root -p

      img

    • 查看数据库

      show databases;

      img

    • 查看mysql的配置信息

      show variables;

      img

    • 使用exit退出这个容器

      img

  • 相关阅读:
    mint17上建立lamp环境
    iptables开始ftp
    查看mysql集群状态是否正常
    限制SSH访问源,禁止4A之外的地址跳转访问
    查看cpu、内存和硬盘
    降kipmi0的CPU
    更改密钥对
    eNSP
    划分分区GPT11
    修改虚机IP
  • 原文地址:https://www.cnblogs.com/zebsn/p/12769953.html
Copyright © 2011-2022 走看看