有了 docker 后大家还会安装本地版本吗?
买来的服务器拿到手第一件事就是装 docker, 之后各种应用&服务都会通过 docker 或者 compose 跑,比如 nextjs 项目,nginx, mysql ,redis 等等。不过有些时候,应用比较小,举个例子,比如就一个单 js 文件的群机器人代码,用 docker 还要写 Dockerfile, 还要打 tag, push, pull, 如果涉及外部文件可能还得配置环境变量.env ,volume 挂载等等,一套操作下来也挺麻烦,尤其有时候境内服务器还拉不下来 dockerhub 里的 image 。这种情况大伙是否会选择在服务器本地 apt install nodejs 。然后直接用 pm2 来跑得了,快捷方便。缺点就是有服务器洁癖的会觉得有点不舒服吧。
要不试试 docker-compose
还是不行上上 k8s ?
用 nodejs 的基础镜像,把 js 文件挂载进去跑就行了,免得打镜像了
不打包 docker image ,使用 nodejs 镜像生成容器运行
docker run --rm -it -v "$(pwd):/app" -w /app node node test.js
可以跑个青龙面板,有简易的代码在线编辑,跑点 nodejs 和 python 的小脚本挺好用的
小内存的机器我选择自己装 node ,docker 根本跑不起来,本质上只是梯子服务器冗余资源再利用
如果接入 internet ,当然是用 docker ,安全啊
网上很多入侵案例,用 docker 的只需对容器 down 和 up 一下,如果本机安装就要重装系统工作量超大的。
很多开源项目或多或少有 bug ,有些常用的开源项目很容易被入侵的。
- 选 base image 尽量选 debian 别选 alpine 。因为 alpine 基于 busybox 有 nc 、wget 、ping 等黑客入侵时做跳板用工具; debian 基础镜像没有 curl 、wget 、ping 等工具,入侵会困难很多,软件兼容性也好。(这条有点反常识,但是很关键)
如果项目开 tcp 端口支持 unix socket ,可以把项目容器设置成无网卡,通过 volume 将 unix socket 文件夹分享给 nginx 、frp 的前置应用,黑客入侵到项目容器感知到的就是一个黑洞洞的孤立世界。 如果项目不支持 unix socket ,也可以将项目容器配置成无网卡,tcp 端口绑定到容器 127.0.0.1 ,然后使用 socat 转化成 unix socket
#8 这段能不能展开讲讲
如果项目开 tcp 端口支持 unix socket ,可以把项目容器设置成无网卡,通过 volume 将 unix socket 文件夹分享给 nginx 、frp 的前置应用,黑客入侵到项目容器感知到的就是一个黑洞洞的孤立世界。 如果项目不支持 unix socket ,也可以将项目容器配置成无网卡,tcp 端口绑定到容器 127.0.0.1 ,然后使用 socat 转化成 unix socket
500M 1CPU ,就问你怎么刀吧。 #6 256MB 内存的小 vps 就能很完美的跑 docker ce 了 #9 展开讲一下:容器无网卡用 unix socket 通讯
举一个示例: 前置 nginx 接 python flask 的 web(GUNICORN),nginx 和 flask 都使用容器部署,flask 容器从绑定 tcp:5002 改成无网卡绑定/run/unix-socket/flask/flask.sock 。如果 flask 要访问 mysql 之类的,mysql 开启 unix socket 然后 volume 给 flask 容器即可。
flask 容器的 compose 文件原来配置是:
environment:
- GUNICORN_CMD_ARGS=-w 8 -b 0.0.0.0:5002 -k gevent
改成:
network_mode: none
environment:
- GUNICORN_CMD_ARGS=-w 8 -b unix:/run/unix-socket/flask/flask.sock -k gevent
volumes:
- /run/unix-socket/flask:/run/unix-socket/flask
nginx 容器的 compose 文件加入:
volumes:
- /run/unix-socket/flask:/run/unix-socket/flask
nginx 的网站配置从:
proxy_pass flaskcontainer1:5002/;
改成:
proxy_pass unix:/run/unix-socket/flask/flask.sock:/;
(语法:nginx 的 url 域名部分替换成 unix:/run/unix-socket/flask/flask.sock)
如果黑客入侵了 flask 容器,感知到的就是一个无网卡的黑洞洞的孤立世界。
某个服务用 systemctl 、journalctl 操作起来比 docker 方便的时候就不用 docker
小鸡不只内存小, 硬盘也小, 每 1G 都要扣扣搜搜的用...拉个几十到 200M 的镜像, 真不如直接本地安装
#14 点了点了。小鸡只有网速好,其他都一般,刚刚让 gpt 教我如何清理 10G 磁盘空间
#进入根目录,查找占用最大的文件和目录
du -h --max-depth=1 /
# 删除旧的日志文件
sudo find /var/log -type f -mtime +30 -delete
# 综合清理所有未使用资源(包括镜像、容器、卷和缓存)
docker system prune -a --volumes -f
docker 很好的解决了有些软件在你硬盘上随地拉屎的问题
会,比如 nginx ,一般都是直接装,docker 版本最多做一个测试环境,并且 Linux 的内核作为一个 part 很明显可见(不仅内核,其他模块都是这样),这个就对运维就很方便,不像 windows ,不仅有服务,还有注册表,还有 VC 库,.net 库,补丁等等,这个还只是针对应用程序,如果涉及驱动,更加恶心。
如果服务在本地配置比较复杂(要装数据库、配置 systemctl 等,而且还会容易污染宿主机环境,比如 gitea ),我会用 docker ,比较方便。如果是简单的 JS 脚本,我不会专门弄 docker 容器运行。docker 本来就是为了方便搭建环境的,像 nodejs 环境安装其实不复杂,我是用 nvm 管理 nodejs 的。
我基本上都是用 docker 了。
我觉得,docker 一个是环境隔离安全点,另一个是 docker compose 和 Dockerfile
能一定程度上代替部署文档。文档可能会没有及时更新变得不正确,但是这俩文件不会错。
能 docker 全 docker 。
Java 、PHP 、Node 、.NET……各种基础镜像都做好,然后就是简单写个 Dockerfile ,就做一件事,把代码或打包好的东西 ADD 进去。然后交给 Jenkins 就行了。
可以开一个 debian 的容器跑,主要是方便环境隔离
很早以前就想写一篇和面试相关的文章了,今天在网络上看到一篇关于如何去面试程序员的英文文章,发现其中有很多和我共鸣的东西,所以仿照其标题通过自己的经历写下了这篇文章。 工作这么多…
摘要:在看SDO的一些规范文档,可能会出现open content这样的词组,上网查了相关资料,发现这是一种XML Schema的模型,本文就描述了XML Schema的Ope…
我自已有台 j4105 电脑,发现开一个 QQ ,每天十几个群都有消息,还有微信聊天工具,谷歌浏览器开 15 个窗口,CPU 就经常 80%了,再配合一个 todesk 远程控…