docker-compose/docker 镜像迁移 | 离线镜像包制作

0.环境说明:

①一台能访问docker.io的机器(机器A)

②需要离线部署镜像的机器(机器B)

③Docker环境

1.镜像打包(A机器):

①登陆A机器,拉取镜像,以badapple9/speedtest-x 为例

docker pull badapple9/speedtest-x

②导出镜像为tar

docker save -o speedtest-x.tar badapple9/speedtest-x

③下载speedtest-x.tar到本地

2.离线部署(B机器):

①登陆B机器,上传speedtest-x.tar

②导入镜像

docker load -i speedtest-x.tar

③验证

docker images | grep badapple9/speedtest-x

3.运行(B机器):

①为speed-x 创建目录,创建docker-compose文件,并写入以下内容:

version: '3.3'
services:
speedtest-x:
image: badapple9/speedtest-x
container_name: speedtest-x
ports:
- "9003:80" # 修改此处的宿主机端口
restart: always

②启动docker容器

docker-compose up -d 

③登陆查看:

浏览器访问youid:9003

Docker部署V2ray+nginx反代上网(1PANEL版)

0.环境说明:

①Debian12

②RAM 2G SSD20G

③ROOT 权限

④域名指向(代理域名指向服务器IP地址)

⑤1Panel面板社区版v1.10.34-lts

(已安装OpenResty,即nginx管理器)

⑥Docker环境

注:使用1panel主要是方便,省去了很多部署工作,这几年用了多款面板,包括BT等,目前还是1PANEL更好用一点。

1.部署站点 :

①假设站点地址为vpn.example.com(如0.④)

在1panel创建NGINX站点:

②注册SSL

在1panel证书里面选择①创建的网站,并选择对应的DNS和ACME账户

这个让它去申请,去完成接下去的步骤

当“申请中”变成正常时,则SSL证书可用

2.NGINX反代配置 :

进入vpn.example.com反向代理目录,

修改……/proxy/文件:

location / {
	proxy_pass https://vpn.example.com/;  
	proxy_redirect off;
	proxy_ssl_server_name on;
	sub_filter_once off;
	sub_filter "vpn.example.com" $server_name;
	proxy_set_header Host "vpn.example.com";
	proxy_set_header Referer $http_referer;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header User-Agent $http_user_agent;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Proto https;
	proxy_set_header Accept-Encoding "";
	proxy_set_header Accept-Language "zh-CN";
}

# 分流反向代理
location /v2ray{
	proxy_redirect off;
	proxy_pass http://127.0.0.1:10086;  # 本地入站端口
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3.安装V2ray(Docker版):

①创建 …/1panel/apps/v2ry 路径

②并在此目录下创建docker-compose.yml文件,并写入以下内容:

version: '3.0'

services:
  v2ray:
    image: v2fly/v2fly-core:latest
    container_name: v2ray
    command: ["run", "-config", "/etc/v2ray/config.json"]
    restart: always
    volumes:
      - ./config.json:/etc/v2ray/config.json
    ports:
      - 127.0.0.1:10086:10086 #2中反代配置端口
    networks:
      - 1panel-network

networks:
    1panel-network:
        external: true

③在终端输入:

cat /proc/sys/kernel/random/uuid

获取到UUID

④同时在当前目录创建config.json文件:

{
  "log": {
    "loglevel": "info",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
  },
  "inbounds": [
    {
      "port": 10086,
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "",#③获取到的ID
            "level": 0,
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/v2ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

⑤终端进入v2ry目录

启动docker镜像

docker-compose up -d

6.为伪装站点绑定证书 :

选择1中创建的站点,绑定证书

7.开启防火墙

在1panel面板→系统→防火墙处添加规则,添加:80、443、其它你的代理端口

8.客户端配置:

①以V2RAY windows版为例:

②输入具体配置信息

其它:

PVE添加lvm-thin-pool创建lvm-thin存储

0.环境说明:

①操作系统:PVE 8.1.3

②硬件配置:空闲磁盘数量大于1

③PVE存储格式说明(引用佛西博客):https://foxi.buduanwang.vip/linux/2044.html/

1.创建LVM-THIN-POOL:

lsblk #列出所有可用块设备
pvcreate /dev/sda  #创建物理卷 
vgcreate thin-pool /dev/sda #创建逻辑卷组 thin-pool 
#若要将多个物理卷加入卷组,则后跟多个物理卷  vgcreate thin-pool /dev/sda /dev/sdb
lvcreate -T thin-pool/data -l +100%FREE #创建逻辑卷,分配卷组空间给逻辑卷

2.在PVE添加LVM-THIN存储:

注意填写存储ID和节点名称

ChatGPT无法访问的解决方法

0.说明

适用于V2ray等工具、软路由

本文只讲方法,不讲原理,原理都可以搜到,不再赘述

1.线路问题

首先在服务端检查能否访问chatgpt

bash <(curl -L -s check.unlock.media)

可以运行如上开源脚本,看到Chatgpt YES ,则确定服务端支持

线路问题则 尝试更换线路,避免使用香港、日本等亚洲节点。

2.浏览器配置问题

关闭 WebRTC  和 QUIC.

这里以 chrome浏览器为例:
访问chrome://flags/

将:

Experimental QUIC protocol

Anonymize local IPs exposed by WebRTC.

两个选项置为disabled

relunch

清除浏览器缓存

3.禁用IPV6(WIN)

(此方法用于PING chatgpt.com 显示地址为IPV6的情况)

在WIN网络适配器中,找到当前链接的IPV6,取消勾选即可

迷你主机安装PVE8.1,开启网络唤醒

0.环境说明:

①操作系统:空,PVE官网下载(直达链接

②硬件配置:AMD 5800H + DDR4 2666 16G *2 + 1T NVME PCIE3.0

③写入工具:rufus 4.4.2013

1.U盘写入:

选择镜像后点击开始,此版本刷PVE会强制使用DD模式,完成后拔出U盘插入主机

2.启动安装:

选择 Install Proxmox (Graphical)

先会在黑屏阶段运行一段时间

后续配置语言、安装位置、网络IP信息等后结束重启

3.开启网络唤醒:

网络唤醒的可以在进入主板时按Del键,将NetStack 置为 Enable

进入系统,输入下面的命令查看ethtool的位置

whereis ethtool 

我这里的位置是/usr/sbin/ethtool

修改/etc/rc.local

/etc/rc.local

为如下内容:

#!/bin/bash
/usr/sbin/ethtool -s enp1s0 wol g
exit 0

其中 /usr/sbin/ethtool 为ethtool地址 , enp1s0 为网卡名称

保存后退出,重启系统

reboot

进入系统后,查看网卡状态

ethtool enp1s0

其中Wake-on: g ,则为开启成功

4.去除订阅提醒:

先删除企业源

rm /etc/apt/sources.list.d/pve-enterprise.list
rm /etc/apt/sources.list.d/ceph.list

安装pvetools

apt dist-upgrade -y 
apt-get update
export LC_ALL=en_US.UTF-8 apt update && apt -y install git && git clone https://github.com/ivanhao/pvetools.git

打开pvetools

cd pvetools/ && ./pvetools.sh 

如图所示,硬件直通,换源,去除订阅都可以在此配置

PVE导入virtualbox镜像

0.环境说明:

①操作系统:PVE7.2-3

②ROOT 权限

③OVA文件

1.上传OVA镜像文件

从网上下载,或者从virtual box 下载到的ova文件

登陆SSH,把下载的ova文件上传PVE,如图test.ova

解压该ova文件

tar -xvf test.ova

2.PVE建立虚拟机

VIMID 为 123 (注意不要和之前的ID冲突即可),操作系统→不使用任何介质,磁盘保持默认即可,CPU、内存和网络根据实际情况进行选择。

3.分离和导入硬盘

在PVE面板选择刚刚创建的虚拟机(123),在硬件选项卡选择硬盘,然后点击分离,然后删除未使用的磁盘。

接下来导入解压后的磁盘。

qm importdisk 123 test-disk001.vmdk local-lvm -format qcow2

其中 123是节点号,test-disk001.vmdk 是 解压后的磁盘名 ,local-lvm 是pve的存储空间名称。

Centos 7 挂载本地iso镜像源(yum)挂载SMB文件夹

0.环境说明:

①操作系统:centos7.9.2009

②ROOT 权限

1.挂载镜像:

mkdir -p /data/iso   #建立镜像上载目录
mkdir -p /mnt/cdrom #建立镜像挂载目录

下载镜像源iso,并上传到上载目录

mount -o loop /data/iso/CentOS-7-x86_64-Everything-2009.iso data/yum/local #临时挂载
vi /etc/fstab #永久挂载,写入下行内容
/data/iso/CentOS-7-x86_64-Everything-2009.iso /mnt/cdrom iso9660 defaults 0 0
vi /etc/yum.repos.d/local.repo  #创建镜像源文件,写入如下内容
#local.repo文件内容
[local]
name=local
baseurl=file:////mnt/cdrom #挂载路径
enabled=1 #启用该yum源
gpgcheck=0#本地挂载不涉及数字签名问题,将gpgcheck值设置为0,表示不检查数字签名
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7# 在挂载路径下查看

2.切换到本地源:

备份在线源文件

mkdir /etc/yum.repos.d/bak
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo –t bak

测试源是否可用

yum clean all
yum makecache

3.安装SMB服务:

yum install -y cifs-utils
 mkdir -p /data/smb 
mount -t cifs -o dir_mode=0755,file_mode=0755,username="username",password="your password" //smbip/share/ /data/smb

永久挂载方式,修改/etc/fstab文件

//smbip/share /data cifs defaults,username='username',password='your password'     0 0 

centos7.4 安装jenkins集成工具

0.环境说明:

①操作系统:centos7.4

②ROOT 权限

官网地址:https://www.jenkins.io/

1.安装Jenkins依赖:

更新

yum install -y ca-certificates   #更新证书,否则无法进行下一步
sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install java-17-openjdk #此处安装失败后则需要单独安装jdk 17
sudo yum install jenkins
sudo systemctl daemon-reload

安装openjdk-17

wget https://download.oracle.com/java/17/archive/jdk-17.0.8_linux-x64_bin.tar.gz 
tar -xvf jdk*.gz
mv jdk-17.0.8 /usr/java
ln -s /usr/java/bin/java /usr/bin/java
sudo yum reinstall jenkins

配置环境变量,在/etc/profile最后加入

export JAVA_HOME=/usr/java
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

使环境变量生效:

source /etc/profile
java -version    #查看当前JDK版本

2.启动Jenkins:

sudo systemctl enable jenkins #开机启动
sudo systemctl start jenkins #启动jenkins
sudo systemctl status jenkins #查看jenkins状态

初始化jenkins

cat /var/lib/jenkins/secrets/initialAdminPassword #访问时输入

访问方式

localhost:8080

更多:

防火墙配置参考:

jenkins 其它配置:

修改操作用户为root 修改 /etc/sysconfig/jenkins

JENKINS_USER="jenkins"  #jenkins修改为root

赋予目录权限

chown -R root /var/log/jenkins
chgrp -R root /var/log/jenkins
chown -R root /var/lib/jenkins
chgrp -R root /var/lib/jenkins
chown -R root /var/cache/jenkins
chgrp -R root /var/cache/jenkins

3.Jenkinsj节点配置问题:

在建立除master节点以外的其它节点,首先要保证两端的JAVA版本一致

遇到问题:“lib/jenkins/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/lib/jenkins/.ssh/known_hosts.”

在节点管理页面修改认证机制:

Docker 安装penpot原型图设计工具

0.环境说明:

①操作系统:truenas

②ROOT 权限

③vDocker version 20.10.12, build e91ed57

Penpot是一款类似于Figma的原型图设计工具,是一款免费开源的软件,并支持本地化部署

官方指导手册

1.安装docker-compose:

su -
wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /bin
chmod +x docker-compose
docker-compose --version #显示docker版本

2.配置yaml文件:

wget https://raw.githubusercontent.com/penpot/penpot/main/docker/images/docker-compose.yaml
vi docker-compose.yaml

根据需要修改yaml文件:

 - PENPOT_PUBLIC_URI= #填入外部访问的域名地址

修改前端访问端口:

  penpot-frontend:
    image: "penpotapp/frontend:latest"
    restart: always
    ports:
      - 8000:80 #修改8000为你想要的端口

    volumes:
      - penpot_assets:/opt/data/assets

    depends_on:
      - penpot-backend
      - penpot-exporter

    networks:
      - penpot

    labels:
      - "traefik.enable=true"

修改postgres端口:

  penpot-postgres: 
    image: "postgres:15" 
    restart: always 
    stop_signal: SIGINT 
    ports: 
      - 8000:5432  #修改8000为宿主机可用端口
    volumes: 
      - penpot_postgres_v15:/var/lib/postgresql/data

修改注册信息:

- PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification enable-smtp enable-prepl-server

修改注册邮箱:

      - PENPOT_SMTP_DEFAULT_FROM=service@wolfmark.org #你的邮箱
      - PENPOT_SMTP_DEFAULT_REPLY_TO=service@wolfmark.org #你的邮箱
      - PENPOT_SMTP_HOST= mail.wolfmark.org #邮箱服务器地址
      - PENPOT_SMTP_PORT=  #此处填写smtp端口
      - PENPOT_SMTP_USERNAME=service@wolfmark.org #你的邮箱
      - PENPOT_SMTP_PASSWORD= #smtp验证
      - PENPOT_SMTP_TLS=false 
      - PENPOT_SMTP_SSL=false

3.拉取镜像:

docker-compose -p penpot -f docker-compose.yaml up -d #启动
拉取完成

最后访问前端页面,安装完成

docker-compose -p penpot -f docker-compose.yaml down #关闭 docker镜像

凝思(debian)系统LVM格式磁盘扩容方法(virtual box)

0.环境说明:

①凝思6.0.80

②ROOT 权限

③virtual box 7.0.8虚拟化平台

注:本教程略作修改可以作为其它操作系统或者虚拟化平台使用

1.virtual box 增加虚拟硬盘:

虚拟机处于关闭状态

选择,管理→工具→虚拟介质管理

拖动滑动条修改磁盘大小

打开虚拟机

su        #切换到root用户
fdisk -l  #查看新的磁盘大小是否生效

2.将增加的空间分配到LVM分区:

将新加入物理卷加入

fdisk /dev/sda #选择n创建新的分区,类型为p,编号选择3 firtsSector 选择默认  LastSector 选择 +XG(上一步预分配G)
w #保存
fdisk /dev/sda 
t #制定分区类型
3 # 默认
8e # LVM格式
w #保存
pvcreate /dev/sda3 #创建一个新的Physical volume物理卷
pvscan #查看物理卷还未分配给卷组
vgextend vg01 /dev/sda3 #将sda3分配给卷组vg01

修改卷组大小

pvscan
lvextend -l +100%FREE /dev/mapper/vg01-home #然后修改卷组的大小

完成磁盘分配

resize2fs /dev/mapper/vg01-home
xfs_growfs /dev/mapper/vg01-home #zfs文件系统使用下面这条命令