2020系统综合实践 第2次实践作业
一、实现一个自定义的web容器服务
1. 从 docker hub拉取nginx作为基础镜像
sudo docker pull nginx
此时sudo docker images
,可以看到镜像拉取成功
2. 创建并运行容器
-
创建容器
sudo docker run -it nginx /bin/bash
-
查看容器的工作目录, 可见容器工作在根目录下
pwd
3. 修改nginx容器的配置文件
-
查看容器的ID
sudo docker ps
-
复制default.conf文件到根目录下
sudo docker cp <容器ID>:/etc/nginx/conf.d/default.conf .
此时可以看到虚拟机根目录下已经出现了default.conf文件(此时文件的权限为只读权限)
-
修改文件的权限为可读写
-
修改 default.conf 文件
listen是监听的端口号,从
80
改为了1127
root从
/usr/share/nginx/html
改为/myweb
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 .
-
运行容器
sudo docker run --name sql -p 3306:3306 -d yxymysql
-
查看是否创建成功
docker ps
-
进入容器
docker exec -it [容器id] /bin/bash
-
使用指定用户名和密码进入数据库
mysql -u docker -p
-
查看已经存在的数据库
show databases;
-
进入到 docker_mysql 数据库
use docker_mysql
-
查看 test 表中的数据
select * from test;
-
使用exit退出登录,然后使用root登录
mysql -u root -p
-
查看数据库
show databases;
-
查看mysql的配置信息
show variables;
-
使用exit退出这个容器
-
查看日志信息
sudo docker logs sql
-
查看这个容器的信息
sudo docker inspect sql