首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
276 阅读
2
iStoreOS上使用WireGuard
213 阅读
3
麒麟KylinV10离线下载安装包及安装
210 阅读
4
麒麟v10系统openssh升级OpenSSH_10.0p2-OpenSSL 3.4.2
77 阅读
5
UNRAID增加和缩小虚拟机虚拟磁盘大小
64 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
硬件
登录
Search
标签搜索
nginx
数据库
unraid
PVE
麒麟
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
奥黛丽·逐爱者
累计撰写
132
篇文章
累计收到
7
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
硬件
页面
Linux常用
docker常用
关于
搜索到
132
篇与
奥黛丽·逐爱者
的结果
2025-06-25
通过Dockerfile创建海量数据库VastbaseG100的docker镜像
1.Dockerfile文件内容FROM centos:centos8 LABEL maintainer="xh" COPY Vastbase-G100-installer-2.2_Build15\(17408\)-kylin_v10sp2-x86_64-no_mot-20231221.tar.gz /opt COPY db_install.rsp /opt COPY docker-entrypoint.sh /opt RUN set -x \ && cd /etc/yum.repos.d/ \ && mv CentOS-Linux-AppStream.repo CentOS-Linux-AppStream.repo.back \ && curl -o ./CentOS-Linux-AppStream.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo \ && mv CentOS-Linux-BaseOS.repo CentOS-Linux-BaseOS.repo.back \ && cp CentOS-Linux-AppStream.repo CentOS-Linux-BaseOS.repo \ && yum clean all \ && yum makecache \ && yum install -y zlib-devel libaio libuuid readline-devel krb5-libs libicu libxslt tcl perl openldap pam openssl-devel libxml2 bzip2 net-tools gettext which glibc-langpack-en \ && echo "RemoveIPC=no" >> /etc/systemd/logind.conf \ && echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service \ && cd /usr/lib64/ \ && ln -sv libreadline.so libreadline.so.8 \ && useradd -m vastbase \ && echo 'vastbase:Tong@123' | chpasswd \ && mkdir -p /soft/vb \ && mv /opt/Vastbase-G100-installer-2.2_Build15\(17408\)-kylin_v10sp2-x86_64-no_mot-20231221.tar.gz /soft/vb/ \ && mv /opt/db_install.rsp /soft/vb/ \ && mv /opt/docker-entrypoint.sh /soft/vb/ \ && cd /soft/vb \ && tar -xvf Vastbase-G100-installer-2.2_Build15\(17408\)-kylin_v10sp2-x86_64-no_mot-20231221.tar.gz \ && chown -R vastbase:vastbase /soft/vb/ \ && chmod -R 775 /soft/vb/ USER vastbase RUN set -x \ && echo "export LC_ALL=en_US.utf8" >> /home/vastbase/.bashrc \ && source /home/vastbase/.bashrc \ && cd /soft/vb/vastbase-installer/ \ && ./vastbase_installer --silent -responseFile /soft/vb/db_install.rsp \ && echo "host all all 192.168.22.0/24 sha256" >> /home/vastbase/data/vastbase/pg_hba.conf \ && echo "host all all 10.10.81.0/24 sha256" >> /home/vastbase/data/vastbase/pg_hba.conf \ && rm /soft/vb/Vastbase-G100-installer-2.2_Build15\(17408\)-kylin_v10sp2-x86_64-no_mot-20231221.tar.gz ENTRYPOINT ["/soft/vb/docker-entrypoint.sh"] EXPOSE 5432 2.db_install.rsp文件内容vastbase_password=Aa123456 encryption_key=Aa123456 vastbase_home=/home/vastbase/local/vastbase vastbase_data=/home/vastbase/data/vastbase port=5432 max_connections=50 shared_buffers=128 db_compatibility=A isinitdb=true3.docker-entrypoint.sh文件内容#!/bin/bash set -e whoami ls -al /home/vastbase source /home/vastbase/.bashrc echo "sourced vastbase bashrc" vb_ctl start tail -f /dev/null 4.获取海量数据库安装包文件参考文末网盘链接5.将上述4个文件上传到已经装有docker的服务器的同一个目录下6.执行构建命令docker build -t thankwhite/vastbase_g100:2.2.15 .7.本文所需所有文件网盘下载地址仅供学习使用链接:https://pan.baidu.com/s/1VoINht-X-F5i950im-6slA提取码:2nqq2024年10月28日更新:由于网络问题,我现在不能把镜像推送到docker hub仓库,从官方仓库拉取镜像也有一些问题,所以把镜像导出为tar包放在百度网盘上,如有需要可以上传到服务器用docker load -i 命令导入镜像。镜像tar包的文件名为:vastbase_g100_2.2.15_build20241027.tar如何启动并连接数据库,请参考:https://www.cnblogs.com/lambdadog/p/18184202EOF本文作者: 年迈的魔法师本文链接: https://www.cnblogs.com/lambdadog/p/18184261关于博主: 评论和私信会在第一时间回复。或者直接私信我。版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一
2025年06月25日
10 阅读
0 评论
0 点赞
2025-06-24
构建基于Tomcat 9.0.106和JDK 8的Docker镜像
构建基于Tomcat 9.0.106和JDK 8的Docker镜像使用 Tomcat 自带的默认 ROOT 应用(包含 Tomcat 默认页面)主要变更说明:合并了apt-get update操作:将基础工具安装和wkhtmltopdf安装的apt-get update合并,减少镜像层数添加了wkhtmltopdf安装步骤:下载官方0.12.6版本的deb包安装deb包创建必要的符号链接添加了验证命令保留了原有结构:JDK和Tomcat的安装方式保持不变FROM ubuntu:20.04 ENV JAVA_HOME /usr/local/jdk1.8.0_441 ENV CATALINA_HOME /usr/local/tomcat ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin # 安装基础工具和wkhtmltopdf依赖 RUN apt-get update && \ apt-get install -y wget xfonts-75dpi xfonts-base libjpeg-turbo8 fontconfig && \ rm -rf /var/lib/apt/lists/* # 安装JDK COPY jdk-8u441-linux-x64.tar.gz /tmp/ RUN tar -xzf /tmp/jdk-8u441-linux-x64.tar.gz -C /usr/local/ && \ rm /tmp/jdk-8u441-linux-x64.tar.gz # 安装Tomcat RUN wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.106/bin/apache-tomcat-9.0.106.tar.gz && \ tar -xzf apache-tomcat-9.0.106.tar.gz -C /usr/local/ && \ mv /usr/local/apache-tomcat-9.0.106 /usr/local/tomcat && \ rm apache-tomcat-9.0.106.tar.gz # 安装wkhtmltopdf RUN apt-get update && \ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb && \ apt-get install -y ./wkhtmltox_0.12.6-1.focal_amd64.deb && \ rm wkhtmltox_0.12.6-1.focal_amd64.deb && \ ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf && \ ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage && \ rm -rf /var/lib/apt/lists/* # 验证安装 RUN wkhtmltopdf --version EXPOSE 8080 CMD ["catalina.sh", "run"]第一版FROM ubuntu:20.04 ENV JAVA_HOME /usr/local/jdk1.8.0_441 ENV CATALINA_HOME /usr/local/tomcat ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin RUN apt-get update && \ apt-get install -y wget && \ rm -rf /var/lib/apt/lists/* COPY jdk-8u441-linux-x64.tar.gz /tmp/ RUN tar -xzf /tmp/jdk-8u441-linux-x64.tar.gz -C /usr/local/ && \ rm /tmp/jdk-8u441-linux-x64.tar.gz RUN wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.106/bin/apache-tomcat-9.0.106.tar.gz && \ tar -xzf apache-tomcat-9.0.106.tar.gz -C /usr/local/ && \ mv /usr/local/apache-tomcat-9.0.106 /usr/local/tomcat && \ rm apache-tomcat-9.0.106.tar.gz EXPOSE 8080 CMD ["catalina.sh", "run"]
2025年06月24日
15 阅读
0 评论
0 点赞
2025-06-24
python Dockerfile构建(含中文字体支持)
基于 python:3.10.11-slim 构建带依赖的 Docker 镜像FROM python:3.10.11-slim WORKDIR /app # 安装系统依赖(使用小写包名,并确保正确换行) RUN apt-get update && apt-get install -y --no-install-recommends \ wkhtmltopdf \ fonts-liberation \ fonts-wqy-zenhei \ xfonts-75dpi \ xfonts-base \ libaio1 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 复制wheel文件 COPY wheels/*.whl /tmp/wheels/ # 设置pip不警告root用户 ENV PIP_ROOT_USER_ACTION=ignore # 安装Python依赖 RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir \ /tmp/wheels/werkzeug-3.1.3-py3-none-any.whl \ /tmp/wheels/urllib3-2.4.0-py3-none-any.whl \ /tmp/wheels/requests-2.32.3-py3-none-any.whl \ /tmp/wheels/pdfkit-1.0.0-py3-none-any.whl \ /tmp/wheels/jinja2-3.1.6-py3-none-any.whl \ /tmp/wheels/itsdangerous-2.2.0-py3-none-any.whl \ /tmp/wheels/idna-3.10-py3-none-any.whl \ /tmp/wheels/flask-3.1.1-py3-none-any.whl \ /tmp/wheels/colorama-0.4.6-py2.py3-none-any.whl \ /tmp/wheels/click-8.2.0-py3-none-any.whl \ /tmp/wheels/certifi-2025.4.26-py3-none-any.whl \ /tmp/wheels/blinker-1.9.0-py3-none-any.whl \ psutil==7.0.0 \ MarkupSafe==3.0.2 \ charset-normalizer==3.4.2 \ cx_Oracle==8.3.0 # 验证字体安装 RUN fc-list :lang=zh # 验证wkhtmltopdf RUN wkhtmltopdf --version ENV PYTHONUNBUFFERED=1 CMD ["python"]
2025年06月24日
11 阅读
0 评论
0 点赞
2025-06-23
比lukcy更好用?专业docker 反代/监控/安全/导航!极空间部署「搞东西」反代
大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享自己的数码玩耍经验~折腾了数十款NAS和数百个Docker容器项目,关注我,每日获得docker玩法如果喜欢本文,请下方点击免费的点赞、在看!🔺玩法汇总:公众号首页,左下角点击教程合集项目均来源互联网,如有侵权,后台私信联系删除新发现的神器!一个端口搞定全部docker反代和单点登录,自带发现容器、导航面板。最近,在github又发现一个好东西——GoDoxy。它是一款轻量级、简单且高性能的 WebUI 反向代理工具。不过这玩意儿没有中文名,根据GoDoxy,我就给取了个「搞东西」的“信雅达"名称,大家权当看个乐儿。不同于目前主流的反代工具,GoDoxy具有如下几个特点,真的可以说是八项全能!唯一的缺点就是英文界面,不过用上浏览器翻译,那是毫无问题。项目地址(值得star):https://github.com/yusing/godoxy项目特点:1.读取docker.sock,并自动发现所有容器入口。2.通过一个域名,将所有容器反代,支持SSO单点登录。3.支持多节点部署。4.支持ACL访问控制,支持国家、时区、IP的访问策略。5.自动化更新SSL证书。6.拥有容器状态和流量监控。7.支持HTTP/HTTPS/TCP/UDP反代和端口转换。8.自动生成容器导航栏。 9.支持X86和ARM架构。一、项目部署1、配置域名这里先说一下GoDoxy的逻辑,它不同于寻常的反代工具,让我们自定义一个三级域名:端口的形式来访问,它是一套全自动的反代工具,有点类似一个SSO,在所有容器前自动加一层代理面板。互联网通过访问我们设置的GoDoxy域名,来访问所有的容器服务,并且我们只需要透出GoDoxy的一个HTTPS端口,就可以实现所有器的访问,生成的容器域名是容器名.domain.exm:端口PS.部分容器涉及到URL后缀的,需要手动增加后缀,比如blossom。因此,我们需要先创建一个DNS解析,解析到下面两个域名。其中泛域名是用于容器访问使用,而GoDoxy域名是用于WebUI登录。1️⃣泛域名: *.domain.top2️⃣GoDoxy域名:godoxy.domain.top ——前缀可改这里,很多人不喜欢godoxy这个域名前缀,这是可以改的,不过改了以后需要去修改根目录下的.env文件。首先,下载最新exe格式的压缩包解压,然后把生成的文件夹丢到极空间的个人空间里。建议采用常规的/路径/docker/项目的方式来管理。打包夸克:pan.quark.cn/s/27fcaa38eb67 🔻修改.env文件第72行,这里的参数GODOXY_FRONTEND_ALIASES改成你自己设置的域名前缀即可。🔻修改.env文件第52、53行,这里是我改的应用访问端口,也可以根据自己的情况修改。接着打开极空间的DDNS服务,根据自己的需要配置对应的DNS解析服务。这里以阿里云为例,点击上方蓝字登录阿里云获取Key和Secret,然后在下方增加前面提到的两个域名,保存并更新即可。2、配置文件接着使用极空间的文本编辑器打开目录/godoxy/config/config.yaml文件,主要修改红框内的两个地方(二选一)。本地证书: 即我上面未注释的部分,放你的GoDoxy域名申请下来的本地证书,在/godoxy/certs/目录下,然后在红框内的key_path和cert_path里的XXXX替换成文件名。(可选)建议使用通配符证书,确保都可以打开域名。缺点是非自签的,3个月要换一次。autocert: provider: local key_path: certs/更名.key cert_path: certs/更名.crt Cloudflare证书: 下方大红框内的配置,需要填写你的Cloudflare邮箱账号、域名信息以及auth_token。没啥缺点,首选建议。autocert: provider: cloudflare email: abc@gmail.com # 邮箱账号 domains: # 填写你的域名列表 - "*.domain.com" - "domain.com" options: auth_token: 填写Couldflare API KeyCloudflare Api Token获取方式如下,打开个人配置文件,选择API令牌——创建令牌——自定义令牌。在自定义令牌里,增加SSL和证书的权限保存。令牌只会出现一次,记得保存好备用,否则只能下次更新替换了。3、启动容器打开极空间docker应用,选择Compose标签,新建项目godoxy,在添加方式里选择从本地导入,然后选择目录下的compose.yaml文件。导入以后,我们需要修改所有的环境变量所在位置,点击上方的查询路径按钮,复制godoxy文件夹所在的目录路径。将代码中所有的【极空间路径】中文,替换成复制下来的极空间路径,并创建Compose。如果启动后,发现子容器godoxy一直重启,那么看一下容器的GODOXY_GID和GODOXY_UID两个环境变量是不是0,如果不是的话手动编辑一下改成0即可。二、GoDoxy简介GoDoxy部署完成以后,原则上我们就可以关闭所有非GoDoxy的容器端口了,因为GoDoxy会统一读取docker.sock,并且将所有容器进行反代。直接打开域名https://godoxy.你的域名.你的后缀:38843登录系统,输入账号密码cherry/cherry登录。🔻初始密码,可以在.env的25、26行修改。下面的图片是系统首页,这里展示了宿主机内的所有创建的容器,包括停止和运行中的。并且根据项目内设的规则进行了分类,包括容器管理、媒体、下载、普通docker等。这里所有自动发现的容器都是可以点击的,并且已经反代完成。将鼠标移动到容器前面的名字上,可以看到浮窗里会显示反代后的URL。切换到Config Editor界面,这里是对容器内/config/config.yaml文件的配置。这样我们就不需要去NAS里修改了,直接可以在页面上修改。比较重要的配置包括ACL策略(即黑白名单,支持地区、国家、IP等);PVE控制接入;远程Docker管理;通知;域名匹配等。内容比较多,就不一一介绍了,感兴趣的可以去官方网站研究。Proxies页面展示的所有自动发现的容器,以及它们的端口、状态、启动时间、网络延迟等,只是一个展示。Metrics则是所有容器的服务监控。Docker里是所有容器的列表展示,点开单个容器可以看到具体的容器日志。由于GoDoxy是支持接入远程docker.sock的,所以理论上可以多节点管理任何网络可达的Docker,真正成为时间管理大师。总结这个项目我折腾了有一段时间,因为作者设置了很多安全的参数,缺少一个系统可以启动,但是无法登录也没有报错,加上自己的英文能力不太行,所以可以说是一边摸索一边询问,最后也在作者的帮助下顺利完成了项目部署。整体体验下来,这一套反代工具,集成了安全登录、反代、容器发现、导航面板、容器监控、日志查看、远程容器管理等等功能,不可谓不强大!搭配极空间的DDNS服务、自带浏览器,可以解决我们绝大多数的容器外网访问安全问题,让NAS深度玩法得到更多的保障!
2025年06月23日
15 阅读
0 评论
0 点赞
2025-06-23
Dockerfile最佳实践
使用多阶段构建❌ 错误示范一个常见的错误是在单个阶段中构建所有内容,最终导致构建的镜像中包含所有构建依赖项,特别臃肿。FROM node:22WORKDIR /appCOPY . .RUN npm installRUN npm run buildEXPOSE 3000CMD ["npm", "start"]✅正确做法使用多阶段构建将构建环境与运行时环境分开。# Build stageFROM node:22 AS buildWORKDIR /appCOPY package*.json ./RUN npm installCOPY . .RUN npm run build# Production stageFROM node:22-slimWORKDIR /appCOPY --from=build /app/dist ./distCOPY --from=build /app/package*.json ./RUN npm install --only=productionEXPOSE 3000CMD ["npm", "start"]选择正确的基础镜像❌ 错误示范FROM ubuntu:latestRUN apt-get update && apt-get install -y python3 python3-pipCOPY . /appWORKDIR /appRUN pip install -r requirements.txtCMD ["python3", "app.py"]✅正确做法选择满足您要求的最小基础镜像,查找带有 Docker Hub 官方徽章或已验证发布者标记的基础镜像,因为这些映像往往更安全且维护得更好。FROM python:3.12-slimWORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .CMD ["python", "app.py"]使用固定的镜像版本号❌ 错误示范不要使用像 latest 这样可能会意外更改的镜像版本。FROM node:latestWORKDIR /appCOPY . .RUN npm installCMD ["node", "index.js"]✅正确做法固定到特定镜像版本。FROM node:22.1.0WORKDIR /appCOPY . .RUN npm installCMD ["node", "index.js"]即便使用固定的基础镜像版本,由于安全更新等原因远程仓库存储的镜像也可能会发生改变,如果你不希望这种改变发生,使用哈希摘要版本号来保证镜像不变。FROM node:22.1.0@sha256:12a331df1e31e40b2f37d2524037973908895fb766b8bce742cdf8b1216e5ac2WORKDIR /appCOPY . .RUN npm installCMD ["node", "index.js"]优化镜像层缓存❌ 错误示范不要将频繁变化的文件放在前面。FROM node:22WORKDIR /app# 源代码变化频繁,直接拷贝源代码会导致后续的镜像层缓存失效,构建变慢COPY . .RUN npm installCMD ["npm", "start"]✅正确做法先拷贝包依赖管理文件,如果依赖没有变化,npm install将使用缓存而无需重新下载依赖,加速构建过程。FROM node:22WORKDIR /app# Copy package files firstCOPY package*.json ./# Install dependenciesRUN npm install# Then copy the rest of the codeCOPY . .CMD ["npm", "start"]正确处理apt-get和其他包管理器❌ 错误示范不要将 update 和 install 命令分开,此方法会缓存 apt-get update 结果,这意味着以后的构建可能会安装过时的软件包。FROM ubuntu:24.04RUN apt-get updateRUN apt-get install -y nginxRUN apt-get install -y curl✅正确做法始终将 update 和 install 合并到单个 RUN 指令中。FROM ubuntu:24.04RUN apt-get update && apt-get install -y --no-install-recommends \ nginx \ curl \&& rm -rf /var/lib/apt/lists/*使用.dockerignore排除不必要的文件❌ 错误示范不要将整个项目目录作为构建上下文发送。# Without .dockerignore, everything gets sent to Docker daemon$ docker build -t myapp .✅正确做法创建.dockerignore文件排除不必要的文件,这可以减小构建上下文的大小,加快构建过程,并有助于防止敏感信息泄漏到您的镜像中。.git.github.gitignorenode_modulesnpm-debug.logDockerfile.dockerignore*.md.env**.logcoveragedistbuildtmp不要为环境变量创建多个镜像层❌ 错误示范每个环境变量会生成一个新的镜像层。FROM node:22ENV NODE_ENV=productionENV APP_PORT=3000ENV APP_VERSION=1.2.3✅正确做法FROM node:22# Group related environment variablesENV NODE_ENV=production \ APP_PORT=3000 \ APP_VERSION=1.2.3设置适当的用户❌ 错误示范直接以root用户运行。FROM nginx:alpineCOPY app/ /usr/share/nginx/html# Implicitly runs as rootCMD ["nginx", "-g", "daemon off;"]✅正确做法创建和使用非特权用户。FROM nginx:alpine# Create a non-root userRUN addgroup -g 1000 appgroup && \ adduser -u 1000 -G appgroup -h /home/appuser -D appuser# Configure applicationCOPY --chown=appuser:appgroup app/ /usr/share/nginx/html# For services that need to bind to privileged ports,# start as root then switch to the non-root userUSER appuser# For processes that don't need rootCMD ["nginx", "-g", "daemon off;"]使用WORKDIR而不是RUN cd❌ 错误示范这种方法易出错,难阅读。FROM node:22# Bad practice - using cd commandsRUN cd /opt && mkdir appRUN cd /opt/app && npm init -yCOPY . /opt/app/RUN cd /opt/app && npm installCMD cd /opt/app && npm start✅正确做法使用WORKDIR 指定目录。FROM node:22# Good practice - using WORKDIRWORKDIR /opt/appRUN npm init -yCOPY . .RUN npm installCMD ["npm", "start"]
2025年06月23日
8 阅读
0 评论
0 点赞
1
...
9
10
11
...
27