跳转至

2026#

Docker 应用部署

部署 Nginx

  1. 搜索并拉取 Nginx 镜像

    docker search nginx
    
    docker pull nginx:1.26.3
    
  2. 创建容器,设置端口映射、目录映射

    默认 nginx.config
    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/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  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  _;
            root         /usr/share/nginx/html;
    
            location / {
                index  index.html index.htm;
            }
    
            error_page  404              /404.html;
            location = /404.html {
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            }
        }
    
        # server {
        #     listen       80;
        #     server_name  example.com;
        #     root         /var/www/example.com;
        #     location / {
        #         try_files $uri $uri/ =404;
        #     }
        # }
    }
    
    docker run -id --name=docker_nginx \ 
    -p 80:80 "(1)!"
    -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \ "(2)!"
    -v $PWD/logs/var/log/nginx \ "(3)!"
    -v $PWD/html:/usr/share/nginx/html \
    nginx "(4)!"
    
    1. 端口映射,让本机的 80 端口映射到 nginx 容器的 80 端口
    2. 数据卷,让本地当前目录($PWD)下的 /conf/nginx.conf Nginx 配置文件映挂载到容器中,其余的数据卷是同样的道理,「配置文件要提前准备好

ImmortalWrt

ImmortalWrt 设备搜索地址 中查找支持设备。以下是我用的版本信息

项目 版本
硬件 FriendlyElec NanoPi R4S
架构 ARMv8 Processor rev 4 (v8l) x 6 (1416MHz 600MHz, 39.4°C)
目标平台 rockchip/armv8
固件镜像 SYSUPGRADE (SQUASHFS)
固件版本 ImmortalWrt 24.10.5 r33805-7c4e882aaf6f / LuCI openwrt-24.10 branch 26.042.32088~3dc9a84
内核版本 6.6.122

Docker 服务与架构

由于一般都是用 sudo 安装的 docker,所以使用 docker 的时候也需要用管理员权限运行命令,一般开发 / 测试 / 个人服务器环境下推荐将非 root 用户添加进 docker 组里面,这样就不用重复输入 sudo 提升权限了。将非 root 用户添加进 docker 组按照这个流程:

  1. 把用户加入 docker 组

    sudo usermod -aG docker $USER
    
  2. 重新登录

    exit
    
  3. 重启 Docker

    sudo systemctl restart docker
    
  4. 再试一下命令

    docker images
    

自制 Dokcer 镜像

前言

先说本质,Docker 镜像本质上是一个「只读的、分层」的文件系统模板,包含应用程序及其依赖的运行环境(如 rootfs),通过联合文件系统(如 UnionFS)堆叠多层实现高效共享和复用。

  1. docker 的 ubuntu 镜像只要几百 MB,为什么 ubuntu 操作系统的 IOS 却要几个GB?

    因为 Docker 镜像中仅包含用户空间文件系统(rootfs),剔除了内核(bootfs)、引导程序、GUI 和大量不必要工具,这些容器直接使用宿主机内核。相比之下,Ubuntu ISO 达几个GB,是完整可引导的安装介质,包括内核、安装程序、多种架构支持和完整软件包。

  2. 那为什么 tomcat 镜像要几百兆,实际的 tomcat 只需要几十兆呢?

    官方 Tomcat 镜像几百MB,主要基于基础镜像 + JDK 和 Tomcat 文件,以及安装过程中的缓存、文档等冗余层。大概就是这个逻辑:

Docker 安装

开发阶段使用 Windows 或 macOS 运行 Docker 是完全可行的,但在部署或生产环境中,一般还是更推荐直接在 Linux 服务器上运行 Docker。

因为在 Windows 或 macOS 上运行 Docker 时的本质是通过虚拟化 Linux 内核来运行容器,相当于「容器跑在虚拟机里的 Linux 上」。这种方式虽然对开发者非常友好,但在性能、文件系统 IO、网络等方面通常会有一定损耗。

Vim 使用小全

模式类型

Vim 与普通编辑器的最大区别在于它有模式。

  • 普通模式: 默认模式。用于移动光标、删除文本、复制粘贴。

  • 插入模式: 按 i 进入。像普通编辑器一样打字。

  • 命令行模式: 按 : 进入。用于保存、退出、替换等。

  • 可视模式: 按 v 进入。用于选中文本块。

Windows 快捷键

删除 Win+V 快捷键

  1. Win+V 这个快捷键是剪贴板用户服务注册的, 要强制禁用每用户服务:

    首先去 注册表 定位到这个目录, 将对应的服务 Start 键调至 4, UserServiceFlags 键调至 0

    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
    
    服务功能 服务名
    GameDVR 和广播用户服务 BcastDVRUserService
    剪贴板用户服务 cbdhsvc
    连接设备平台用户服务 CDPUserSvc
    同步主机 OneSyncSvc
    联系人数据 PimIndexMaintenanceSvc
    Windows Push Notifications User Service WpnUserService
  2. 或者关闭云剪贴板:

    • 组策略-计算机配置-管理模板-系统-OS 策略-允许使用剪贴板历史记录:已禁用

    • 组策略-计算机配置-管理模板-系统-OS 策略-允许剪贴板在设备间同步:已禁用

Nginx 编译安装

准备环境与依赖库

在编译之前先要明白自己的需求, 比如我现在需要 https / http2 和挂多个 HTTPS 域名, 那在编译 Nginx 之前首先就要安装构建工具和 Nginx 依赖的库。

sudo apt update

sudo apt install -y build-essential \
libssl-dev libpcre3-dev \
zlib1g-dev \
wget

Samba 安装、使用教程

Ubuntu 端配置

  1. 安装 Samba 之后 修改 samba 配置, 并在末尾 添加挂载信息

    sudo apt update
    sudo apt install samba -y
    
    sudo vim /etc/samba/smb.conf
    
    挂载信息
    [UbuntuShare]
        path = /home/ubuntu/shareDir # (1)!
        available = yes
        browsable = yes
        public = yes
        writable = yes
        read only = no
    
    1. 要挂载的目录地址,最好是绝对地址

    添加完成之后按键盘左上角的 Esc 退出编辑模式,再按 : 进入命令模式后输入 wq! 保存并退出。

  2. 设置密码后 重启 samba 服务

    sudo smbpasswd -a ubuntu # (1)!
    sudo systemctl restart smbd
    
    1. ubuntu 代表用户名