普通视图

发现新文章,点击刷新页面。
昨天以前首页

梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理

2025年3月7日 04:50

回国的时候最麻烦就是访问国外的网站:邮箱、油管视频等。在中国大陆,翻墙是违法的,但是好像在上海北京等大城市,可以申请许可,比如一些国际驻公司和政府机构因需要则可以申请绕过大墙网GFW/Great Firewall。

翻墙/建梯子的方式很多种,怕麻烦可以买现成的VPN,自己有服务器的可以建Wireguard等。这里再介绍一种简单的方式。

Docker容器里跑火狐FireFox浏览器

假设你的主机/服务器/VPS里已经装有Docker。只需要把下面的脚本存成一个BASH文件,比如 docker-firefox.sh 然后在命令行下跑:./docker-firefox.sh PASS 其中PASS是密码,这个我们下面要用到,PASS如果不写的话则要把 “-e VNC_PASSWORD=” 那行删掉即可。

#!/bin/bash
VNC_PASS=$1

docker run -itd \
    --restart always \
    --name=firefox \
    -p 5800:5800 \
    -v $(pwd)/config:/config:rw \
    --shm-size 1g \
    -e ENABLE_CJK_FONT=1 \
    -e VNC_PASSWORD=${VNC_PASS} \
    jlesage/firefox

等一会儿,这时候Docker会去拉取这个软件镜像,然后完事即可在浏览器里把你的 域名/IP地址 后加上5800端口, 5800是上面脚本里指定的,也可以改成你想要的端口。

docker-firefox-pull-image 梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理 I.T. 小技巧 技术 服务器 计算机 资讯 运维

输入这个脚本命令Docker就会加载容器 jlesage/firefox

这样跑起来了,你的主机就相当于一个中转/代理,你在国内的时候访问你的主机(如果你主机没被大墙网拉入黑名单的话),那你就可以在浏览器里的内嵌FireFox浏览器里打开其它国外网站了。

firefox-docker-on-browser 梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理 I.T. 小技巧 技术 服务器 计算机 资讯 运维

在浏览器里输入服务器IP/域名(HTTP)后加上 :5800 端口号 还需要输入刚刚指定的密码。

使用体验

可能是和我的主机配置有关,总觉得有点卡。不是很流畅。还有就是我想登陆我的GMAIL帐号,被GOOGLE认定有风险,要我改密码,吓得我只能作罢。

试了一下,看了一个油管广告,没有声音,所以通过这个技巧看油管视频是不现实的。

还有就是,目前只支持HTTP,而不支持HTTPS,如果域名开启了HSTS,那只能通过IP来访问HTTP。不过,你可以通过nginx/apache设置一个反代 reverse proxy 来访问HTTPS。

比如以下是在Nginx服务器配置443端口重新转向到这个FireFox代理:

server {
    listen 443 ssl;
    server_name domain_name

    ssl_certificate /root/fullchain.cer;
    ssl_certificate_key /root/key.key;

    location / {
        proxy_pass https://your-server-ip:5800;
        proxy_ssl_verify off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这玩意不适合日常工作,但是回国用于救急还是可以的。特别是不想在公共电脑上留下痕迹,只需要用强密码+HTTPS。等不需要用的时候记得把Docker容器删除即可。

docker stop firefox
docker rm -f firefox

这个没法支持多用户,也就是说多个用户同时登陆看到的是同一个窗口。

jlesage-firefox-in-docker-browser-scaled 梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理 I.T. 小技巧 技术 服务器 计算机 资讯 运维

测试可以在浏览器里打开谷歌

可以使用:docker logs -f firefox 来查看窗口的相关信息:

[init ] container is starting…
[cont-env ] loading container environment variables…
[cont-env ] APP_NAME: loading…
[cont-env ] APP_VERSION: loading…
[cont-env ] DISPLAY: executing…
[cont-env ] DISPLAY: terminated successfully.
[cont-env ] DISPLAY: loading…
[cont-env ] DOCKER_IMAGE_PLATFORM: loading…
[cont-env ] DOCKER_IMAGE_VERSION: loading…
[cont-env ] EGL_LOG_LEVEL: executing…
[cont-env ] EGL_LOG_LEVEL: terminated successfully.
[cont-env ] EGL_LOG_LEVEL: loading…
[cont-env ] GSK_RENDERER: executing…
[cont-env ] GSK_RENDERER: terminated successfully.
[cont-env ] GSK_RENDERER: loading…
[cont-env ] GTK2_RC_FILES: executing…
[cont-env ] GTK2_RC_FILES: terminated successfully.
[cont-env ] GTK2_RC_FILES: not setting variable.
[cont-env ] GTK_THEME: executing…
[cont-env ] GTK_THEME: terminated successfully.
[cont-env ] GTK_THEME: not setting variable.
[cont-env ] HOME: loading…
[cont-env ] LIBGL_DRIVERS_PATH: executing…
[cont-env ] LIBGL_DRIVERS_PATH: terminated successfully.
[cont-env ] LIBGL_DRIVERS_PATH: not setting variable.
[cont-env ] PULSE_CONFIG_PATH: executing…
[cont-env ] PULSE_CONFIG_PATH: terminated successfully.
[cont-env ] PULSE_CONFIG_PATH: not setting variable.
[cont-env ] PULSE_COOKIE: executing…
[cont-env ] PULSE_COOKIE: terminated successfully.
[cont-env ] PULSE_COOKIE: not setting variable.
[cont-env ] PULSE_SERVER: executing…
[cont-env ] PULSE_SERVER: terminated successfully.
[cont-env ] PULSE_SERVER: not setting variable.
[cont-env ] QT_STYLE_OVERRIDE: executing…
[cont-env ] QT_STYLE_OVERRIDE: terminated successfully.
[cont-env ] QT_STYLE_OVERRIDE: not setting variable.
[cont-env ] TAKE_CONFIG_OWNERSHIP: loading…
[cont-env ] XDG_CACHE_HOME: loading…
[cont-env ] XDG_CONFIG_HOME: loading…
[cont-env ] XDG_DATA_HOME: loading…
[cont-env ] XDG_RUNTIME_DIR: loading…
[cont-env ] XDG_STATE_HOME: loading…
[cont-env ] container environment variables initialized.
[cont-secrets] loading container secrets…
[cont-secrets] container secrets loaded.
[cont-init ] executing container initialization scripts…
[cont-init ] 10-certs.sh: executing…
[cont-init ] 10-certs.sh: terminated successfully.
[cont-init ] 10-check-app-niceness.sh: executing…
[cont-init ] 10-check-app-niceness.sh: terminated successfully.
[cont-init ] 10-clean-logmonitor-states.sh: executing…
[cont-init ] 10-clean-logmonitor-states.sh: terminated successfully.
[cont-init ] 10-clean-tmp-dir.sh: executing…
[cont-init ] 10-clean-tmp-dir.sh: terminated successfully.
[cont-init ] 10-fontconfig-cache-dir.sh: executing…
[cont-init ] 10-fontconfig-cache-dir.sh: terminated successfully.
[cont-init ] 10-init-users.sh: executing…
[cont-init ] 10-init-users.sh: terminated successfully.
[cont-init ] 10-nginx.sh: executing…
[cont-init ] 10-nginx.sh: terminated successfully.
[cont-init ] 10-openbox.sh: executing…
[cont-init ] 10-openbox.sh: terminated successfully.
[cont-init ] 10-pkgs-mirror.sh: executing…
[cont-init ] 10-pkgs-mirror.sh: terminated successfully.
[cont-init ] 10-pulse.sh: executing…
[cont-init ] 10-pulse.sh: terminated successfully.
[cont-init ] 10-set-tmp-dir-perms.sh: executing…
[cont-init ] 10-set-tmp-dir-perms.sh: terminated successfully.
[cont-init ] 10-vnc-password.sh: executing…
[cont-init ] 10-vnc-password.sh: creating VNC password file from environment variable…
[cont-init ] 10-vnc-password.sh: terminated successfully.
[cont-init ] 10-web-data.sh: executing…
[cont-init ] 10-web-data.sh: terminated successfully.
[cont-init ] 10-webauth.sh: executing…
[cont-init ] 10-webauth.sh: terminated successfully.
[cont-init ] 10-x11-unix.sh: executing…
[cont-init ] 10-x11-unix.sh: terminated successfully.
[cont-init ] 10-xdg-runtime-dir.sh: executing…
[cont-init ] 10-xdg-runtime-dir.sh: terminated successfully.
[cont-init ] 15-cjk-font.sh: executing…
[cont-init ] 15-cjk-font.sh: installing CJK font…
[cont-init ] 15-cjk-font.sh: fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
[cont-init ] 15-cjk-font.sh: fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
[cont-init ] 15-cjk-font.sh: (1/1) Installing font-wqy-zenhei (0.9.45-r3)
[cont-init ] 15-cjk-font.sh: Executing fontconfig-2.15.0-r1.trigger
[cont-init ] 15-cjk-font.sh: Executing mkfontscale-1.2.3-r1.trigger
[cont-init ] 15-cjk-font.sh: OK: 694 MiB in 168 packages
[cont-init ] 15-cjk-font.sh: terminated successfully.
[cont-init ] 15-install-pkgs.sh: executing…
[cont-init ] 15-install-pkgs.sh: terminated successfully.
[cont-init ] 55-check-snd.sh: executing…
[cont-init ] 55-check-snd.sh: sound not supported: device /dev/snd not exposed to the container.
[cont-init ] 55-check-snd.sh: terminated successfully.
[cont-init ] 55-firefox.sh: executing…
[cont-init ] 55-firefox.sh: terminated successfully.
[cont-init ] 56-firefox-set-prefs-from-env.sh: executing…
[cont-init ] 56-firefox-set-prefs-from-env.sh: terminated successfully.
[cont-init ] 85-take-config-ownership.sh: executing…
[cont-init ] 85-take-config-ownership.sh: terminated successfully.
[cont-init ] 89-info.sh: executing…
╭――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╮
│ │
│ Application: Firefox │
│ Application Version: 135.0-r0 │
│ Docker Image Version: 25.02.2 │
│ Docker Image Platform: linux/amd64 │
│ │
╰――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╯

有用简单的IT小技巧

英文:Using Docker to Run Firefox as a Proxy: A Simple Solution for Accessing Blocked Websites in China

本文一共 804 个汉字, 你数一下对不对.
梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理 I.T. 小技巧 技术 服务器 计算机 资讯 运维
The post 梯子/翻墙技巧: 一条命令就可以在服务器上设置一个Firefox/火狐浏览器代理 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 出租房子的教训: 让中介找人上门换一个水龙头竟然要204英镑! 我老婆在剑桥Bar Hill有一套出租房/Buy to Let,但她不想管理。每次房子出问题需要修理时,中介都会联系我。有房子出租闹心的事情真是多,真的印证了那句话:操着卖白粉的心,挣着卖白菜的钱!每次最怕的就是接到中介的电话,因为一有电话就意味着房子有问题要修/要花钱了。 几天前,中介打电话来说,租户反映厨房水龙头打开时有奇怪的声音,挺吓人的。我当时回复他们说我会找个水管工/Plumber第二天过去看看。但挂了电话后,我联系了我认识的中国装修师傅。他手艺很好,在英国生活了几十年,以前帮我家做过不少装修。不过他这次没时间,也不太愿意接这种小活。 前两年这个师傅给我们家换地板,翻新三个厕所,还有就是阳光房地板,门前加建了个Porch等,最近房子也在重新折腾装修,之后弄完再详细说说。 我懒得在网上(比如 MyBuilder.com)再找其他人,就让中介安排了他们自己的工人。 后来,中介回电说水管工已经在房子里了,并报价修理费为170英镑,加上VAT税后(20%)一共204英镑。如果不修,也要付140英镑的上门费,加税后差不多168英镑。觉得价格有点高,但也只能咬牙同意了。 其实让我不爽的是自己为了省事,最后只能任人宰割。老外只要上门就收钱,我当时虽让中介确认报价,但没问上门费的问题,现在骑虎难下。听说中介找的合同工都比较贵。 那个房子一共让中介找过四五次人修房子(各种问题:上次厨房水管堵了,被收了400多英镑,据说水管工花了三小时通下水道),主要是因为这次我认识的师傅没时间。其实我还认识另一个会修房子的中国人,这样看来,以后可能不会再让中介找人了。 去年冬天,因为恶劣天气,房子顶有一小块掉了,中介找人报价要1800英镑,还好我没同意。后来找了个中国师傅,才花了350英镑,而且当时有Landlord保险还全额报销了。 PS:我发了封邮件给中介小小抱怨了一下。 Hi there,...
  2. 真正意义上的鼓励优秀作品 – 优秀被错过文章 有奖励啦! 大家都知道我的日报第一项就是 《那些优秀可能被错过的文章》这个算法是通过我自己的认识选出一些比较 好的文章 但是收益却比较低, 那么, 通过 @dailychina 天天回复, 比如: 对于作者来说, 除了心理得到表扬之外 并没啥卵用, 是吧. 而且有些作者经常上榜啊, 于是,...
  3. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  4. 一行代码修改引起的血案 – (二) 上一篇说到乱改了一行代码引来的错误, 自己也检讨了一下. 以下已经同事同意: 看了XX在群里发的内容 http://coolshell.cn/articles/4576.html,然后到 http://thread.gmane.org/gmane.linux.kernel/1124982/focus=1126216 仔细看了Linus Torvalds发的邮件,受益匪浅,摘了几段内容附在了 < how to fix bug.xls > 中....
  5. 逻辑题 – 帽子是黑的还是白的? 老婆每天晚上都会打开一个 智力测试的 APP 然后 有一天就问我这么一道智力题. 有三顶白色帽子 两顶黑色帽子. 有三个人被蒙着眼睛 然后随机的被戴上帽子 其中剩下的两顶就放在隔壁屋 每个人只能看到其他两人帽子的颜色 并不知道自己头顶上帽子的颜色. 每个人只有一次猜对的机会 不能互相交谈 已知第一个人看到其他两个人头顶上的颜色是白色...
  6. 使用AWK来看见证人生成块的速度 每次见证人出块, 媳妇总我说 “又生了”. 每次出块我总会去算一下离上次出块多少时间, 这是可以通过当前块数和上次出块数算出来的. 首先, 我们可以通过 docker logs 来显示很多很多的记录: 有一个脚本 ./run.sh logs是显示最近几条记录 (tail) 我们可以通过管道...
  7. STEEM API 系列之获取货币转换 STEEMIT 有 SBD, STEEM, STEEM POWER 还有 VESTS这几个概念. 时不时, 我们就需要知道它们之间几个转换关系: 1个STEEM等于多少SBD? 1个SBD 等于多少STEEM? 1个SP等于多少VESTS? 1M的VESTS...
  8. 测试 Crontab 是否工作的PHP脚本 LINUX 下的 crontab 是用来定时运行 程序任务的工具. 当然你需要简单配置一下 一般是通过 crontab -e 命令 来编辑. 如果你想简单知道 是否配置正确 和任务实际上会被调用的频率 你可以通过下面简单的PHP脚本来实现....

使用 SlimToolkit 打造更小的容器镜像

2025年2月20日 00:00

现在容器技术很火,镜像又肥又大,部署较慢不说,安全风险还蹭蹭往上窜,简直让人头大!SlimToolkit 就像一位经验老道的镜像瘦身大师,能把镜像体积缩小到令人咋舌的程度,最多能瘦 30 倍!

到底是啥

简单来说,SlimToolkit 就是一个开源的镜像减肥专家,它能智能分析镜像,找出那些又大又没用的文件、库和依赖,然后干净利落地咔嚓下,统统删掉!

就像一位技艺精湛的雕塑家,将冗余的部分精雕细琢,留下最精髓的部分。

之前叫 DockerSlim,现在已经是云原生计算基金会沙盒项目了,实力是杠杠的!

它的核心思想就是原封不动优化,通过动态、静态分析,自动识别并移除镜像里垃圾文件。

支持 Docker 以及 Kubernetes,各种类云原生工具,妥妥全能选手!

不只瘦身,还可以提供命令行工具,方便检查、调试、管理镜像,简直贴心到家!

SlimToolkit 的绝活

  1. 镜像瘦身大法:这是它的看家本领!它能像一位经验丰富的裁缝,精准剪裁镜像,去除冗余部分。如一个基于 Ubuntu 的 Python 应用,原本约 438MB,经过它的一通操作,能瘦到 16.8MB,足足瘦了 26 倍!

  2. 安全防护专家:它不仅能瘦身,还可以增强安全性!它可以自动生成 Seccomp 和 AppArmor 安全配置文件,像给容器穿上了一层坚不可摧的盔甲,限制系统调用,防止各种安全漏洞入侵。再也不用担心容器被黑客攻破了!

  3. 动态分析、调试:它就像一位经验丰富的侦探,可以创建一个临时容器模拟运行环境,通过 HTTP 探针等方式收集运行数据,分析应用程序行为,确保瘦身后的镜像依然可以正常工作。而且,它还提供调试工具,在优化后的容器中运行调试命令,排查问题方便!

  4. 无缝集成:它就像一位老练的管家,能无缝集成到开发和部署流程中。不用改动 Dockerfile 或构建工具,只需在构建过程中添加 SlimToolkit 的优化步骤即可。还支持各种 CI/CD 工具,如 Jenkins、GitHub Actions 等,自动化部署 so easy!

上手玩转

先安装 SlimToolkit。SlimToolkit 提供了多种安装方式,含直接下载二进制文件、使用脚本安装或通过 Docker 运行。对于大多数的用户,使用脚本安装是最简单方式:

1
curl -sL https://raw.githubusercontent.com/slimtoolkit/slim/master/scripts/install-slim.sh | sudo -E bash -

优化容器镜像。假设已经有一个 Docker 镜像,如一个基于 Python 的 Web 应用。可使用以下命令对镜像进行优化:

1
slim build my/sample-python-app

SlimToolkit 会自动创建一个临时容器,运行动态分析,并生成优化后镜像。优化后的镜像名称会自动加上.slim 后缀,例如:

1
my/sample-python-app.slim

验证优化效果。优化完成后可以使用以下命令查看优化后镜像大小:

1
docker images

SlimToolkit 的优势

  1. 自动与智能化:它能够自动识别容器中不必要的部分,并且进行优化,无需开发者手动修改 Dockerfile 或者删除文件。这种自动化不仅节省了时间,还减少了人为错误的可能性。

  2. 安全:通过生成 Seccomp 和 AppArmor 的配置文件,SlimToolkit 为容器提供了额外的安全保障。这些配置文件能够限制容器系统调用,防止潜在安全威胁,而无需开发者深入了解安全框架细节。

  3. 无缝集成:SlimToolkit 设计目标是无缝集成到现有的开发和部署流程中。它支持多种容器运行时和 CI/CD 工具,能够轻松集成到自动化构建和部署流程中。开发者无需改变现有的工具链或工作流程,即可享受 SlimToolkit 带来的优化效果。

  4. 开源:完全开源,社区活跃,有问必答!

FAST OS DOCKER 容器管理器的安装与使用

2024年6月20日 00:00

今天给小伙伴们分享一款来自于国人大佬开发的一款 Docker 的图形化管理工具,原生中文支持,拥有 Portainer 的大多功能,且界面更简洁好看,适合国人审美。

工具简介

FAST OS DOCKER 和 Portainer 差不多,是一款 Docker 的图形化管理工具。

可为用户提供总览、本地容器管理、远程镜像拉取、主机磁盘映射、服务器网络管理等功能,基本能满足中小型单位对容器管理的全部需求。

工具优点

无需复杂命令,全图形化操作,基本上只需要懂一点点的 Docker 常识就能轻松构建容器。

界面直观简洁,对应功能也是一目了然,那怕新手小白也能快速上手。

FAST OS DOCKER 的后端语言是 Go,前端框架是 Vue,且拥有全面的权限管理机制。

为防止服务器负载过高,进行底层性能优化,较适合 NAS 这种入门级服务器部署安装。且集成 Docker 镜像应用市场,可直接快速安装和部署。

安装步骤

连接服务器后,切换至 root 权限,运行如下命令:

1
2
3
4
docker run --name fastos \
--restart always -p 8081:8081 -p 8082:8082 -e TZ="Asia/Shanghai" -d \
-v /var/run/docker.sock:/var/run/docker.sock -v /etc/docker/:/etc/docker/ \
-v /root/data:/fast/data -e FAST_STORE=http://8.210.124.47:8080 wangbinxingkong/fast:latest

安装完成后在浏览器访问 http://IP:8081。首次登录需要注册,注册成功即可正常使用:

简易教程

主机 Docker 情况总览页,查看硬件配置,Docker 文件安装根目录,主机系统,容器数量,镜像数量,数据卷以及网络环境等配置:

可在镜像菜单处理镜像相关操作:

选择默认简单模式,输入镜像名可拉取镜像:

也可选择高级模式,输入 fromImage=php:7.3.5-fpm&fromSrc=daocloud.io/library/nginx:1.17.8 类似格式字符可拉取镜像:

或者选择搜索模式,搜索后再拉取:

进入数据卷菜单页,删除或添加数据卷:

进入网络菜单,设置网络,添加网络:

进入容器菜单,可实现对容器的增删查改等操作,还可查看日志,监控容器,控制台连接容器等:

进入登记菜单,可以登记第三方私人镜像库,登记后可拉取私人仓库镜像:

进入集群菜单,可连接其它服务器,操作其它服务器的容器,镜像:

DockerUI 容器管理器的安装与使用

2024年6月11日 00:00

本教程给大家带来 DockerUI 的部署方法,通过 DockerUI 我们可以很方便的创建高权限的 Docker 应用,或者随时将配置文件目录挂载到我们的容器中,再通过容器终端去修改配置文件,只要一直保留 DockerUI 不删除,则完全没有后顾之忧了。

介绍

DockerUI 是一个易于使用且轻量级的 docker 管理工具。通过 Web 界面的操作,它方便不熟悉 Docker 指令的用户更快地进入 Docker 世界。

DockerUI 具有易于使用的界面。它不需记住 Docker 指令。只需下载镜像即可完成部署。根据 Docker 的功能,镜像的版本可以直接在 DockerUI 中更新。使用相同设置,可通过重新部署和替换容器,且可以使用最新版本的功能。

DockerUI 覆盖了绝大多数命令功能。通过可视化操作功能在 DockerUI 接口中提供 Docker 环境和 Swarm 管理和维护功能,可以很容易地执行集群环境。

DockerUI 是用于 Docker 容器映像可视化图形管理工具。Dockerui 可用于轻松构建、管理并维护 Docker 环境。它是完全开源和免费的。基于容器安装方法,可实现方便高效的部署。

安装

启动容器「如本地无镜像,则会自动拉取」并映射 8999 端口:

1
docker container run --rm --name docker.ui -v /var/run/docker.sock:/var/run/docker.sock -p 8999:8999 joinsunsoft/docker.ui

容器启动后访问 http://localhost:8999 即可,默认用户名和密码为 dockerui

截图

主页:

镜像列表:

搜索存储库及拉取镜像:

构建镜像:

导出/导入镜像:

推送镜像:

启用映像:

容器列表:

Web 控制台:

容器文件系统:

容器统计:

列出容器进程:

从容器中导出文件:

网络管理:

Swarm 集群管理器:

创建服务:

任务管理:

任务列表:

注意

本教程绿联和群晖同样适用,但是 DockerUI 作者已经不再维护了,所以可以选择《Potainer 容器管理器的安装与使用

DockerUI 虽不再维护,但只是作为一个高权限 Docker 部署或者配置文件目录挂载使用的话已经绰绰有余了。

Potainer 容器管理器的安装与使用

2024年6月5日 00:00

Potainer 是一个轻量级容器管理器,它提供了一种简单而高效的方式来管理 Docker 容器。本篇教程简单介绍 Potainer 的特点、安装过程以及使用示例,如有问题欢迎在评论区留言!

工具特点

  1. 简单易用。Potainer 具有直观的用户界面,使得容器管理变得更加容易,即使对于没有 Docker 经验的用户也能快速上手;

  2. 快速部署。通过 Potainer 可快速部署新的容器,节省了时间和精力;

  3. 资源监控。它提供了对容器资源使用情况的监控,有助于更好地管理系统资源;

  4. 可视管理。Potainer 提供了可视化的界面,可以直观地查看容器的状态和日志等信息。

安装过程

首先,需要确保系统已经安装了 Docker。可通过以下命令来检查是否安装了 Docker。若未安装,可以参考《Docker 的安装》一文:

1
docker --version

接下来使用以下命令安装 Potainer:

1
docker pull potainer/potainer

安装完成后可以通过以下命令启动 Potainer:

1
docker run -d -p 9000:9000 --name potainer potainer/potainer

启动后可以在浏览器中访问下面链接来打开 Potainer 界面:

1
http://localhost:9000

使用示例

登录 Potainer 界面后,将看到一个容器的列表,显示了当前运行的容器。

要创建一个新容器,可点击 Create Container 按钮,填写相关信息,例如容器名称、镜像与端口映射等。

还可以查看容器的详细信息,包括日志和资源使用情况等。可点击相应的容器,在右侧面板中可查看其详细信息。

如需要停止或删除容器,只需点击相应操作按钮即可。

效果截图

登录后的效果如下:

容器除了 Docker 还有 Podman

2023年6月22日 00:00

了解杜老师的小伙伴都知道,杜老师非常喜欢用 Docker 来部署相关服务。但可能有些小伙伴不太清楚,容器除了 Docker 还有 Podman,今天杜老师为大家简单介绍下 Podman。

什么是 Podman

Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台使用。Podman 提供与 Docker 非常相似的功能。它不需要在系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。

Podman 可管理和运行任何符合 OCI 规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。

主要区别

  1. Docker 在实现 OCI 的时候,需要一个守护进程,其次需要以 root 运行,因此也带来了安全隐患;

  2. Podman 不需要守护程序,不需要 root 用户运行,从逻辑架构上,比 Docker 更加合理;

  3. 在 Docker 的运行体系中,需要多个 daemon 才能调用到 OCI 的实现;

  4. 在容器管理链路中,Docker Engine 实现就是 dockerd;

  5. dockerd 调用 containerd,containerd 调用 containerd-shim。顾名思义 shim 起的作用也就是避免父进程退出影响容器的运行;

  6. Podman 直接调用 OCI,通过 common 作为容器进程的管理工具,但不需要 dockerd 这种以 root 身份运行的守护进程;

  7. Podman 体系中,有个称为 common 的守护进程,运行路径通常是 /usr/libexec/Podman/conmon,它是各个容器进程的父进程,每个容器各有一个,common 的父进程通常是 1 号进程。Podman 中的 common 其实相当于 Docker 体系的 containerd-shim;
    图片

  8. Podman 不需要守护进程,而 Docker 需要守护进程。

使用区别

  1. Podman 的定位也是与 Docker 兼容,因此在使用上面尽量靠近 Docker。使用方面,可以分成两个方面来说,一是系统构建者的角度,二是使用者的角度;

  2. 在系统构建者方面,Podman 的默认软件,与 Docker 区别不大,只在进程模型、进程关系方面有所区别。如果习惯 Docker 几个关联进程的调试方法,在 Podman 中则需要适应。总体来看,Podman 比 Docker 要简单。由于 Podman 比 Docker 少了一层 daemon,因此重启的机制也就不同了;

  3. 在使用者方面,Podman 与 Docker 的命令基本兼容,都包括容器运行时、本地镜像、镜像仓库几个方面。因此 Podman 命令行工具与 Docker 类似,比如构建镜像、启停容器;

  4. Docker/Podman 可进行替换。因此,即便使用了 Podman,仍然可使用 Docker 作为镜像仓库,这也是兼容性最关键的部分。

常用命令

容器相关命令如下:

命令作用
podman run创建启动容器
podman start启动容器
podman ps查看容器
podman stop终止容器
podman restart重启容器
podman exec进入容器
podman export导出容器
podman import导入容器快照
podman rm删除容器
podman logs查看日志

镜像相关命令如下:

命令作用
podman search检索镜像
podman pull获取镜像
podman images列出镜像
podman rmi删除镜像
podman save导出镜像
podman load导入镜像

Docker 限制 CPU 内存使用

2022年8月24日 00:00

默认情况下容器可以无限制地使用主机的 CPU 和内存资源,可通过设置参数来进行限制。下面说说 Docker 如何限制 CPU 内存使用!

Docker 限制 CPU 使用

  • --cpus=VALUE

限制容器可使用多少 CPU,可设置为小数,如可以设置--cpus=1.5。该选项代表使用 CPU 的百分比,而不是具体的个数。例如主机一共有四个 CPU,设--cpus=2,不代表两个 CPU 被 100%占用,另外两个完全空闲,可能四个 CPU 各被占用 50%。

  • --cpu-period=VALUE

指定 CFS 的周期,通常和--cpu-quota=VALUE 一起使用,单位毫秒。默认是 100 毫秒,但大多用户一般不会改变这个值,使用--cpus=VALUE 更方便。

  • --cpu-quota=VALUE

指定容器在一个 CFS 调度周期中可使用 CPU 的时间,单位毫秒。通常和--cpu-period=VALUE 一起使用,一般使用--cpus=VALUE 更方便。

  • --cpuset-cpus=VALUE

限制容器可以使用指定的 CPU。如果有多个 CPU,可以以逗号分隔或者使用连字符进行指定。

  • --cpu-shares=VALUE

容器使用 CPU 的权重,默认是1024,不设置或者将其设置为 0 都将使用默认值,数值越大权重越大。这是个软限制,只有 CPU 资源不足时才会生效。当 CPU 的资源充足时,各个容器可在不超过资源限制的条件下使用 CPU 资源;当 CPU 资源不足,并有多个容器竞争 CPU 资源时,系统会根据每个容器的权值和所有容器权值的比例来给容器分配 CPU 的使用时间,如果器 A 设置为--cpu-shares=2048,容器 B 设置 --cpu-shares=1024,则容器 A 会被分配约 66%的 CPU 时间,容器 B 被分配约 33%的 CPU 时间。

  • --cap-add=sys_nice

赋予容器 CAP_SYS_NICE 的能力,允许容器增加进程的友好值、设置实时调度策略、设置 CPU 亲和性和其它的操作。

  • --cpu-rt-runtime=VALUE

在 Docker 守护进程的实时调度程序周期内,容器可以实时优先级运行的最长时间,单位毫毛,必须设置了--cap-add=sys_nice 参数才能使用。

  • --ulimit rtprio=VALUE

允许容器设置的最大实时优先级,必须设置了--cap-add=sys_nice 参数才能使用。

限制内存使用

  • --memory=VALUE

内存限制,最小值 6M。

  • --memory-swap=VALUE

内存加交换分区的限制,只有设置了--memory=VALUE 之后,这个参数才有意义。如--memory=300m --memory-swap=1g,那么容器可使用 300M 的内存和 700M 的交换分区;如设置的数值和--memory=VALUE 一样,那么容器无法使用交换分区;如果该值没有设置,容器最多可以使用和--memory=VALUE 一样大的交换分区;如果该值设置为 0,等于没有设置;如果设置为-1,可以使用的交换分区大小无限制。

  • --memory-swappiness=VALUE

默认情况下容器的内核可交换出一定比例的匿名页,此参数用来设置可用的比例。数值在 0-100 之间,0 代表关闭匿名页交换,100 表示所有匿名页都可交换。如果没有设置该值,该值默认从父进程继承而来。

  • --memory-reservation=VALUE

是种软性限制,确保容器不会长时间占用超过--memory-reservation=VALUE 限制内存大小,但不保证时时刻刻都不超过该限制值。该值比--memory=VALUE 小时,在主机内存资源紧张时,会强迫容器内存占用不超过该值;在没有设置时,该值和--memory=VALUE 的值相同;将其设置为 0 或者大于--memory=VALUE 时,等于没有设置。

  • --kernel-memory=VALUE

容器可以使用的最大内核内存值,最小值 4M。

  • --oom-kill-disable

默认情况下 OOM 错误发生时,主机会杀死容器进程来获取更多内存。使用该选项可以避免容器进程被杀死,但是应该在设置了--memory=VALUE 参数之后才能使用该选项,不然不会限制容器内存使用,却禁止主机杀死容器的进程,出现 OOM 错误时,系统会杀死主机进程来获取内存。

使用 Docker 搭建我的世界服务器

2021年11月12日 00:00

这几天一直在研究容器,偶尔抽空玩会我的世界,突发奇想:可否通过 Docker 搭建我的世界服务器?今天就来操作下吧!

设备需求

如果只是自己游戏,那主机的配置没啥要求,能进就行。如果是联网大家玩,建议选择 CPU 主频较高的主机,不要考虑多核多线程的问题,目前不管官方还是其它核心,对多线程优化都不够好。

如果更喜欢高版本的小伙伴「如杜老师」建议使用水桶或纸飞机核心,官方核心实在不推荐的!杜老师强烈推荐纸飞机,相比水桶稳定性差一些「偶尔可能报错,但不影响游戏」纸飞机的性能优化还是很明显的,当然还有其它衍生版本,这里就不再推荐了。

下载镜像

1
2
3
4
5
6
7
8
penn@dusays:~$ sudo docker pull minecraftservers/minecraft-server
Using default tag: latest
latest: Pulling from minecraftservers/minecraft-server
476c1ed2267c: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:b279da117768925b4a773176dee5c0e8669e3af2abcca58c11b82a05640c6248
Status: Downloaded newer image for minecraftservers/minecraft-server:latest
docker.io/minecraftservers/minecraft-server:latest

注意:在 Docker Hub 上有很多镜像,大多都是玩家自行创建上传分享。杜老师选了一个版本最新且功能最全的为示例。

存档目录

1
2
3
4
penn@dusays:~$ sudo mkdir -v /data
mkdir: 已创建目录 '/data'
penn@dusays:~$ sudo chmod 777 -c /data
'/data' 的权限模式已由 0755 (rwxr-xr-x) 更改为 0777 (rwxrwxrwx)

注意:创建服务器运行容器前,我们需要先创建好游戏存档目录,并赋予 Docker 访问权限。

创建容器

1
2
3
penn@dusays:~$ sudo docker run -itd --name=mc -v /data:/data -p 25565:25565 \
> -e EULA=TRUE -e VERSION=1.17 -e TYPE=PAPER minecraftservers/minecraft-server
0d3f314da12e2e2d9c59ac3a40a2102507c98c54b7601d1332a6f627ed15a4b2

注意:-e EULA=TRUE 为必须参数,如果不设置将无法正常进入游戏;-e VERSION=1.17 用于指定服务端游戏版本,杜老师用的就是 1.17;-e TYPE=PAPER 为指定核心,优势在前文踢到了。

查看存档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
penn@dusays:~$ ls -l /data
总用量 59068
-rw-rw-r-- 1 penn penn 2 11月 16 18:16 banned-ips.json
-rw-rw-r-- 1 penn penn 2 11月 16 18:16 banned-players.json
-rw-rw-r-- 1 penn penn 1136 11月 16 18:16 bukkit.yml
drwxrwxr-x 2 penn penn 4096 11月 16 18:16 cache
-rw-rw-r-- 1 penn penn 598 11月 16 18:16 commands.yml
-rw-rw-r-- 1 penn penn 65 11月 16 18:15 eula.txt
-rw-rw-r-- 1 penn penn 2576 11月 16 18:16 help.yml
drwxrwxr-x 2 penn penn 4096 11月 16 18:16 logs
-rw-rw-r-- 1 penn penn 2 11月 16 18:16 ops.json
-rw-rw-r-- 1 penn penn 60391784 11月 16 18:16 paper-1.17-79.jar
-rw-rw-r-- 1 penn penn 8604 11月 16 18:17 paper.yml
-rw-rw-r-- 1 penn penn 0 11月 16 18:16 permissions.yml
drwxrwxr-x 3 penn penn 4096 11月 16 18:16 plugins
-rwxr-xr-x 1 penn penn 1220 11月 16 18:16 server.properties
-rw-rw-r-- 1 penn penn 4367 11月 16 18:17 spigot.yml
-rw-rw-r-- 1 penn penn 2 11月 16 18:16 usercache.json
-rw-rw-r-- 1 penn penn 44 11月 16 18:16 version_history.json
-rw-rw-r-- 1 penn penn 2 11月 16 18:16 whitelist.json
drwxrwxr-x 8 penn penn 4096 11月 16 18:17 world
drwxrwxr-x 3 penn penn 4096 11月 16 18:17 world_nether
drwxrwxr-x 3 penn penn 4096 11月 16 18:17 world_the_end

注意:启动容器后稍等会,就会在游戏存档目录中,看到新生成的相关文件,具体作用和配置可自行搜索。

进控制台

如果需要进入到游戏控制台,可以参考如下命令,如需退出按CTRL+C即可:

1
2
sudo docker exec -i mc rcon-cli
>

还有一种进入方式,参考如下命令。进入后没有任何提示符,直接输入指令操作即可。只是退出比较麻烦,需先按CTRL+P,后再按CTRL+Q才行:

1
sudo docker attach mc

什么是 Docker in Docker

2021年11月9日 00:00

Docker 技术目前在 DevOps 中被广泛使用,我们需要将测试或者构建的代码和自动化脚本打包成 Docker 镜像,然后部署在各个运行环境中。

需求背景

而在 CI/CD 中,我们常用一些 CI/CD 服务器,比如 Jenkins 和 GoCD 来构建与部署我们的应用,从而实现 CI/CD 自动化。现在一些 CI/CD 服务器也被 Docker 化运行在真实的物理机上。于是我们需在 CI/CD 服务器的 Docker container 里面来 build 与 run 我们的 Docker 镜像,这就涉及到 Docker in Docker 问题。

一个很自然的想法:我们是不是需要在 CI/CD 服务器镜像中安装一个 Docker Daemon 和 Docker 命令?但是 Docker 里面跑 Docker 总感觉有些蹩脚,额外安装与运行 Docker 无疑增加了 CI/CD 服务器镜像的大小,同时还增加了 Docker 的深度。

实现思路

实际上我们并不需要在 CI/CD 服务器上安装 Docker。通过上面的命令在 CI/CD 服务器上运行我们的镜像:

1
docker run -v /var/run/docker.sock:/var/run/docker.sock

Docker 采取的是 C/S 架构,Docker 的成功运行需要 Docker Daemon 和 Docker Client 的支持,当我们运行一些 docker build 等命令时,实际需要 Docker Client 连接 Docker Daemon 发送命令,Docker Daemon 会在宿主机操作系统分配文件、网络资源:

通过 Watchtower 实现 Docker 容器自动更新

2020年12月12日 00:00

杜老师喜欢使用 Docker 部署轻量级的应用,不过后期维护起来还是挺麻烦的,主要是新版本发布后的更新问题,需停止并删除当前容器,更新版本后使用相同参数再运行。今天介绍一款可以自动更新 Docker 容器的工具!

工具介绍

Watchtower 是一个应用程序,它将监视正在运行的 Docker 容器,并监视这些容器最初从其启动镜像的更改。如果 Watchtower 检测到镜像的版本已更改,它将使用新版镜像自动重新启动容器。

只需要将新镜像推送到 Docker Hub 或自己的镜像注册表,即可更新容器化应用的运行版本。Watchtower 将拉下新版镜像,并正常关闭现有的容器,使用与最初部署时相同的选项重新启动它。

工具使用

只需运行下面命令即可:

1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

如果正在运行的容器比较多,只想监控其中几个容器,可以按照下面命令执行,如 Nginx/MySQL:

1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower nginx mysql

如果不需要 Watchtower 一直监控,而是运行一次即可,可运行下面的命令:

1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once

Watchtower 默认升级新版镜像后,仍保留原版本镜像,如果无需保留,可运行下面的命令:

1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup

Watchtower 默认不会监控停止状态的容器,如果需要一并升级,可运行下面的命令:

1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --include-stopped

Watchtower 默认每 24 小时检查新版本,如果需要修改检查间隔,可运行下面的命令:

1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --interval 86400

LVS 负载均衡服务器

2019年10月28日 00:00

很多人喜欢将服务,安装在一台服务器上面,因为对于运维人员来说,管理起来更为轻松;对于老板来说,成本更加节约。但是随着业务量的增长,往往会出现一台服务器,不能满足访问需求,这时怎么办呢?答案非常简单,两台!

负载问题

比如我们现在就有一台 Web 服务器,它的负载非常高了,如果访客人数增加,它随时有宕机的可能性。这样的话我们就再增加一台 Web 服务器,和之前的一毛一样,就可以帮忙第一台分担点压力了。

那如何分担呢?两种情况:第一种是所有流量,都去找第一台,第一台不行了,再去找第二台;第二种是平均流量,将所有的流量平均到两台服务器上面。

如何解决

第一种的情况不太友好,因为第二台服务器要么在忙,要么闲着,而第一台一直在忙,很不公平;第二种情况就公平很多,平均负载,我们称之负载均衡。

在之后的课程,我们讲解一下,如何通过 LVS 来实现负载均衡。

如何学习 Linux 的性能优化

2019年10月25日 00:00

你是否也跟我一样,看了很多的书、学了很多性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上性能分析和优化始终是大多数软件工程师的一个痛点。但是,面对难题,我们真的就无解吗?

性能指标

优化性能的第一步,一定要先了解“性能指标”这个概念。当看到性能指标时,你会首先想到什么?我相信高并发和响应快一定是最先出现在你脑海里的两个词,而它们也正对应着性能优化的两个核心指标吞吐和延时。这两个指标是从应用负载视角来考察性能,直接影响了产品终端的用户体验。跟它们对应的,是从系统资源的视角出发的指标,比如资源使用率及饱和度等:

思维导图

为了让你对性能有个全面的认识,笔者画了一张思维导图,里面涵盖了大部分性能分析和优化都会包含的知识:

Docker 的常用命令集合

2019年10月20日 00:00

Docker 是一个开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。今天我们就来说下 Docker 的常用命令!

生命周期

指令描述
run创建一个新的容器并且运行一个命令
start启动一个或者多个已经被停止的容器
stop停止一个运行中的容器
restart重启容器
kill杀掉一个运行中的容器
rm删除一个或者多少容器
pause暂停容器中所有的进程
unpause恢复容器中所有的进程
create创建一个新的容器但是不启动它
exec在运行容器中执行命令

容器操作

指令描述
ps列出容器
inspect获取容器、镜像的元数据
top查看容器中运行的进程信息
attach连接到正在运行的容器
events从服务器获取实时事件
logs获取容器日志
wait阻塞运行直到容器停止
export将文件系统作为一个 tar 归档文件导出
port列出指定的容器的端口映射

文件命令

指令描述
commit从容器创建一个新镜像
cp用于容器与主机之间的数据拷贝
diff检查容器里文件结构的更改

镜像仓库

指令描述
login登录到一个 Docker 镜像仓库
pull从镜像仓库中拉取或者更新指定镜像
push将本地镜像上传到镜像仓库
search查找镜像

镜像管理

指令描述
images列出本地镜像
rmi删除本地一个或者多个镜像
tag标记本地镜像
build用于创建镜像
history查看指定镜像创建历史
save将指定镜像保存成归档文件
load导入镜像
import从归档文件中创建镜像

信息版本

指令描述
info显示系统信息
version显示版本信息

Docker 与虚拟机的区别

2019年10月15日 00:00

Docker 是一个开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。虚拟机可以虚拟出一个完成的沙盒化平台,让开发者可以在完全隔离实体机的状态下开发或者运行程序。两者有什么区别呢?

运行架构

上图详解

在上图中,左侧为 VM,右侧为 CONTAINER。

VM 和 CONTAINER 的最底层皆为基础设施服务器。

VM 第二层「倒数」为虚拟化平台,而 CONTAINER 则是主机系统。

VM 第三层运行虚拟系统,在虚拟系统中安装对应服务,最后运行应用。

CONTAINER 第三层则是自身容器,在容器内运行对应服务,及相关的应用。

容器一般会封装类库及应用,无需像虚拟机那样分别搭建。

两则对比

对比表格:

CONTAINERVM
启动速度秒级分钟
运行性能接近原生百分之 95
磁盘占用MBGB
数量成百上千约十几台
隔离能力进程级别系统级别
操作系统只支持 Linux几乎所有
封装程度只打包项目代码和依赖关系完整操作系统

对比详解

CONTAINER 的启动速度极快,几乎是秒级的;VM 则是分钟级,因为要等里面运行的虚拟系统慢慢的启动。

CONTAINER 因为是进程级别运行,几乎是原生级运行性能;VM 是系统内再虚拟系统,所以会有性能耗损。

CONTAINER 占用的资源极小,几百 MB 即可跑一个服务;VM 不用说别的,就单虚拟系统就要几个 GB 了。

CONTAINER 因为占用资源小,故一台服务器运行百个千个不成问题;VM 的资源占用较大,所以一台服务器无法跑太多。

当前的 CONTAINER 内部环境只支持 Linux,所以一些运行在 Windows 的程序无法被封装;VM 则没有任何限制,因为它支持几乎所有的操作系统。

CONTAINER 只能打包项目代码和依赖关系,所以可运行的应用程序有限;VM 可运行完整操作系统,所以理论支持所有应用。

Docker 的安装

2019年10月13日 00:00

Docker 是一个开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何的接口。我们今天就来聊聊如何安装!

兼容平台

Docker 的平台兼容性非常好,就是说它可以运行在多种平台下,如 Windows、Linux 等。

不过其对平台版本,还是有一定要求的,比如 Linux 平台中的 CentOS 系统,新版 Docker 只支持 CentOS7 及最新版本,而 CentOS6 及之前的版本,只能用性能低下的老版本 Docker。

你知道吗?其实运行效率最高的平台并不是 CentOS 而是 Ubuntu!所以会有很多线上业务服务器会选择 Ubuntu 作为其操作系统,这也证明了 Docker 的受欢迎程度。

别看 Docker 可以运行在各种平台,但是运行在 Docker 中的平台只有一种,那就是 Linux。

安装命令

1
2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

注意:如果 yum-config-manager 提示命令没找到,可运行 yum -y install yum-utils 安装。

安装演示

1
2
3
4
systemctl start docker
docker search hello-world
docker pull hello-world
docker run hello-world

注意:这是演示命令,没有太多作用,感兴趣的朋友可以把后三行命令,改成 docker run centos /usr/bin/echo hello-world 试一下!

运行效果

点击播放:

asciicast

在 Docker 中部署 Nextcloud

2019年10月5日 00:00

Nextcloud 是国外一个开源云盘应用,用户可以免费下载安装在服务器终端,随时管理自己数据。不过搭建过程比较繁琐,今天杜老师教大家如何在 Docker 中部署 Nextcloud!

拉取容器

1
docker pull docker.io/nextcloud

创建目录

1
mkdir /nextcloud

启动容器

1
docker run -d --restart=always --name nextcloud -p 80:80 -v /nextcloud:/data docker.io/nextcloud

最终效果

Docker 的介绍

2019年10月4日 00:00

Docker 是一个开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何的接口。

介绍

是一个开源的应用容器引擎,基于 Go 语言并且遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何的接口,更重要的是容器性能开销低。

应用

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其它后台应用。

从头编译或扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

优点

  1. 简化程序:Docker 让开发者可以打包他们的应用及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入 Docker 中进行管理。方便快捷已经是 Docker 最大优势,过去需要用数天乃至数周的任务,在 Docker 容器的处理下,只需数秒就能完成;

  2. 避免选择恐惧:如你有选择恐惧症,还是资深患者。Docker 帮打包你的纠结!比如 Docker 的镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可简化部署多种应用实例工作。如 Web 应用、后台应用、数据库的应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署;

  3. 节省开支:一方面云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

缺点

  1. 增加复杂:随着容器及应用数量的增加,同时也伴随着复杂性的增加在生产环境中管理如此之多的容器是一个极具挑战性的任务,可以使用 Kubernetes 等工具管理有一定规模数量的容器;

  2. 原生支持:大多数的容器技术,如 Docker,相比于在原生 Linux 中运行容器,在 Microsoft 环境中运行容器则略显笨拙;

  3. 不太成熟:容器技术在市场上是较新的技术,还需要时间来适应市场。开发中的可用资源是有限的,如某个开发者陷入某个问题,可能需要花些时间才能解决问题。

男人减速带: 装修垃圾专用大型废物容器 Skip Hire

2024年10月25日 04:56

最近家里搞装修,也就是翻新Renovate,也有很多建筑垃圾,比如房子里拆了两堵墙,处理这些垃圾最好的方法就是租 Skip。否则自己得开车去垃圾回收站,很麻烦,而且还容易把车弄脏。

视频:油管 | B站 | 西瓜 | 小红书 | 微博 | 微信视频 | X/推特

我订的这家是 “Mick George Skip Hire” 我在录像的时候,司机说他们公司在油管上,然后我录完后,他说轮到他了 “My turn now”,因为他需要拍照来证明已经把Skip送到目的地了。

之前不理解为什么叫Skip,我只知道这个词是“跳过”的意思。查了一下:在“skip hire”(租用垃圾箱)的上下文中,“skip”指的是一种大型、敞口的废物容器,专门用于收集和运输碎屑、垃圾或其他废弃物。 “skip”这个词可能来源于古诺尔斯语的“skeppa”,意思是篮子或容器,或者来源于中古英语的“skep”,指的是一种大篮子或容器。随着时间的推移,它演变成了表示一种用于废物处理的特定容器。

“Skip hire”指的是租用这种容器用于临时收集和处理废弃物的过程,通常用于建筑工地、家庭装修或大型清理项目。

In the context of “skip hire,” the word “skip” refers to a large, open-topped waste container designed for collecting and transporting debris, rubbish, or other waste materials. The term “skip” itself likely comes from the old Norse word “skeppa,” meaning a basket or container, or from the Middle English “skep,” which referred to a large basket or container. Over time, it evolved to represent a specific kind of container used in waste disposal.

“Skip hire” refers to the process of renting one of these containers for the temporary collection and disposal of waste, typically used on construction sites, during home renovations, or for large clean-up projects.

Skip hire provides you with a basic container to load your waste into throughout your project. Then when it’s full our collection partners will take it away for safe and legal disposal at a licensed facility.
垃圾箱租赁为您提供一个基本的容器,用于在整个项目期间装载废物。当它装满时,我们的收集合作伙伴会将其运走,并在有执照的设施进行安全合法的处理。

垃圾箱租赁是一种服务,允许您使用大型敞口容器(称为垃圾箱)来处理废物。废物管理公司会将垃圾箱运送到您的位置,您可以在其中装满废物。当垃圾箱装满时,公司会回来取走它并将废物送到设施进行处置、回收或处理。
垃圾箱租赁是一种处理大量废物的便捷方式,例如:一般家庭废物、花园废物、纸张、塑料和家具。

以下是使用垃圾箱租赁的一些好处:
– 节省时间:您不必多次前往垃圾场或回收中心。
– 经济高效:您不必支付燃料费才能到达垃圾场,也不必花时间对废物进行分类、装载和运输。
– 安全和负责任的废物处理:垃圾箱是我们废物管理系统的重要组成部分。

您可以根据废物量选择所需的垃圾箱尺寸。一些常见的垃圾箱尺寸包括:
– 迷你垃圾箱:2 码/1.4 米,适用于一般垃圾和出入受限的区域
– 中型垃圾箱:3 码/2.2 米,适用于一般垃圾、硬核材料和惰性材料
– 标准垃圾箱:6 码/4.6 米,适用于一般垃圾、硬核材料和惰性材料

skip-hire 男人减速带: 装修垃圾专用大型废物容器 Skip Hire 生活 资讯

Skip Hire 垃圾刀租赁服务

家里的装修工程已经快接近尾声,一共租了两次这个垃圾岛,第一次是6号/Yard,搞活动的时候租了14天,204.99英镑(正常要300英镑),不过7天就来收了,第二次加了20英镑左右租了一个8号的,7天来收,不过只需要221.79英镑,反而便宜很多,听装修师傅说,这个也分淡旺季,冬天的时候就会便宜很多。

尺寸还有8号10号的,尺寸越大,租的费用越大,这么大的垃圾箱扔垃圾确实是方便很多。

今天住村里同一条街的一美女遛狗就来敲门,说她家有一个很长的帘子,苦于不好处理,车放不下,能不能放在我的岛里顺便扔了,我说只要放得下就没问题,没一会儿,她回家就把帘子取过来了。

记得前两年家里装修(当时是换地板厕所翻新)也是搞了个Skip,当时还顺便把家里坏掉的自行车放在上面,结果第二天村里有人散步路过,问能否把自行车送给他,我反正都要扔,就给他了。

租垃圾岛/Skip的时候可以选分类,选分类就只能放那种垃圾,所以可能价格会便宜一些,我一般选的是General,就是所有垃圾都可以处理掉。

Skip会送上门,然后在7天后会来取走,人不用在家。

如果没有自己的停车位,需要把垃圾岛放在公共的路上,这时候需要多交七八十英镑的费用向政府申请许可,不过这个交钱即可,一般都是Skip租赁公司会帮你处理好这些表格申请/Paper Work。

skip-hire-2024-10-22-09.15.43-scaled 男人减速带: 装修垃圾专用大型废物容器 Skip Hire 生活 资讯

这个是8号/Yard大小的Skip

Skip Hire:垃圾岛租赁服务,这个吊车会把所有的岛先放到指定位置上,然后再把上面的几个吊走,有没有想起那个汉诺依塔算法?

skip-hire-2024-10-22-09.15.03-scaled 男人减速带: 装修垃圾专用大型废物容器 Skip Hire 生活 资讯

Skip Hire:垃圾岛租赁服务,这个吊车会把所有的岛先放到指定位置上,然后再把上面的几个吊走,有没有想起那个汉诺依塔算法?

很快就装满了建筑装修的垃圾,然后趁着有空间还扔了一些不用的椅子电风扇等。还担心会不会因为装太多就不收了,担心是多余的,本来想着拍一个视频让大家看看是怎么吊走的,不过早上7点多一些车就来把垃圾Skip收走了。看了Ring摄像头,收走的过程干脆利落。

full-skip-2024-10-26-12.54.33-scaled 男人减速带: 装修垃圾专用大型废物容器 Skip Hire 生活 资讯

Skip装满了

本文一共 1522 个汉字, 你数一下对不对.
男人减速带: 装修垃圾专用大型废物容器 Skip Hire. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 男人减速带: 装修垃圾专用大型废物容器 Skip Hire 生活 资讯
The post 男人减速带: 装修垃圾专用大型废物容器 Skip Hire first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. Linux 下的实际内存 2000M 还是 2048M? 昨天破血本升级VPS到了 2G 内存; 然后就无意发现 free -m 命令显示的不是 2048M 1 2 3 4      ...
  4. WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...
  5. 英国谢菲尔得的 PLUSNET 宽带 ADSL 公司租的公寓没有宽带的线,所以装不了VIRGIN宽带.之后等房子买好了需要装宽带,但是等不了那么久没有网络的日子.于是就签了PLUSNET 18个月的合同.前6个月宽带免费(但是每个月有十几镑的电话费).是的,公寓里只能通过电话线, 也就是ADSL来上网, 自然网速无法太快,没法和之前在谢菲尔得(也是公寓)但是有ASK4宽带相比. 之所以签PLUSNET,有一个原因是PLUSNET的总部在谢菲尔有名的西街,当收到PLUSNET的信看着上面SHEFFIELD的地址总会感到亲切.当然还有以下几个原因(好处) 通过TOPCASHBACK返现 36英镑. PLUSNET的网站提供的功能很多,比如可以添加各种ADD-ON,像加一个静态IP每个月只要5英镑,这样的话可以在家里建服务器了.我花了5英镑买了升级版(高级用户)能享受优先的连接(ADSL是通过电话线拔号) PLUSNET客户支持很不错, 周末也上班,像之前没搞清楚,公寓里有好几个扁平的接口, 一直无法上网,后来在电话里客服一直很耐心的指导,总算找出问题(没有电话的话是不用接那个MICRO FILTER,需要直接接入电话口). 买的房子也是有PLUSNET的,到时搬家后可以升级成 80M的光纤.通过BROADBANDCHECKER网站可以查询到. 2016-07-23...
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. 英国HSBC汇丰银行因为房子钢筋结构不肯放贷 上周五看了一个房子, 在剑桥市中心, 价格比同地区的房子便宜许多(几万英镑), 一个很大的原因是房子内部装修较破. 我本想着, 房子内部破无所谓, 反而将来升值空间较大. 房子主要是看地区: 我现在住的相对于剑桥市中心类似于河北相对于北京天安门. 4年前买房的时候并没有那么多钱, 而且时间也比较紧(当时从谢菲到剑桥也就两三个月时间准备), 所以也就选了一个剑桥的村庄里(但一点都不升值! ), 主要是看价格合适, 孩子上学也方便,...
  8. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
❌
❌