第2次实践作业
(1)实现一个自定义的web容器服务(nginx)
①拉取nginx镜像
②在用户目录下创建Dockerfile目录,目录内用来存放Dockerfile及要用到的文件
③通过命令docker run --name nginxtest -d nginx
启动一个名为nginxtest的容器
④将容器内的default.conf文件(nginx配置文件)拷贝到宿主机的Dockerfile目录
⑤修改该配置文件的监听端口为12345,并将web存放目录修改为my-html
⑥编辑Dockerfile配置文件
⑦构建自定义镜像
⑧启动容器并进入镜像
⑨查看网页
(2)实现一个自定义的数据库容器服务)(MySQL)
①拉取mysql5.7镜像
②在用户目录下新建mysqlDockerfile目录
,并创建如下四个文件
- Dockerfile:用来构建自定义镜像
- setup.sh:用来初始化sql,并导入sql配置语句
- priviliges.sql:用来新建数据库用户及分配表的权限
- schema.sql:用来新建数据库,新建表并插入数据
③四个文件的配置及说明如下:
- Dockerfile
FROM mysql:5.7
#不允许空密码登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
#设置root密码
ENV MYSQL_ROOT_PASSWORD admin
#拷贝所需文件
COPY setup.sh /mysql/setup.sh
COPY schema.sql /mysql/schema.sql
COPY privileges.sql /mysql/privileges.sql
#设置容器启动时执行的命令
CMD ["sh","/mysql/setup.sh"]
#设置暴露端口
EXPOSE 3306
- 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`
#增加用户docker
mysql < /mysql/privileges.sql
echo '成功添加用户docker'
#sleep 3
echo `service mysql status`
echo `mysql容器启动完毕,且数据导入成功`
tail -f /dev/null
- schema.sql
create database `S_C` default character set utf8 collate utf8_general_ci;
use S_C;
DROP TABLE IF EXISTS `S`;
CREATE TABLE `S`(
`Sno` varchar(255) NOT NULL,
`Sname` varchar(255) NOT NULL,
`Sex` varchar(5) NOT NULL,
CHECK(`Sex`='男' OR `Sex`='女'),
PRIMARY KEY(`Sno`)
);
INSERT INTO `S`(`Sno`,`Sname`,`Sex`) VALUES('031702626','杨世杰','男');
- privileges.sql
use mysql;
select host, user from user;
create user docker identified by '123456';
-- 将S_C数据库的权限授权给创建的用户docker,密码为123456:
grant all on S_C.* to docker@'%' identified by '123456' with grant option;
-- 这一条命令一定要有:
flush privileges;
④docker bulid -t mysql-dicky .
构建自定义镜像
⑤docker run --name mysql-dicky -p 8081:3306 -d mysql-dicky
运行容器
⑥docker logs mysql-dicky
查看运行日志
⑦docker exec -it mysql-dicky bash
进入容器并使用sql语句查看数据库及表内容
⑧mysql -u docker -p
以docker身份登录mysql并查看表格数据