第2次实践作业

(1) 实现一个自定义的web容器服务

推荐apache或nginx,要求标明镜像作者信息,安装必要的工具以方便维护;设定你自己的web存放目录,安全起见,请将默认的监听端口80更改为你自定义的端口,并且声明暴露的端口,容器启动时,能直接进入web代码的存放目录。

参考:参考1,参考2,参考3,参考4

1、拉取镜像

搜索镜像

docker seaech nginx


确认镜像已安装

docker images nginx


拉取镜像

docker pull nginx

2、挂载

创建待挂载的目录

sudo mkdir -p /data/nginx/{conf,conf.d,html,logs}

创建配置文件
启动临时的nginx

docker run -d --name nginx nginx

拷贝配置文件

sudo docker cp nginx:/etc/nginx/conf.d/default.conf conf.d/

删除临时的nginx

docker stop nginx
docker rm nginx

启动nginx

docker run --name nginx -d -p 80:80 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx -v /data/nginx/conf.d:/etc/nginx/conf.d  nginx

这里是第一次错误……没注意没有目录,以为会自动创建,就跳过不管了(造成后面好几次创建镜像出错),正确应该是自己创建好

3、配置Dckerfile并创建镜像

创建目录后,把nginx容器的默认配置default.conf(上一步操作失误的情况下,这步变成了conf.d然后失败)复制进文件夹中,一共三个文件
第二个错误,因为第一个错误,根据报错查了好久,没考虑到之前没挂载到文件,以为是文件路径不对。一开始更改了文件路径。(忘记截图了,下面是正确的)

1.创建Dckerfile

2.创建index.html

3.复制default.conf(修改监听和目录)

这是创建镜像和容器都成功,但是因为第二个错误所以显示不出来。搜索了好久,因为没有太多参考,只参考了:参考,但是没有用()

错误如下:

这是在发现第二个错误后更改文件路径后的运行结果。

最后的正确显示:

(2) 实现一个自定义的数据库容器服务

可选择Mysql,Mariadb等,要求标明镜像作者信息,为了方便维护,需要能够查看容器内的配置信息,包括但不限于网络、应用配置文件等。在环境变量中设置好数据库的root密码且不允许空密码登录,创建一个测试数据库,指定用户名和密码。

参考:参考
搭建步骤

1、首先创建Dckerfile:

2、编写容器启动脚本setup.sh:

3、需要导入数据的mysql脚本命令schema.sql:

4、mysql权限设置命令privileges.sql:

5、创建镜像

docker build -t 名字 .


执行docker images查看该镜像是否存在于镜像列表中:

创建成功。

6、启动容器

docker run -d -p 13306:3306 名字

启动容器,并将端口映射到本地的13306端口,命令行如图所示:

容器启动成功。

验证结果

1、通过进入容器在命令行验证


执行exec命令进入容器:

docker exec -it id /bin/bash

前文中创建了docker_mysql数据库,并在此数据库中创建了user表,同时将数据库的连接授权赋予了新建的docker用户,因此验证过程为:
使用docker用户登录数据库:

mysql -u docker -p


输入密码123456通过登录验证
切换至docker_mysql数据库:

use docker_mysql;


查看数据库中的表:

show tables;


查看表中的数据:

select * from user;

posted @ 2020-04-24 20:42  哇唔  阅读(175)  评论(0编辑  收藏  举报