Ops之始_玩玩 Linux
Blog_on_Your_Own_Server
我为什么要选它作为第二题哇我真是够了。一开始,我就是从魔改版的 stack 开始的部署与调试,我讨厌官方的 stack 文档(恼
提前叠盾,如果有哪些和您的认知不符合,那就是我完全没有花时间,以及纯粹的菜。
纯吐槽
我不知道该怎么说这个东西
我其实两下就搞明白 nginx 的静态网页代理了,我其实挺熟悉服务器的,我其实都摸清楚 toml 配置文件的相关事情了,但是
我选择了一个全英文文档、有着无限可能的 下限极低的主题。
我真的是服了我的眼力见了。
原选择:stack
它其实没做错什么,就是我纯粹的太蠢了,拿它入门。这个东西提供了 nothing,所有的配置文件都需要自己写,不仅如此,它也没有填充 default 文件(甚至文件目录都不初始化全,需要在配置文件里面写),导致 Nginx 反反复复地给我报错,我一度怀疑我的脑袋里进了什么水。
可能你觉得也没什么吧,但是,它的配置文件是两个走向:一个单独的文件,应对单个网站;一个文件夹应对多个网站。ok,它后面的例子全部都是后者,很遗憾我没有及时果断地跑路,在这上面酣眠了三天,做出了一个惨不忍睹的 demo,最终才如梦初醒地
跑路
转到了对新手更友好的 stack毕竟人总是有惰性的(bushi)终于有中文看了呜呜呜机翻的屎我实在是不想吃了……
*可能通用的信息:在静态网站中,根目录实际上是生成之前的 stastic 目录,
学会了: toml 的文件结构(虽然很不光荣地转到其他地方(指 yaml)去了)
在做的事情
添加 favicon 到结构之中去:放到 /stastic 下并且在 config.yaml 里面将 favicon 冒号后改为 /favicon.png (对的你没看错就是 png 我也惊呆了)
开启代码高亮:highlight
设置博客头像:在 /assets/img 里面的 avatar.png
修改背景颜色:位置:assets\scss\variables.scss
--body-background: #f6f6f6;
指定首页分类标签颜色:位置:content\categories
,创建分类同名文件夹后,在文件夹内创建_index.md
文件,写入 frontmatter
学习目录结构ing,半成品(谁知道还会不会继续研究呢)在这里
遇到的问题
众多不熟悉 hugo 本身的问题其实这个里面几乎没写我之前遇到的,因为建站完都一周多了我才写这个……
以及……?Undefined problem()
不过所幸也是开起来啦
以后这 blog 就成记事板了~
git use
复习一下,没啥说的(只会看着 source tree 用 TAT)
docker series
下一步决定进军 docker 。
docker run 1!
本部分依然位于 wsl 的 Ubuntu 下运行。
任务内容
就很莫名其妙就跑起来了我说实话(
因为 我甚至都没有去配置更多的加速网站……
后话
我不想说我这几天的坐牢经历了
学习 docker compose
OK 现在再进一步学习其中的内容((
从 dockerfile 入手
dockerfile 如下:
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
第一行指定的是基础镜像 第二行把当前目录添加到 /code 目录 第三行把容器的工作目录设置为 /code 第四行下载依赖 第五行把容器的启动命令改为 python app.py
可以明白实际上它就是通过镜像提供了一个环境,把代码丢进了这个环境里面,然后把容器的启动命令改掉,使得程序能够按照给定的代码执行一定的逻辑。
docker-compose.yml 则是管理里面的东西有什么。并且用一些东西组织起来,便于管理。
那么最简单的一个样例,可以自己搓一个
有一点需要注意,对 dockerfile 的修改每次都需要重新构建依次才能生效。
docker run 2!
确实是,与镜像的构建过程有关。(不过怎么样才算拿到 flag 啊)
镜像的构建过程
镜像的构建过程实际上就是一个堆高高的方法。构建不会对原层进行修改,而是选择往上面堆一个层,保证针对修改的层,有一个更高的能够覆盖掉。因此删除操作其实并不是删除,而是在上面叠加的一个东西,告诉你已经删除。
这个样子干当然有坏处,镜像文件可能非常的臃肿,但是也有好处,便于迅速摸出来这个镜像()
查看镜像的构建过程
可以使用命令 docker history
去查看它的层。这里对 pull 下来的镜像做这个操作,输出如下
IMAGE CREATED CREATED BY SIZE COMMENT
aa9437bf92cd 15 months ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
<missing> 15 months ago /bin/sh -c rm -rf /tmp/flag 0B
<missing> 15 months ago /bin/sh -c #(nop) ADD file:5e673d87c14219442… 31B
<missing> 2 years ago /bin/sh -c #(nop) CMD ["sh"] 0B
<missing> 2 years ago /bin/sh -c #(nop) ADD file:7edb4d0af355de4ed… 1.24MB
(该怎么让 created by 显示完整啊qwq)
(写个备注咯:docker history --no-trunc <image-name>
)
(实际上这一部分应该是逆向的一部分,还在学)
那么显然就找到 flag 了(
用 docker run -it --rm syrinka/hello /bin/sh
摸到容器里面去,去看看目录呢
?怎么没有(
没有 id 真能逆向回来吗?(目移
感谢 AnZhai 提供的宝贵思路,我选择直接从 linux 下直接去找相关的信息,反正可以无脑 su root 没有我做不到的事情(笑
docker inspect syrinka/hello
找到相关路径:
"Data": {
"LowerDir": "/var/lib/docker/overlay2/0fc1965336a04fa84d68b5328e0cd1ecefbf7a76de6c389ae7e31aa24f9eeb70/diff:/var/lib/docker/overlay2/fd77ee72a4c60f4812cc1c2c84bee491c5eea30e36cdf8a1c6051cce782acd8e/diff",
"MergedDir": "/var/lib/docker/overlay2/0439f3666aa9ee2be6ef9d8aee91c720ca7e919d672a72dec37ccd28d84fb044/merged",
"UpperDir": "/var/lib/docker/overlay2/0439f3666aa9ee2be6ef9d8aee91c720ca7e919d672a72dec37ccd28d84fb044/diff",
"WorkDir": "/var/lib/docker/overlay2/0439f3666aa9ee2be6ef9d8aee91c720ca7e919d672a72dec37ccd28d84fb044/work"
},
然后我就非常果断地去翻镜像的相关的文件夹,然后在那一堆文件夹里面翻过来翻过去……但是又仍然没有结果…………
不是凭什么啊???
我打开了我尘封已久的 VMware,新下 docker,导入打包的 syrinka/hello 镜像,然后 inspect 一下文件的位置,发现在 /var/snap/docker/common/var-lib-docker/overlay2/
下如约出现了一堆 sha256,一切正常然后我就把 flag给摸出来了qwq