首页
Search
1
v2ray异常错误之二
3,310 阅读
2
linux时区设置
2,698 阅读
3
DB2常用操作
2,173 阅读
4
websphere修改jvm内存xmx和xms
1,929 阅读
5
nfs客户端文件属主为nobody的现象
1,552 阅读
技术
生活
运动
游戏
电影
登录
Search
标签搜索
docker
linux
troubleshooting
nginx
secure
truenas
mysql
windows
python
esxi
docker swarm
oracle
zabbix
tomcat
blog
dsm
群晖
rpa
freenas
db
yuc
累计撰写
291
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
运动
游戏
电影
页面
搜索到
22
篇与
的结果
2025-08-02
群晖docker无法删除容器与重建容器失败
问题背景和方案 这个问题与本站的群晖删除文件失败类似,但与之前的现象有一些区别,可以作为整个问题现象的补充 问题一 容器运行正常,但删除容器提示 Error response from daemon: container : driver "btrfs" failed to remove root filesystem 这个问题按照之前的方法处理即可,也可以直接进入提示的目录,删除对应的文件,之后便可以成功删除容器了 问题二 重新创建之前删除的容器,启动提示 no such file or directory. unknown 前面还有一串字符是提示命令的命令 一开始以为是启动命令错误,排查了半天,后来发现最小化参数启动也不行,那么与启动命令无关了,应该是确实找不到对应文件 怀疑是前面删除了btrfs文件导致的,于是干脆删除镜像重新拉取,但又出现了新问题,删除镜像异常快且重新拉取提示很多镜像层 already exists,这种不正常的现象最终也预示了启动失败,错误仍然相同 接下来尝试了清理未使用的镜像和无用数据,结果也都无效果 docker image prune -a docker system prune -a 最后还是按照老办法,删除docker元数据,重建docker
2025年08月02日
2 阅读
0 评论
0 点赞
2025-07-30
typecho的安装部署
安装方式 了解到部署架构与wordpress类似,主要使用 lamp,手动部署还是要一番功夫的。发现有 docker 镜像,所以干脆在 nas 上使用容器来运行了 docker 镜像地址: https://hub.docker.com/r/joyqi/typecho 建议下载稳定版本,目前仍然是 1.2.1 部署过程 typecho部署 主要的部署流程和注意事项如下: 考虑到个人基本上只使用nginx,但 typecho 的 docker 没有直接使用nginx的镜像,所以拉取了 php-fpm 的镜像,然后再部署nginx反向代理 还需要一个mysql数据库,使用mysql8也可以 为了后续便捷的扩展插件、主题等,可以把容器内目录 /app 挂载到本地 启动命令如下: docker run -it -d --name typecho-server -p 9000:9000 \ -e TYPECHO_DB_HOST=192.168.0.10 \ -e TYPECHO_DB_USER=typecho \ -e TYPECHO_DB_PASSWORD=TypeCho_20250717 \ -e TYPECHO_DB_DATABASE=typecho \ -e TYPECHO_SITE_URL=https://yuc.pub:12345 \ -v /volume2/docker/typecho:/app \ joyqi/typecho:1.2.1-php7.4-fpm-alpine 注意:为了使用自建 nginx,所以把 9000 端口映射了出来,一定要做好安全措施,建议防火墙只允许本机访问 nginx部署 启动命令如下: docker run --name nginx -it -d -p 12345:12345 \ -v /volume2/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /volume2/docker/nginx/conf.d:/etc/nginx/conf.d \ -v /volume2/docker/typecho:/app \ nginx:stable-alpine3.21-perl 挂载出默认的配置文件和自定义的配置目录,以支持后续的配置扩展 注意:nginx 的目录一定要和 typecho 的路径一致,否则无法正常访问 nginx的默认配置 user root; events { use epoll; worker_connections 10240; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.p.log main; #error_log logs/error.p.log debug; sendfile on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; proxy_cache_path /etc/nginx/conf.d/cache levels=1:2 keys_zone=my_cache:100m max_size=500m; server_tokens off; } typecho相关的配置 server { listen 12345; server_name www.yuc.pub; root /app/; index index.html index.htm index.php; # gravatar location ^~ /avatar/ { proxy_set_header Host www.gravatar.com; valid_referers none blocked .yuc.pub; if ($invalid_referer) { add_header Cache-Control "no-store"; return 401; } if ($http_referer !~* ^https?://([^/]+\.)?yuc\.pub(:\d+)?(/.*)?$) { add_header Cache-Control "no-store"; return 403; } proxy_cache_valid 200 7d; proxy_max_temp_file_size 10m; if ($args = "") { rewrite ^(.*)$ $1?auth=XXX666 break; } if ($args != "") { rewrite ^(.*)$ $1?$args&auth=XXX666 break; } proxy_cache my_cache; proxy_cache_valid 200 30d; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; add_header X-Cache-Status $upstream_cache_status; proxy_pass https://43.xxx.xxx.xxx; } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } } location ~ .*\.php(\/.*)*$ { include fastcgi.conf; fastcgi_pass 192.168.0.10:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 远程avatar配置 location /avatar { if ($arg_auth != "XXX666" ) { return 401; } rewrite ^/avatar\?auth=.*&?(.*)$ /avatar?$1 last; proxy_set_header Host www.gravatar.com; proxy_pass https://www.gravatar.com; } 配置解析: avatar 段的配置解决了头像在国内无法正常访问,导致的请求缓慢,然后也做了一些安全限制 后续的location配置是 typecho 的配置
2025年07月30日
1 阅读
0 评论
0 点赞
2025-07-14
docker守护进程停止期间保持容器运行
需求背景 默认情况下,当docker守护进程终止时,它将关闭正在运行的容器。比如修改daemon.json的配置、服务异常终止等,这些都会导致docker进程终止或者重启,同时导致所有容器停止或重启,这显然不是我们需要的运维方式和异常处理情况 知道了以上问题的缺陷,那是否有解决方法呢?答案是有的,我们可以配置docker守护进程,使得守护进程不可用时保持容器继续运行。这种功能称为实时恢复,有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间 如何配置 官方参考文档:https://docs.docker.com/engine/daemon/live-restore/ 具体配置方法: 修改配置文件 /etc/docker/daemon.json 增加内容: { "live-restore": true } 重载 docker 使得配置生效 systemctl reload docker 检查配置是否成功 docker info | grep -i live 此时可以重启docker进程而容器不再跟随重启 service docker restart 群晖7.1.1 仅针对群晖7.1.1的配置方法,未在其它版本配置不能确定是否有效 群晖的配置文件不是在 /etc/docker/daemon.json 所以配置这里是不生效的 实际有效的配置文件是 /var/packages/Docker/etc/dockerd.json 修改的内容是一致的,然后重载生效 systemctl reload pkg-Docker-dockerd
2025年07月14日
9 阅读
0 评论
0 点赞
2025-04-22
在X86机器上运行ARM镜像容器
需求背景 某项目提供的环境是基于容器的,无法使用 docker on docker 来运行服务了,所以需要从现有的arm版本容器镜像中提取出指定文件来直接运行 方案分析 短时间购买服务器不太现实,再就是原镜像比较大,大约有 16G,购买一台ARM云主机部署可行,但是上传文件的时间成本不低 所以第二个方案是尝试在现有的X86服务器上运行ARM版本的容器镜像,经过初步的检索,这个方案貌似可行 安装步骤 实现这个需求,主要是通过 qemu 模拟 ARM 来实现,参考文档 https://github.com/multiarch/qemu-user-static/ 安装依赖 # 前提已经安装了 docker,这里直接安装 qemu 相关的依赖包 yum install -y \ qemu-system-arm qemu qemu-user qemu-kvm qemu-kvm-tools libvirt virt-install \ libvirt-python libguestfs-tools-c 运行容器 docker run --rm --privileged multiarch/qemu-user-static --reset # 这个命令会设置宿主机相关配置,让后续ARM相关的程序能够解释执行 $ cat /proc/sys/fs/binfmt_misc/qemu-$arch enabled interpreter /usr/bin/qemu-$arch-static flags: F offset 0 magic 7f454c460201010000000000000000000200b700 mask ffffffffffffff00fffffffffffffffffeffffff # 要保证 interpreter 指定的文件路径存在,如果没有文件则去参考站点下载放入 拉取目标镜像 # 要注意指定 linux/arm64 否则会自动根据宿主机的架构来拉取 docker pull --platform linux/arm64 IMAGE 启动目标镜像 docker run --rm -it -d -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static IMAGE 确定启动状态 # docker容器在运行状态即是成功 docker ps -a 模拟错误 如果出现以下错误,说明并成功模拟成功目的架构: 在启动容器后接任何命令都提示 exec /bin/bash: no such file or directory 报错 exec format error 启动后查看状态是退出
2025年04月22日
6 阅读
0 评论
0 点赞
2024-12-17
docker pull镜像拉取(加速、代理)
问题背景 现在国内已经完全墙了 dockerhub 导致镜像无法正常拉取,除了设置国内的镜像源加速外,以下再介绍两种方式 主流Linux方案 使用 proxychains 这个工具可以让执行的命令走代理 增加docker的代理配置 新增如下文件 mkdir -p /etc/systemd/system/docker.service.d vim /etc/systemd/system/docker.service.d/http-proxy.conf 新增的文件中添加如下内容: [Service] Environment="HTTP_PROXY=http://127.0.0.1:8118" Environment="HTTPS_PROXY=http://127.0.0.1:8118" Environment="NO_PROXY=localhost,127.0.0.1" 重启 docker 进程生效 sudo systemctl daemon-reload sudo systemctl restart docker 群晖方案 群晖无法很好的安装 socks 转 http 协议的工具,如 privoxy,也无法安装 proxychains,那么应该如何解决这个问题? 根据测试的结论,还是使用 systemd,步骤如下: 创建以下目录和文件 /etc/systemd/system/pkg-Docker-dockerd.service.d/http-proxy.conf # 7.1版本的目录,如果是其他版本目录结构不同 2. 文件内增加如下内容: ```sh [Service] Environment="HTTP_PROXY=socks5://127.0.0.1:1086" Environment="HTTPS_PROXY=socks5://127.0.0.1:1086" # 也支持使用 socks5 协议 重启服务生效 systemctl daemon-reload systemctl restart pkg-Docker-dockerd.service 如果修改了代理地址,也需要重启生效,为了减少对运行容器的影响,建议开启 live restore
2024年12月17日
9 阅读
0 评论
0 点赞
1
2
...
5