标签: docker

  • Portainer v2.33.4 + Docker Engine v29的天坑!

    Portainer v2.33.4 + Docker Engine v29的天坑!

    天坑啊!

    把手里的盒子升级到debian 13,然后lxc创建了debian 13的容器,安装docker一切都正常

    然后部署 portainer ,发现运行正常,但是点击 local 失败 ,“加载失败环境,本地的环境无法访问”

    Error Failed loading environment
    The environment named local is unreachable.

    遂复查docker run命令行,发现没问题

    之后询问grok及chatgpt

    给出的方案不是宿主机lxc权限问题,就是部署命令行的问题。

    最后还是查看github找到了答案:加载失败的环境 名为本地的环境无法访问。·波尔泰纳·讨论#12926

    Hello everyone, this is a RC release from Docker. We are aware of breaking changes for Docker 29 but please stick to the tested versions of Docker found here –https://docs.portainer.io/start/requirements-and-prerequisites

    最终解决方案:

    DEFINITIVE SOLUTION: Portainer + Docker Engine v29

    🎯 PROBLEM IDENTIFIED

    Docker Engine v29 introduced incompatibility with Portainer v2.33.4 due to the minimum API increase from 1.41 to 1.44.

    Symptoms:

    • ✅ Portainer starts normally
    • ❌ Environment “primary” appears as “Down” and “Disconnected”
    • ❌ Error: “Failed loading environment – The environment named primary is unreachable”
    • 🔍 This can happen on some Cloud VMs: Hetzner, Digital Ocean, AWS EC2, etc.

    🔧 IMPLEMENTED SOLUTION

    1. Docker Daemon Configuration

    Created :/etc/docker/daemon.json

    {
      "min-api-version": "1.24",
      "log-driver": "json-file", 
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      },
      "features": {
        "containerd-snapshotter": false
      }
    }

    2. Restart Docker

    sudo systemctl restart docker

    3. Verify Compatibility

    docker version
    # Should show: API version 1.52 (minimum version 1.24)

    📚 REFERENCE

  • NPM:Missing command line flag or config entry for this setting

    Nginx proxy manager letsencrypt 错误提示

    Missing command line flag or config entry for this setting:
    [11/1/2024] [9:42:04 AM] [Express  ] ›   warning   Saving debug log to /tmp/letsencrypt-log/letsencrypt.log
    Please choose an account

     

    删除:/docker/npm/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory 下的文件

     

    参考:解决mailinabox ssl续签出错 – 虎笺 – Tiger’s Notes – Powered By Trilium Blog

     

  • 被迫迁移之尝试Docker部署wordpress备份站

    原文地址:【好玩儿的Docker项目】10分钟搭建美国白宫也用的博客框架——Wordpress-我不是咕咕鸽 (laoda.de)

    原文的内容更全面建议观看原文!

    Docker compose文件

    version: '3.0'
     
    services:
      db:
        image: mysql:8.0 # 使用mysql镜像,不建议修改版本号,后续如果要升级,千万记得备份数据库
        container_name: wordpress-db
        restart: unless-stopped
        command: --max-binlog-size=200M --expire-logs-days=2
        environment:
          MYSQL_ROOT_PASSWORD: rootpassword # 这里是上面的root密码
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: rootpassword # 这里是原来的密码
        volumes:
          - './db:/var/lib/mysql'
        networks:
          - default
     
      app:
        image: wordpress:latest
        container_name: wordpress-app
        restart: unless-stopped
        ports:
          - 8080:80  # 按需修改,左边的8080可以改成服务器上没有用过的端口
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_NAME: wordpress
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: rootp1ass2wo3rd # 按需修改
        volumes:
          - './app:/var/www/html'
        links:
          - db:db
        depends_on:
          - redis
          - db
        networks:
          - default
     
      redis:
        image: redis:alpine
        container_name: wordpress-redis
        restart: unless-stopped
        volumes:
          - ./redis-data:/data
        networks:
          - default
     
    networks:
      default:
        name: wordpress
    

     

    redis设置

    cd /root/data/docker_data/wordpress/app/wp-config.php

    找到DB_COLLATE  在define( 'DB_COLLATE', 'XXX...');  后添加如下内容:

    /** Redis Object Cache */
    define('WP_REDIS_HOST', 'wordpress-redis'); 
    define('WP_REDIS_DATABASE', '0');

    重启docker之后,在后台安装Redis Object Cache插件,直接点击Enable Object Cache即可。

    上传文件大小限制:

    
    cd /root/data/docker_data/wordpress/app/
    vim php.ini
    

    填入下面内容:

    upload_max_filesize = 512M
    post_max_size = 512M
    memory_limit = 1024M
    cd /root/data/docker_data/wordpress
    docker-compose up -d # 或者 docker compose up -d

    上传主题,出现“您点击的链接已过期”

    cd /root/data/docker_data/wordpress/data
    vim .htaccess

     

    php_value max_execution_time 300
    php_value upload_max_filesize 256M
    php_value post_max_size 256M
    php_value memory_limit 128M
    php_value max_input_vars 5000

    解决Nginx+wordpress无限重定向的问题

    解决Nginx+wordpress无限重定向的问题 – 胡萝虎的博客 (huluohu.com)

    按照上面的配置,正常来说就可以了,但是wordpress却不行,那是因为wordpress本身还需要开启SSL才行。

    • 打开wordpress安装目录下的wp-config.php文件
    • 在其中加入代码
    ## 加入下面3行代码 
    $_SERVER['HTTPS'] = 'on';
     define('FORCE_SSL_LOGIN', true);
     define('FORCE_SSL_ADMIN', true); 
    /* That's all, stop editing! Happy publishing. */ 
    /** Absolute path to the WordPress directory. */
     if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); }
    • 注意必须加在if ( ! defined( 'ABSPATH' ) ) { 上面
  • 停止Docker后提示but it can still be activated by: docker.socket

    停止Docker后提示but it can still be activated by: docker.socket

    [c-alert type=”success”]原文地址:学习笔记402—Warning: Stopping docker.service, but it can still be activated by: docker.socket – 何弈 – 博客园 (cnblogs.com)[/c-alert]

    执行 systemctl stop docker 后提示“Warning: Stopping docker.service, but it can still be activated by: docker.socket”

    解释:
    这是docker在关闭状态下被访问自动唤醒机制,很人性化,即这时再执行任意docker命令会直接启动

    注:如果真的不希望docker被访问自动唤醒,执行 systemctl stop docker 后再执行systemctl stop docker.socket即可。

    参考链接:https://blog.csdn.net/qq_41414186/article/details/123918679

  • 转载:如何复现查看docker run参数命令

    转载:如何复现查看docker run参数命令

    docker run -v /var/run/docker.sock:/var/run/docker.sock \
        assaflavie/runlike YOUR-CONTAINER

     

    [c-alert type=”success”]原文地址:linuxea:如何复现查看docker run参数命令 – LinuxEA[/c-alert]

    如果有这样以一个场景。我使用docker run启动了了一个redis容器,而docker run的参数有很多,由于时间太久,我已经忘记了当初的启动参数,也并没有使用docker-compose这样的编排工具。现在我如何进行重启,如何找回此前的启动命令?

    • 示例

    使用docker run启动一个容器,

     docker run \
      --detach \
      --env REDIS_CONF=on \
      --env REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh \
      --env MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh \
      --env MAXCLIENTS_NUM=30 \
      --net=host \
      --env MAXMEMORY_SIZE=1024M \
      --publish 6379:6379 \
      --volume linuxea_volume \
      --name linuxea_redis \
      --tty --interactive \
      marksugar/redis:5.0.0

    docker COMMAND完整命令查看

    首先,我们查看启动的脚本参数和完整的命令

    使用 docker ps -a --no-trunc

    docker ps -a --no-trunc可以打印docker ps -a的隐藏部分,但是这并不能看到我们run的参数

    [root@LinuxEA-172_25_50_250 ~]# docker ps -a --no-trunc
    CONTAINER ID                                                       IMAGE                             COMMAND                CREATED             STATUS              PORTS               NAMES
    c32bc1bba3a0f8d59e3bd96648838399287ee183ddbff1ca1293ccbc933c8ede   marksugar/redis:5.0.0             "/Initialization.sh"   8 minutes ago       Up 8 minutes                            linuxea_redis
    1d848a10149325e6fb46ef5fa0624812ab12f28263535720d79aa564a5551e45   marksugar/nginx_createrepo:v0.2   "entrypoint.sh"        13 days ago         Up 13 days                              nginx_repo

    ## docker inspect

    此时,我们试图找回上述的docker run命令,使用docker inspect ,但是docker inspect打印的是json文件,我们需要挑选字段查看

    [root@LinuxEA-172_25_50_250 ~]# docker inspect -f "{{.Name}} {{.Path}} {{.Args}} {{.Config.Cmd}} {{.Config.Env}} {{.Config.Volumes}} {{.Config.Entrypoint}} {{.NetworkSettings.Networks}}" $(docker ps -a -q)
    /linuxea_redis /Initialization.sh [] [] [REDIS_CONF=on REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh MAXCLIENTS_NUM=30 MAXMEMORY_SIZE=1024M PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin RS_VSON=5.0.0 RS_USER=redis RS_VSON_URL=https://download.redis.io/releases/redis-5.0.0.tar.gz BATADIR=/usr/local/redis DATADIR=/data/redis DATALOG=/data/logs DATACIG=/etc/redis] map[linuxea_volume:{}] [/Initialization.sh] map[host:0xc420182000]
    /nginx_repo entrypoint.sh [] [] [USERNAME=marksugar FTPPASSWD=123 FTPDATA=/data/wwwroot SERVER_NAME=meftp.ds.com NGINX_PORT=80 WELCOME="welome to linuxea.com" PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin version=1.14.2 USER=www INSTALL_PATH=/usr/local WWWPATH=/data/wwwroot] map[/tmp/header.html:{} /data:{} /etc/localtime:{} /etc/nginx/nginx.conf:{} /etc/nginx/vhost:{} /tmp/footer.html:{}] [entrypoint.sh] map[host:0xc42044c000]

    这样的显示并不直观。好在我发现了rekcodrunlike这两个逆转docker run命令,参见本章介绍和使用。runlike更漂亮些

    rekcod

    借助rekcod打印出更易读的格式,docker inspect→docker run

    docker run从现有容器(via docker inspect)反向设计命令。

    rekcod可以将以下任何内容转换为docker run命令:

    1. 容器ID /名称(rekcod将调用docker inspect
    2. 包含docker inspect输出的文件的路径
    3. 原始JSON(docker inspect直接传递输出)

    每个docker run命令都可用于复制容器。

    这不是非常强大,但它应该涵盖所需的大多数参数。请参阅下面支持的字段

    传递容器ID /名称时,此模块docker inspect直接调用,运行它的用户也应该能够。
    20190212.-1png.png

    开始安装

    • install rekcod
    yum install npm -y
    npm i -g rekcod
    • 如果您只安装了Docker:
    $ docker pull nexdrew/rekcod
    $ alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod"

    或者你可以简单地运行它,不需要安装:

    $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>

    开始使用

    以使用linuxea_redis容器为例,rekcod linuxea_redis,如下:

    [root@LinuxEA-172_25_50_250 ~]# docker ps -qa|rekcod

    或者这样

    [root@LinuxEA-172_25_50_250 ~]#  rekcod linuxea_redis
    
    docker run --name linuxea_redis --runtime runc -p 6379:6379/tcp --net host --restart no -h LinuxEA-Node172_25_50_250.cluster.com --expose 26379/tcp --expose 6379/tcp -e 'REDIS_CONF=on' -e 'REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh' -e 'MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh' -e 'MAXCLIENTS_NUM=30' -e 'MAXMEMORY_SIZE=1024M' -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'RS_VSON=5.0.0' -e 'RS_USER=redis' -e 'RS_VSON_URL=https://download.redis.io/releases/redis-5.0.0.tar.gz' -e 'BATADIR=/usr/local/redis' -e 'DATADIR=/data/redis' -e 'DATALOG=/data/logs' -e 'DATACIG=/etc/redis' -d -t -i --entrypoint "/Initialization.sh" marksugar/redis:5.0.0
    

    我将结果换行查看,并且进行启动[这里不得不说的是,在runlike中,可以使用-q自动换行.见下文]

    docker run --name linuxea_redis \
    -p 6379:6379/tcp \
    --net host \
    --restart no \
    -h LinuxEA-Node172_25_50_250.cluster.com \
    --expose 26379/tcp \
    --expose 6379/tcp \
    -e 'REDIS_CONF=on' \
    -e 'REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh' \
    -e 'MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh' \
    -e 'MAXCLIENTS_NUM=30' \
    -e 'MAXMEMORY_SIZE=1024M' \
    -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
    -e 'RS_VSON=5.0.0' \
    -e 'RS_USER=redis' \
    -e 'RS_VSON_URL=https://download.redis.io/releases/redis-5.0.0.tar.gz' \
    -e 'BATADIR=/usr/local/redis' \
    -e 'DATADIR=/data/redis' \
    -e 'DATALOG=/data/logs' \
    -e 'DATACIG=/etc/redis' \
    -d -t -i --entrypoint "/Initialization.sh" marksugar/redis:5.0.0

    启动成功

    [root@LinuxEA-172_25_50_250 ~]# docker ps -a 
    CONTAINER ID        IMAGE                             COMMAND                CREATED             STATUS              PORTS               NAMES
    492f6cdc159c        marksugar/redis:5.0.0             "/Initialization.sh"   4 seconds ago       Up 3 seconds                            linuxea_redis
    1d848a101493        marksugar/nginx_createrepo:v0.2   "entrypoint.sh"        13 days ago         Up 13 days                              nginx_repo
    [root@LinuxEA-172_25_50_250 ~]# docker logs linuxea_redis 
    [i] Start configuration /etc/redis
    [ok] /etc/redis/redis.conf config ready
    [ok] Start variable substitution REDIS_CONF=on
    [ok] Replace the maxclients=30 variable value
    [ok] Replace the maxmemory=1024M variable value
    [ok] Replace the requirepass=OTdmOWI4ZTM4NTY1M2M4OTZh variable value
    [ok] Replace the masterauth=OTdmOWI4ZTM4NTY1M2M4OTZh variable value
    [i] Start up /usr/local/bin/redis-server /etc/redis/redis.conf 

    runlike

    我仍然要提一下runlike,和rekcod有一样的作用

    本地安装使用

    yum install python-pip
    pip install runlike
    • 用法:
    runlike <container-name>

    这打印出你需要运行什么来获得类似的容器。你可以$(runlike container-name)一步完成其输出。如下:

    [root@LinuxEA-172_25_50_250 ~]# runlike linuxea_redis
    docker run --name=linuxea_redis --hostname=LinuxEA-Node172_25_50_250.cluster.com --env=REDIS_CONF=on --env=REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh --env=MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh --env=MAXCLIENTS_NUM=30 --env=MAXMEMORY_SIZE=1024M --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=RS_VSON=5.0.0 --env=RS_USER=redis --env=RS_VSON_URL=https://download.redis.io/releases/redis-5.0.0.tar.gz --env=BATADIR=/usr/local/redis --env=DATADIR=/data/redis --env=DATALOG=/data/logs --env=DATACIG=/etc/redis --volume=linuxea_volume --network=host -p 6379:6379 --restart=no --detach=true -t marksugar/redis:5.0.0

    -p将命令行分解为漂亮漂亮的行。例如:

    [root@LinuxEA-172_25_50_250 ~]# runlike -p linuxea_redis
    docker run \
        --name=linuxea_redis \
        --hostname=LinuxEA-Node172_25_50_250.cluster.com \
        --env=REDIS_CONF=on \
        --env=REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh \
        --env=MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh \
        --env=MAXCLIENTS_NUM=30 \
        --env=MAXMEMORY_SIZE=1024M \
        --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
        --env=RS_VSON=5.0.0 \
        --env=RS_USER=redis \
        --env=RS_VSON_URL=https://download.redis.io/releases/redis-5.0.0.tar.gz \
        --env=BATADIR=/usr/local/redis \
        --env=DATADIR=/data/redis \
        --env=DATALOG=/data/logs \
        --env=DATACIG=/etc/redis \
        --volume=linuxea_volume \
        --network=host \
        -p 6379:6379 \
        --restart=no \
        --detach=true \
        -t \
        marksugar/redis:5.0.0

    docker使用

    runlike被封装为一个名为assaflavie / runlike的Docker镜像。

    docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
        assaflavie/runlike YOUR-CONTAINER

    或者您可以使用别名运行它,例如,将其保存在~/.profile或中~/.bashrc

    alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"

    然后您可以直接以本地命令运行

    runlike YOUR-CONTAINER

    docker-compose

    事实上这样的方式,我并不推荐,你大可不必这样 麻烦,直接使用docker-compose就可以完成简单的编排,如下:

    version: '2'
    services:
      redis:
        image: marksugar/redis:5.0.0
        container_name: redis
        restart: always
        network_mode: "host"
        privileged: true
        environment:
        - REDIS_CONF=on
        - REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh
        - MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh
        - MAXCLIENTS_NUM=600
        - MAXMEMORY_SIZE=4096M
        volumes:
        - /etc/localtime:/etc/localtime:ro
    #    - /etc/redis:/etc/redis
        - /data/redis-data:/data/redis:Z
        - /data/logs:/data/logs

    学习更多

    学习如何使用Docker CLI命令,Dockerfile命令,使用这些命令可以帮助你更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。

    1

  • 如何在 Debian/Ubuntu 上安装 Syncthing进行文件同步备份

    如何在 Debian/Ubuntu 上安装 Syncthing进行文件同步备份

    PS:本来计划是使用docker来部署syncthing备份docker的数据目录,测试了下涉及到很多权限问题,每个都要单独解决。所以只能测试下直接安装。

    [c-alert type=”success”]原文地址:如何在 Debian/Ubuntu 上安装 Syncthing进行文件同步备份 – Hello New World (74110.net)[/c-alert]
    Syncthing 是一个免费的开源文件同步应用程序,用于通过互联网在多个远程设备之间同步文件。Syncthing 不会将您的文件上传到Nextcloud 之类的中央服务器,而是直接在您的设备之间交换您的数据。在您的设备之间传输时,您的所有数据都使用 TLS 加密。Syncthing 适用于 Linux、BSD、macOS、Windows、Android 和 Solaris。

    在 Debian/Ubuntu上安装 Syncthing

    步骤 1. 在我们安装任何软件之前,通过在终端中运行以下命令来确保您的系统是最新的,这一点很重要:

    sudo apt update
    sudo apt upgrade
    sudo apt install gnupg2 curl apt-transport-https

    步骤 2. 在 Debian 11 上安装 Syncthing。

    默认情况下,Syncthing 在 Debian 11 基础存储库中可用。现在运行以下命令将 Syncthing 存储库添加到您的系统:

    echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

    接下来,使用以下命令导入 GPG 密钥:

    curl -s https://syncthing.net/release-key.txt | apt-key add -

    最后,使用以下命令更新 apt 包并安装 Syncthing:

    sudo apt update
    sudo apt install syncthing

    验证 Syncthing 版本:

    syncthing --version

    步骤 3. 为 Syncthing 创建一个 Systemd 服务。

    现在我们在两台服务器上创建一个systemd服务文件来管理 Syncthing:

    nano /etc/systemd/system/syncthing@.service

    添加以下行:

    [Unit]
    Description=Syncthing - Open Source Continuous File Synchronization for %I
    Documentation=man:syncthing(1)
    After=network.target
    StartLimitIntervalSec=60
    StartLimitBurst=4
    
    [Service]
    User=%i
    ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
    Restart=on-failure
    RestartSec=1
    SuccessExitStatus=3 4
    RestartForceExitStatus=3 4
    
    # Hardening
    ProtectSystem=full
    PrivateTmp=true
    SystemCallArchitectures=native
    MemoryDenyWriteExecute=true
    NoNewPrivileges=true
    
    # Elevated permissions to sync ownership (disabled by default),
    # see https://docs.syncthing.net/advanced/folder-sync-ownership
    #AmbientCapabilities=CAP_CHOWN CAP_FOWNER
    
    [Install]
    WantedBy=multi-user.target

    然后保存并关闭文件,重新加载systemd守护程序以应用更改:

    sudo systemctl daemon-reload
    sudo systemctl enable syncthing@root.service
    sudo systemctl start syncthing@root
    步骤 4. 访问 Syncthing Web 界面。

    成功安装后,打开您的 Web 浏览器并使用 URL 访问 Syncthing Web UI 。您将被重定向到 Syncthing Web 界面,如下所示:http://your-server-ip-address:8384

    注意:请记得放行web管理端的8384端口和同步数据使用的22000端口

    接下来你就可以使用 Syncthing 来远程文件同步。如需更多帮助或有用信息,我们建议您查看官方 Syncthing 网站

    使用 Syncthing Web UI

    我们将使用 同步 WebUI 作为本文中 Syncthing 的接口。 首先,我们需要添加设备,以便我们可以在它们之间进行同步。

    显示您的设备 ID

    在 Syncthing 中,设备由唯一的长字母数字字符串标识。 这个字符串被称为 设备编号. 要查看您的设备 ID,请选择 操作 > 显示 ID. 此 ID 应仅与您打算与之同步的设备共享。 显示 ID 还将向您显示可以通过智能手机扫描的二维码。

    添加设备

    要添加设备,请单击 添加远程设备 Syncthing Web UI 右下角的按钮。 它会自动识别本地网络上安装了 Syncthing 的设备。 如果您要同步的设备未显示,请手动输入第二台设备的 设备编号 在给定的文本字段中。 然后点击 Save 按钮。

    Syncthing – 添加设备

    另一台设备将收到您要与其连接的通知。 点击 添加设备 按钮,第二个设备将被添加到集群中。

    连接请求通知

    等待几秒钟,然后第二个设备将显示为 连接的 在里面 远程设备 列表。

    已连接的设备
    添加文件夹

    现在我们已经成功地将一个设备添加到我们的集群中,我们可以开始与它同步了。 但首先,我们需要告诉它要同步哪些文件夹。 要添加用于同步的文件夹,请单击 添加文件夹 中的按钮 文件夹 Syncthing Web UI 部分。

    它将显示一个窗口,您可以在其中输入 文件夹路径 您要同步的文件夹。

    添加新文件夹

    要选择要同步的设备,请转到 分享 选项卡并检查应同步此文件夹的设备。

    添加要同步的设备

    点击后 Save 选中的设备将收到您要与他们共享此文件夹的通知。 他们可以接受或拒绝请求。 如果他们选择接受它,现在将询问该通知接收机器上的路径应该同步文件夹(发送通知的位置)。 询问的路径将是 在接收机器上.

    文件夹同步选项

    在 Syncthing 中可以同步三种类型的文件夹。

    • 发送和接收(默认)
    • 只发送
    • 只接收

    可以通过单击文件夹然后单击来访问这些选项 编辑 按钮

    编辑文件夹设置

    然后在下 高级 选项卡,选择 文件夹类型

    仅接收文件夹
    结论

    Syncthing 是一个非常有用的应用程序,可以同时在各种设备之间进行同步。 它允许通过“文件夹类型”选项精细控制应如何共享任何内容。 它也可以用于备份,比如实时异地备份网站的文件等。

    More

    通过 journalctl 命令可以查看 Syncthing 运行日志:

    journalctl -e -u syncthing@root.service

    通过 systemctl status 命令可以查看 Syncthing 运行状态:

    systemctl status syncthing@root.service

    卸载:

    sudo apt remove syncthing
    参考资料
  • 转载:斐讯N1 刷机openwrt教程docker版本对比直刷版 性能测试

    转载:斐讯N1 刷机openwrt教程docker版本对比直刷版 性能测试

    [c-alert type=”success”]原文地址:斐讯N1 刷机openwrt教程docker版本对比直刷版 性能测试 – 一头鲸博客 (yitoujing.com)[/c-alert]

    我的N1是去年入手的,当时花了100多吧,一直用来当旁路由,很稳定,性能也够用,最近闲来无事,想把N1刷成ARMBIAN服务器安装docker拉取openwrt镜像,之前玩客云就是这样玩的,顺便对比下性能有什么差距!

    先看下斐讯N1的配置:

    • Amlogic S905D Cortex-A53

    • RAM:2GB,ROM:8GB

    • USB 2.0*2

    • HDMI *1

    • RJ45千兆 *1

    这矿渣产品素质真是不错啊,有个千兆网卡挺好的,斐讯可惜了,做路由器挺好的企业,盒子做工也很好,大厂出品,比运营商送的盒子好多了。

    N1直刷版OpenWrt

    flippy大佬维护的OpenWrt固件

    https://www.right.com.cn/forum/thread-4076037-1-1.html

    OpenWrt刷机过程就不说了,网上教程也很多,不重复造轮子了,只要刷过一次激活了U盘启动,就可以先把固件镜像等刷到U盘里,然后插入N1的USB接口启动了,之后可以写入EMMC也可以U盘启动。

    SSH登录,写入emmc命令如下:

    ./inst-to-emmc.sh  
    

    固件刷恩山大佬flippy维护的,一直在更新,感谢!

    N1刷入ARMBIAN系统

    GitHub Armbian发布页

    https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/README.cn.md

    Armbian(中文名:岸边) 系统是基于 Debian/Ubuntu 而构建的专门用于 ARM 芯片的轻量级 Linux 系统。Armbian 系统精益、干净,并且 100% 兼容并继承了 Debian/Ubuntu 系统的功能和丰富的软件生态,可以安全稳定地运行在 TF/SD/USB 及设备的 eMMC 里。

    我也在网盘备份了,可以直接下载!

    U盘写入armbian的镜像

    打开写入镜像工具,把镜像写入U盘!

    N1启动armbian系统

    U盘要插入N1外侧的usb接口,通电、SSH登录,然后更改默认密码

    选择shell方式,我选了1

    armbian系统写入emmc

    armbian-install  
    

    选择第一个N1的代码101,然后存储方式选择ext4写入成功后!

    拔掉U盘,重新通电,SSH登录armbian系统!

    Win10&Mac命令(打开cmd或者终端):ssh [email protected]

    第一步:换Debian源(为了能更新系统)

    nano /etc/apt/sources.list   
    

    复制下面代码

    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse  
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse  
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse  
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse  
    

    鼠标右键粘贴   Ctrl + x 保存退出

    更新armbian内核:

    apt-get update  是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

    armbian-update  
    

    等待代码拍完,到此,armbian准备完毕!

    安装docker环境

    安装docker命令:

    apt install docker.io
    

    选Y

    安装完成后 docker -v 查看下版本,确认安装成功!

    docker常用命令

    1. 查看运行的容器:docker ps

    2. 停止容器:docker stop OpenWrt

    3. 删除容器:docker rm OpenWrt

    4. 删除网络:docker network rm xxxx

    5. 重启容器:docker restart OpenWrt

    安装OpenWrt镜像

    OpenWrt镜像地址

    https://hub.docker.com/r/buddyfly/openwrt-aarch64

    打开网卡混杂模式

    ip link set eth0 promisc on  
    

    创建docker的虚拟网络(可用docker network ls查看已创建了哪些)

    docker network create -d macvlan --subnet=192.168.100.0/24  --gateway=192.168.100.1  -o parent=eth0 macnet 
    

    【名称为macnet,macvlan模式,将100.x修改为你自己主路由的网段】

    拉取OpenWrt镜像

    docker pull buddyfly/openwrt-aarch64  
    

    开启openwrt容器:

    docker run --name openwrt --restart always -d --network macnet --privileged buddyfly/openwrt-aarch64:latest
    

    路由器后台看不见openwrt的IP地址,默认网段是:192.168.99.2,需要修改为你的网段。

    进入容器:

    docker exec -it openwrt /bin/sh  
    

    编辑网络配置:

    nano /etc/config/network  
    

    修改成你的网段 Ctrl+x 保存退出

    重启网络

    /etc/init.d/network restart  
    

    路由器后天找到openwrt地址,登录即可

    默认密码:password,默认ip:192.168.99.2(修改成你的IP)

    旁路由设置:

    • IP网关设置成主路由

    • 桥接 默认,如果是直刷版,取消桥接

    • 关闭DHCP服务器、关闭IPV6

    • 添加自定义的防火墙规则:iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

    原理: 上网电脑的网关设为旁路由IP,网络包先发到N1的op,op会把该网络包经过加工后转发给主路由, 但转发前需要把网络包的源地址伪装成自己的,这样主路由返回的网络包也会先返回到旁路由,再 从旁路由返回上网电脑。如果不伪装,则主路由的返回包直接返给电脑了,路由不能闭合,结果就 是旁路由一直在等返回包而等不到,造成大量的TCP连接不能关闭,最终结果是网络卡顿或是彻底 不通。

    N1盒子OpenWrt性能测试

    测试之前,社长感觉直刷应该性能强点吧,毕竟armbian系统也要吃点资源的?客观环境啥的都一样,跑一个油管4K和speedtest测速,具体如何,开始吧!

    直刷版OpenWrt性能

    油管分数:稳定在10万左右,最高13万多,CPU最高占用率15%!

    speedtest分数:测了好几次,最高338Mbps,CPU占用率最高45%

    docker版OpenWrt性能

    twemoji-1f53b油管分数:10万左右,最高14万,CPU占用率最高20%

    speedtest分数:好几次都是460Mbps以上,CPU最高26%

    这个结果是出乎意料了。ARMBIAN系统下N1当旁路由才是正确的打开方式吗?跟预想的完全不一样,搞不懂是为什么。

    总结一下

    斐讯N1作为18年的矿渣产品,到今天还是有一战之力的,在各种大神的开发的固件下,为家庭网络尽了一份力。功耗极低,2到3瓦,被动散热,做工好,单网口(旁路由、旁网关)设备感觉没有比N1更适合的产品了,直刷OpenWrt简单点,也包含docker功能,想要玩服务器ARMBIAN折腾一点,性能更强一点!

  • 转载:docker 设置国内镜像源

    转载:docker 设置国内镜像源

    其实国内加速镜像一直有在用,但是最近发现了一些情况

    1、有些镜像的速度也很慢,还会找不到镜像,例如

    Error response from daemon: manifest for hub-mirror.c.163.com/piaoyizy/openwrt-aarch64:latest not found: manifest unknown: manifest unknown

    Error response from daemon: pull access denied for daocloud.io/piaoyizy/openwrt-aarch64, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

    2、有些镜像本来是一直更新的,但是拉取下来的居然是 2021 年创建的版本。

    关于1还能忍忍,但是2就有些夸张了,所以google下,感觉这篇文章解决方案对小白来说,算是比较全面的。特此推荐

    [c-alert type=”success”]原文地址:ocker 设置国内镜像源 – 炎黄子孙,龙的传人 – 博客园 (cnblogs.com),docker 设置国内镜像源_docker国内镜像源-CSDN博客[/c-alert]

    一、国内加速地址

    1、阿里云镜像站:(需登录,免费)

    https://<your_code>.mirror.aliyuncs.com
    

    2、网易云镜像站:

    http://hub-mirror.c.163.com
    

    3、百度云镜像站:

    https://mirror.baidubce.com
    

    4、上海交大镜像站:

    https://docker.mirrors.sjtug.sjtu.edu.cn
    

    5、南京大学镜像站:

    https://docker.nju.edu.cn		
    

    以下连接不公开或已失效:
    1、Docker 中国官方镜像:(已关闭)
    https://registry.docker-cn.com

    2、中国科技大学 USTC:(仅供内部访问)
    https://docker.mirrors.ustc.edu.cn

    阿里云容器 生成自己的加速地址

    登录:cr.console.aliyun.com

    点击“创建我的容器镜像”,得到专属加速地址。


    二、修改方法

    创建或修改 /etc/docker/daemon.json 文件,修改为如下形式

    {
        "registry-mirrors": [
            "https://registry.hub.docker.com",
            "http://hub-mirror.c.163.com",
            "https://mirror.baidubce.com",
            "https://docker.mirrors.sjtug.sjtu.edu.cn",
            "https://docker.nju.edu.cn"
        ]
    }
    
    

    加载重启docker

    systemctl restart docker
    

    查看是否成功

    docker info
    

    Docker Hub 镜像测速

    # 测速前先移除本地的镜像!
    $ docker rmi nginx:latest
    
    # 使用 time 统计所花费的总时间。
    $ time docker pull nginx:latest
    
    Pulling repository nginx
    [...]
    
    real   1m14.078s
    user   0m0.176s
    sys    0m0.120s
    
    

    三、从指定repo拉取镜像

    命令格式: library/<image:version>

    $ docker pull busybox 
    
    # 指定Repo拉取镜像,等价于:
    $ docker pull hub-mirror.c.163.com/library/busybox:latest
    $ docker pull docker.io/library/busybox:latest
    $ docker pull registry.hub.docker.com/library/busybox:latest
    
    

    -ref
    https://blog.csdn.net/whatday/article/details/86770609

  • 转载:两种方法迁移 Docker 的默认安装(存储)目录

    转载:两种方法迁移 Docker 的默认安装(存储)目录

    [c-alert type=”success”]原文地址:# 链接(URL):https://strikefreedom.top/archives/migrate-docker-installation-directory  作者(Author):潘少[/c-alert]

    两种方法迁移 Docker 的默认安装(存储)目录

    如果是通过 Ubuntu 的 apt-get 安装的 Docker,默认的安装目录应该是: /var/lib/docker  。

    为了完全确定,可以使用以下的命令查询真正的安装路径:

    sudo docker info | grep "Docker Root Dir"

    前置工作
    下文以/store/software/docker  这个路径作为要迁移的新 Docker 安装(存储)目录

    在开始迁移之前,首先复制原 Docker 安装(存储)目录到新的路径下:

    cp -a /var/lib/docker /store/software/

    或者

    rsync -r -avzP /var/lib/docker /store/software/

    然后备份原目录数据:

    mv -u /var/lib/docker /var/lib/docker.bak

    方法一:软链接

    通过把 Docker 的原安装(存储)目录移动到自定义的其他路径下,然后在原位置下建立软链接是最简单快捷的方式。

    首先,关停 Docker 服务:

    sudo systemctl stop docker
    # or
    sudo service docker stop

    接着,新建一个 /var/lib/docker  的软链:

    sudo ln -fs /store/software/docker /var/lib/docker

    最后,重启 Docker 服务:

    sudo systemctl start docker
    # or
    sudo service docker start

    启动 Docker 之后,以后你 pull image 和 run container,Docker 写入的路径依然是/var/lib/docker ,但是因为软链的设置,实际已经是往新的目录写入了。至此,完成了 Docker 安装(存储)目录的迁移。

    方法二:直接修改 Docker 配置文件

    Docker 版本 < v17.05.0

    因为 dockerd 运行 Docker 服务的时候可以通过参数 graph 指定镜像和容器存放路径,比如: –graph=/var/lib/docker  ,我们只需要修改配置文件指定启动参数即可。

    Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是: /etc/default/docker  ,在 CentOS 中的位置是: /etc/sysconfig/docker  。

    # 如果是 CentOS 则添加下面这行:
    OPTIONS=--graph="/store/software/docker" --selinux-enabled -H fd://
    
    # 如果是 Ubuntu 则添加下面这行(因为 Ubuntu 默认没开启 selinux):
    OPTIONS=--graph="/store/software/docker" -H fd://
    # 或者
    DOCKER_OPTS="-g /store/software/docker"
    

    Docker 版本 >= v17.05.0

    因为 Docker 官方在这个发行版本就 deprecated 了 graph 这个 feature,所以如果你机器上安装的 Docker 版本 >= v17.05.0,则无法通过在 /etc/default/docker  配置文件中指定 graph 参数来修改 Docker 的默认安装(存储)目录了,具体参见官网文档:Docker Docs。

    好在天无绝人之路,新版本的 Docker 还有其他方式可以达到我们修改安装(存储)目录的目的:通过修改(新建) /etc/docker/daemon.json  ,指定 data-root 参数的值。

    按如下操作:

    vim /etc/docker/daemon.json

    加入

    {
    "data-root": "/store/software/docker",
    "storage-driver": "overlay2" # 这个是 Docker 是默认设置,这里也可以不用加
    }

    重启 Docker & 清理原安装(存储)目录
    最后,重启 Docker 服务:

    sudo systemctl restart docker
    # or
    sudo service docker restart

    [c-alert type=”warning”]通过上述任一方法完成迁移之后,在确认 Docker 能正常工作之后,删除备份的原目录数据:[/c-alert]

    rm -rf /var/lib/docker.bak

    原文参考链接
    [1] Docker配置本地镜像与容器的存储位置

    [2] Control Docker with systemd

    [3] Deprecated Engine Features

    本站参考链接

    [1] docker中/var/lib/docker目录迁移 – 不如吃茶去 (yuwb.pub)

    [2] 怎么迁移 docker 的工作目录 – V2EX

    [3] 【docker】软链接迁移docker存储目录_Docker_非晓为骁_InfoQ写作社区

    [4] Docker数据目录迁移方法详解_docker_脚本之家 (jb51.net)