返回

CNSSrecruit

没时间了真的没时间了救命

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,半成品(谁知道还会不会继续研究呢)在这里

遇到的问题

Nginx 的玄学问题

giscus 的问题

众多不熟悉 hugo 本身的问题其实这个里面几乎没写我之前遇到的,因为建站完都一周多了我才写这个……

以及……?Undefined problem()

不过所幸也是开起来啦

以后这 blog 就成记事板了~

git use

复习一下,没啥说的(只会看着 source tree 用 TAT)

docker series

下一步决定进军 docker 。

docker run 1!

本部分依然位于 wsl 的 Ubuntu 下运行。

任务内容

就很莫名其妙就跑起来了我说实话(

因为 我甚至都没有去配置更多的加速网站……

后话

我不想说我这几天的坐牢经历

学习 docker compose

按照菜鸟教程的指示,先跑起来才是硬道理(

alt text
alt text

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

事后的一些排查

长夜如此温柔,我该用什么把你留住


© Licensed Under CC BY-NC-SA 4.0


蜀ICP备2024113293号