2020系统综合实验 第2次实践作业

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

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

一、pull nginx

sudo docker pull nginx

二、修改 default.conf文件

原先的文件,listen 端口为80 root 地址为默认的

修改后

三、编写Dockerfile文件

在同一个目录文件下,编写Dockerfile文件(D要大写)

FROM nginx

MAINTAINER sayoko

COPY default.conf /etc/nginx/conf.d/

COPY index.html /home/nginx-web/

WORKDIR /home/nginx-web/

EXPOSE 5000

四、随便准备一个index.html文件

准备就绪

五、构建镜像

sudo docker build -t sxnnginx .

构建成功

六、运行实验一下

docker run --name myfirstng -d -p 5010:5000 sxnnginx

浏览器进入映射的5010端口,查看到文件。

七、踩过的坑

一开始其实我不是这么做的,就差了一点点,可能是目录没写对的问题,或者是没有index.html文件的问题(这个可能性很小),总之我遇到了如图

居然居然有2.604GB?你是什么妖怪!但是它总而言之还是成功了对吧,然后我就开始随手实验了一下

也很顺利的进来了,但是它很有毒,我在容器下输exit也退不出去,百度了一下什么ctrl+P+Q,也根本没用,它就卡死在这里了,在docker ps里看,也是好好运行的,点开网页,却是连接失败,然后我又尝试改了一下构建的命令(还是改了Dockerfile我也忘了),然后还是不行。

我又去百度了一下出现这个的原因,发现应该是Dockerfile的问题,工作目录以及index文件,然后删掉又重新写了一编,就成功啦!

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

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

一、pull mysql 5.7

上一个nginx的做的比较久(人比较蠢),中间看见群里的大佬们踩坑mysql的版本问题,虽然不知道为什么会这样但还是装5.7的吧!

sudo docker pull mysql:5.7

二、准备Dockerfile、privileges.sql、setup.sh、schema.sql

说实话我一开始根本不知道怎么做,不知道那些是用来干什么的,然后学习大佬后,大概看懂一点了。

MYSQL_ALLOW_ENPTY_PASSWORD 要修改成no

将三个文件复制进来

运行setup.sh。

三、构建镜像

sudo docker build -t mysqlfirst .

四、实验一下

sudo docker run --name mysql1 -p 3306:3306 -d mysqlfirst

实验成功,出现了学号姓名。

五、小结

周六开始研究Dockerfile,一开始我甚至以为他是个命令(。),然后看了很多博客,菜鸟教程以及b站的视频,了解了它的编写规则之类的,在实验的过程中,暴露了我很多问题,比如对linux 不熟悉,比如vi编辑,进入编辑页面后傻傻操作了很久都不会用,然后通过百度逐渐上手了一点,虽然最后还是选择在外面直接输。。还有就是在家网不怎么好,很心酸QAQ。还顺便稍微看了一下脚本文件的一些基础东西,大概就这样了。

原文地址:https://www.cnblogs.com/sayoko/p/12762379.html