Fork me on GitHub   

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'

posted @ 2020-04-24 19:55  Tiny_God  阅读(188)  评论(0编辑  收藏  举报