跳到主要内容

git 操作远程分支

· 阅读需 1 分钟
素明诚
Full stack development
# 列出所有远程仓库的简短名称
git remote

# 显示所有远程仓库的详细信息,包括URL
git remote -v

# 添加一个新的远程仓库,并命名
git remote add origin https://github.com/user/repo.git

# 删除一个远程仓库
git remote remove origin

# 从远程仓库下载新分支与数据
git fetch origin

# 从远程仓库拉取数据并自动合并到当前分支
git pull origin master

# 将本地分支的更新推送到远程仓库
git push origin master

# 显示某个远程仓库的详细信息
git remote show origin

# 删除远程仓库的分支
git push origin --delete feature

Linux 修改 root 用户的密码

· 阅读需 1 分钟
素明诚
Full stack development

修改 root 用户

如果你需要修改 root 用户自己的密码,可以直接运行 passwd 命令

passwd

系统会提示你输入并确认新密码:

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

修改其他用户的密码

切换到 root 用户(如果还没有切换)

sudo -i

修改用户 alice 的密码

passwd alice

操作步骤同上

Linux 使用 zstd 解压缩

· 阅读需 2 分钟
素明诚
Full stack development

zstd(Zstandard)是一个由 Facebook 开发的高效压缩算法和工具。

基本用法

安装 zstd 在大多数 Linux 发行版中,可以通过包管理器安装 zstd

sudo apt install zstd      # Debian/Ubuntu
sudo yum install zstd # CentOS
sudo dnf install zstd # Fedora

压缩文件 使用 zstd 压缩文件,命令格式如下

zstd [文件名]

例如,压缩一个名为 example.txt 的文件

zstd example.txt

这会创建一个压缩后的文件 example.txt.zst

解压文件 使用 zstd 解压文件,命令格式如下

zstd -d [压缩文件名]

或者使用长参数 --decompress

zstd --decompress example.txt.zst

调整压缩等级 zstd 允许你指定压缩等级(1-19),默认为 3。等级越高,压缩比越好,但需要更多的处理时间

zstd -[等级] example.txt

例如,使用压缩等级 5 压缩文件

zstd -5 example.txt

使用注意事项

内存使用,高压缩等级可能会显著增加内存使用。在资源受限的环境中,应避免使用过高的压缩等级。

文件覆盖,默认情况下,zstd 在压缩或解压时不会覆盖现有文件。如果需要覆盖,可以添加 -f(或 --force)参数。

批量处理,可以使用通配符一次压缩或解压多个文件

zstd *.txt           # 压缩当前目录下所有 .txt 文件
zstd -d *.zst # 解压当前目录下所有 .zst 文件

Docker 配置代理

· 阅读需 2 分钟
素明诚
Full stack development

创建 systemd 服务覆盖文件

为了避免直接修改原始的 systemd 服务文件

  1. 打开终端。
  2. 运行以下命令来为 docker.service 创建或编辑一个覆盖文件
sudo systemctl edit docker.service

这个命令会打开一个文本编辑器,允许你为 Docker 服务添加或修改配置。

添加环境变量

在打开的编辑器中,添加以下内容以设置环境变量,使用您的代理服务器地址和端口替换 127.0.0.1:7890

[Service]
Environment="HTTP_PROXY=socks5://127.0.0.1:7890"
Environment="HTTPS_PROXY=socks5://127.0.0.1:7890"

保存并关闭编辑器。systemd 会自动保存这些更改到 /etc/systemd/system/docker.service.d/override.conf 文件,这是一个专门为覆盖原始服务配置的文件。

重新加载 systemd 配置

修改 systemd 配置后,需要重新加载配置,使更改生效

sudo systemctl daemon-reload

这一步确保 systemd 读取了最新的服务配置。

重启 Docker 服务

最后,重启 Docker 服务以应用新的代理设置

sudo systemctl restart docker

验证代理设置是否生效

完成上述步骤后,可以检查 Docker 服务的环境变量是否正确设置。使用以下命令查看服务的当前状态和环境变量

systemctl status docker.service

在输出中,应当能看到设置的环境变量 HTTP_PROXYHTTPS_PROXY

npm 设置源 淘宝阿里腾讯华为网易中科清华

· 阅读需 2 分钟
素明诚
Full stack development

永久更改源

设置淘宝源

npm config set registry https://registry.npmmirror.com

设置阿里云源

npm config set registry https://npm.aliyun.com

设置腾讯云源

npm config set registry https://mirrors.cloud.tencent.com/npm/

设置华为云源

npm config set registry https://mirrors.huaweicloud.com/repository/npm/

设置网易源

npm config set registry https://mirrors.163.com/npm/

设置中科院大学开源镜像站

npm config set registry https://mirrors.ustc.edu.cn/npm/

设置清华大学开源镜像站

npm config set registry https://mirrors.tuna.tsinghua.edu.cn/npm/

恢复使用官方 npm 源

npm config set registry https://registry.npmjs.org

查看当前使用的源

要查看您当前使用的是哪个源,可以运行

npm config get registry

这将显示当前配置的源 URL。

使用.npmrc 文件配置源

您也可以在项目的根目录或您的用户目录中创建或修改 .npmrc 文件,直接添加或修改源设置

registry=https://registry.npmmirror.com

这种方法适合在项目级别设置源,不影响全局配置。

使用 nrm 管理源

nrm 是一个 npm 源管理器,可以帮助您快速切换不同的源。首先,您需要安装 nrm

npm install -g nrm

然后,您可以使用 nrm 来切换源

列出所有可用的源

nrm ls

切换到淘宝源

nrm use taobao

切换回官方源

nrm use npm

Linux 使用 skopeo

· 阅读需 1 分钟
素明诚
Full stack development

在 Fedora 和 RHEL 上安装

sudo dnf install skopeo

在 Ubuntu 上安装

sudo apt-get -y install skopeo

使用 Homebrew 在 macOS 上安装

brew install skopeo

基本用法

检查容器镜像

skopeo inspect docker://docker.io/library/alpine:latest

检查 Docker Hub 上的 Alpine 镜像并返回其元数据。可以使用类似的命令检查其他容器注册表中的镜像。

复制容器镜像

skopeo copy docker://docker.io/library/alpine:latest docker://myregistry.local/library/alpine:latest

将 Docker Hub 上的 Alpine 镜像复制到私有注册表 myregistry.local

复制镜像到本地目录

skopeo copy docker://docker.io/library/alpine:latest dir:/path/to/local/dir

将 Alpine 镜像复制到本地目录 /path/to/local/dir

删除容器镜像

skopeo delete docker://myregistry.local/library/alpine:latest

删除私有注册表 myregistry.local 上的 Alpine 镜像。

使用身份验证

对于需要身份验证的容器注册表,可以使用 --creds 参数:

skopeo copy --src-creds myusername:mypassword docker://docker.io/myrepo/myimage:latest docker://myregistry.local/myrepo/myimage:latest

将带有身份验证信息的 Docker Hub 上的镜像复制到私有注册表。

复制镜像到 OCI 格式

skopeo copy docker://docker.io/library/alpine:latest oci:/path/to/alpine-bundle:latest

将 Docker Hub 上的 Alpine 镜像保存为本地的 OCI 格式 tar 文件。

Docker Compose 命令详解

· 阅读需 4 分钟
素明诚
Full stack development

docker-compose up

此命令用于创建、重建、启动和连接容器。在前台运行时,会显示所有服务的启动日志。

Creating network "myapp_default" with the default driver
Creating volume "myapp_dbdata" with default driver
Creating myapp_web_1 ... done
Creating myapp_db_1 ... done
Attaching to myapp_web_1, myapp_db_1

docker-compose down

默认情况下,docker-compose down 不会 删除由 docker-compose.yml 文件中定义的卷(即那些通过 volumes: 部分指定的卷)。这些卷会保留以便将来重用,除非您手动删除它们。

Stopping myapp_web_1 ... done
Stopping myapp_db_1 ... done
Removing myapp_web_1 ... done
Removing myapp_db_1 ... done
Removing network myapp_default

docker-compose build

如果有 build 的配置会重新构建服务。

db uses an image, skipping
Building web
Step 1/3 : FROM node:10
---> 123abc
Step 2/3 : ADD . /code
---> Using cache
---> 456def
Step 3/3 : RUN npm install
---> Running in 789ghi

docker-compose ps

显示与配置中定义的服务相关的容器。

     Name                   Command              State           Ports
---------------------------------------------------------------------------------
myapp_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp,:::80->80/tcp
myapp_db_1 docker-entrypoint.sh postgres Up 5432/tcp

docker-compose start

启动一个或多个已停止的容器。

Starting db_1 ... done
Starting web_1 ... done

docker-compose stop

停止正在运行的容器。

Stopping myapp_web_1 ... done
Stopping myapp_db_1 ... done

docker-compose restart

重启服务。

Restarting myapp_web_1 ... done
Restarting myapp_db_1 ... done

docker-compose logs

查看服务的日志输出。

Attaching to myapp_web_1, myapp_db_1
web_1 | Example app listening at http://localhost:3000
db_1 | 2021-01-01 12:00:00.000 UTC [1] LOG: database system is ready to accept connections

docker-compose pull

拉取服务依赖的镜像。

Pulling db (postgres:latest)...
latest: Pulling from library/postgres
Digest: sha256:abc123
Status: Downloaded newer image for postgres:latest

docker-compose push

将服务中涉及的镜像推送到 Docker Hub 或其他镜像仓库。

Pushing api (myregistry.com/myapp/api)...
The push refers to repository [docker.io/myapp/api]
5f70bf18a086: Pushed

docker-compose exec

如果您的 docker-compose.yml 定义中某个服务配置为多个容器实例,执行 docker-compose exec 命令将默认选择由该服务创建的第一个容器。如果需要在特定的容器上执行命令,通常需要通过 Docker 的底层命令来处理

$ docker-compose exec db psql -U postgres

psql (12.2)
Type "help" for help.

postgres=#

docker-compose run

使用一个服务以一次性模式执行命令。

$ docker-compose run web env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=8b1b53f6cfa9

docker-compose rm

删除所有(停止状态的)服务容器。

Going to remove myapp_web_1, myapp_db_1
Are you sure? [yN] y
Removing myapp_web_1 ... done
Removing myapp_db_1 ... done

docker-compose config

验证并查看配置。

services:
db:
image: postgres
restart: always
web:
build: .
ports:
- "5000:5000"
version: '3.0'

docker-compose kill

kill 不会删除容器,也不会删除容器的网络配置或者挂载的卷。这意味着您可以使用 docker-compose start 命令再次启动这些容器,而其环境配置和数据将保持不变。这使得 kill 命令非常适用于需要快速停止服务而不希望丢失任何数据的场景

Killing myapp_web_1 ... done
Killing myapp_db_1 ... done

docker-compose pause

对容器使用 pause 命令时,Docker 会使用 Linux 内核的 cgroups 功能来暂停容器中所有的进程。这意味着这些进程会立即停止执行,所有的 CPU 操作将会被冻结,但是容器的内存状态保持不变。容器中的进程就像是被“冻结”在某个特定的时刻。

这个功能特别适用于需要临时释放系统资源(如 CPU 使用率)但又不想结束或重启容器的情况。例如,如果您运行的某个服务暂时不需要处理任务,但您希望保留其当前的状态,可以暂停该服务,之后再恢复其运行,恢复时容器会从暂停时的状态继续运行。

砸瓦鲁多~

Pausing myapp_web_1 ... done
Pausing myapp_db_1 ... done

docker-compose unpause

恢复服务中已暂停的容器。

Unpausing myapp_web_1 ... done
Unpausing myapp_db_1 ... done

docker-compose port

打印绑定的公开端口。

$ docker-compose port web 5000
0.0.0.0:49153

docker-compose top

显示运行的容器中的进程。

myapp_web_1
UID PID PPID C STIME TTY TIME CMD
root 2618 2595 0 10:00 ? 00:00:02 nginx: master process nginx -g daemon off;

使用自定义配置文件

如果您有一个不是标准命名(即非 docker-compose.yml)的配置文件,比如叫 custom-compose.yaml,您可以这样运行 docker-compose 命令:

docker-compose -f custom-compose.yaml up

整理不易,求关注

docker-compose 配置字段详解

· 阅读需 2 分钟
素明诚
Full stack development

version

指定 docker-compose 文件使用的版本,这会决定你可以使用的配置选项和行为。

version: '3.8'

services

定义应用中的服务,每个服务都会成为一个容器。这是 docker-compose.yml 文件的核心部分。

services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
environment:
POSTGRES_DB: example

build

构建镜像的配置。可以指定 Dockerfile 的位置和构建上下文路径。不建议在这里做构建,建议在外面使用 Dockerfile 实现

services:
app:
build:
context: .
dockerfile: Dockerfile
args:
ARG1: value1

image

指定服务使用的镜像名称和标签。

services:
redis:
image: "redis:alpine"

ports

映射端口。格式为 [宿主机端口]:[容器端口]

services:
web:
ports:
- "4000:80"

volumes

挂载卷,用于数据持久化和共享数据。

services:
db:
volumes:
- "dbdata:/var/lib/postgresql/data"
volumes:
dbdata:

environment

设置环境变量,可以用来配置容器内应用。

services:
web:
environment:
- DEBUG=1

depends_on

指定服务启动的依赖关系,确保服务按照特定的顺序启动。

services:
web:
depends_on:
- db

networks

定义网络,用于连接各个服务。服务只能通过网络互相访问。

services:
web:
networks:
- frontend
db:
networks:
- backend
networks:
frontend:
backend:

command

覆盖容器启动后默认执行的命令。

services:
myservice:
command: ["python", "app.py"]

使用 links 可以使得一个服务容器能够安全地访问另一个服务的容器,通过其服务名作为主机名。links 也可以为链接的服务提供别名,使得在源容器内部可以通过别名来访问目标容器。

services:
web:
links:
- db:database

restart

配置服务的重启策略。

services:
web:
restart: always

healthcheck

定义健康检查,用于确定服务的健康状态。

services:
web:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s

logging

配置日志记录选项。

services:
web:
logging:
driver: syslog
options:
syslog-address: "tcp://192.168.0.42:123"

这些是 docker-compose.yml 文件中最常见的配置项,通过这些配置,用户可以详终定义和管理容器化应用的行为。每个选项都提供了控制和调整容器运行环境的灵活性,使得 docker-compose 成为管理容器应用的强大工具。

Win11 设置开机直接进入桌面

· 阅读需 2 分钟
素明诚
Full stack development

步骤 1: 打开注册表编辑器

打开运行对话框按下 Win + R

启动注册表编辑器输入 regedit 并按 Enter,确认提示以打开注册表编辑器。

步骤 2: 导航到登录设置的注册表位置

导航到以下路径

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

步骤 3: 修改或创建自动登录所需的值

设置默认用户名

  • Winlogon 键下,找到或创建一个名为 DefaultUserName 的字符串值(REG_SZ)。双击它,输入你希望自动登录的账户名称。

设置默认域名(如果适用)

  • 对于加入到域的计算机,找到或创建一个名为 DefaultDomainName 的字符串值(REG_SZ)。双击它,输入域名。个人 PC 不用设置这个

设置默认密码

  • 找到或创建一个名为 DefaultPassword 的字符串值(REG_SZ)。双击它,输入该账户的密码。如果这个值不存在,你需要新建它。

启用自动登录

  • 找到或创建一个名为 AutoAdminLogon 的字符串值(REG_SZ)。双击它,并设置值为 1

步骤 4: 完成修改并重启计算机

  • 完成上述所有设置后,关闭注册表编辑器。
  • 重启计算机以应用更改。如果设置无误,电脑将会在启动时自动登录指定的用户账户。

备份和还原注册表

由于直接编辑注册表具有一定风险,强烈建议在进行任何更改之前备份注册表

  • 在注册表编辑器中,选择你想备份的键(例如,Winlogon 键)。
  • 点击“文件” > “导出”。
  • 在弹出的对话框中,选择一个保存位置,为备份文件命名,然后点击“保存”。

如果需要恢复原先的注册表设置,可以通过“文件” > “导入”来恢复你保存的备份文件。

常用的 docker-compose 命令行选项

· 阅读需 3 分钟
素明诚
Full stack development

常用的 docker-compose 命仅行选项

-p | --project-name 用于指定项目名称。默认情况下,docker-compose 使用当前目录名作为项目名称。使用此选项可以自定义项目名称,这在同一台机器上运行多个配置实例时非常有用。

-d | --detachup 命令结合使用,使服务在后台运行。这样,docker-compose 命令执行后会立即返回控制台,而不占用命令行。

docker-compose up -d

--no-deps 启动服务时不启动其依赖的服务。当只需重启单个服务而不影响其他依赖服务时使用。

--build

  1. 构建或重新构建镜像:根据 docker-compose.yml 文件中定义的 build 上下文和配置自动构建或更新服务所需的镜像。
  2. 停止并移除当前运行的容器:如果这些服务的容器已经在运行,且相关镜像有更新,Docker Compose 会停止并移除这些容器。
  3. 启动新容器:使用新构建的镜像启动新的容器实例,确保服务运行的是最新的代码和依赖版本。
docker-compose up --build

--no-build 启动服务时跳过构建步骤,直接使用现有镜像。

--no-color 禁用彩色输出,适用于输出日志时避免颜色代码造成的阅读困难。

--verbose 输出更多的调试信息,包括与 Docker 引擎的通信。

--no-ansi 禁止输出 ANSI 控制字符,适用于需要清晰日志输出的场景。

-t | --timeout 设置命令超时时间(单位为秒)。这对于控制容器停止等操作的响应时间非常有用。

-v | --version 显示 docker-compose 的版本。

--scale 动态调整服务的副本数量。

docker-compose up --scale web=3

进阶和特定用途的 docker-compose 命令行选项

--env-file 指定一个环境变量文件。这允许从外部文件加载环境变量,而不是在 docker-compose.yml 文件中硬编码。

docker-compose --env-file .env.production up

--log-level 设置日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL),以控制输出的详细程度。

--profile 指定包含在启动时的配置文件。这可以用于根据不同的环境或条件启动不同的服务集合。

--remove-orphans 在执行 updown 命令时移除不再定义在配置文件中的孤立容器。

--force-recreate 即使配置未更改,也强制重新创建容器。这在更新环境或修复问题时非常有用。

--always-recreate-deps 当服务被重新创建时,强制重新创建其所有依赖的服务。

--abort-on-container-exit 当任何容器退出时,停止所有容器。这在自动化测试环境中尤为重要,确保如果一个组件失败,整个环境都将停止。

--exit-code-from 使用 up 命令时,设置从特定服务获取退出代码。这对 CI/CD 管道中的错误处理非常有用。

--follow 跟随日志输出,通常与 logs 命令结合使用,用于实时监控日志。