判断 IP 或端口被封(墙)

IP 检测

命令行方式

最简单的是在命令行窗口上测试

$ ping x.x.x.x.

在线方式

可使用网站 Ping检测 进行测试

判断

  • 如果国内和国外都 ping 不通,则是海外服务器的问题
  • 如果国内 ping 不通,国外能 ping 通,那么 IP 被封了

端口检测

命令行方式

使用 telnet 命令测试端口:

# 可以直接测试 IP 或域名
$ telnet ip port

# 成功举例
telnet bus1.skybyte.me 443
Trying 104.243.19.12...
Connected to bus1.skybyte.me.
Escape character is '^]'.

# 失败举例
telnet x.x.x.x 500
Trying x.x.x.x...
telnet: connect to address x.x.x.x: Connection refused
telnet: Unable to connect to remote host

在线方式

判断

  • 如果国内和国外都不能连通,是服务器问题
  • 如果国内不能连通,国外能连通,那么端口被封了

References

Ubuntu 安装指定版本 docker

如果你过去安装过 docker,先删掉:

sudo apt-get remove docker docker-engine docker.io containerd runc

首先安装依赖:

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

信任 Docker 的 GPG 公钥并添加仓库: 发行版

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirror.nju.edu.cn/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装最新

sudo apt-get update
sudo apt-get install docker-ce

安装指定版本

首选查看都有哪些版本可选

apt-cache madison docker-ce | awk '{ print $3 }'

选择版本并安装

# 以 5:20.10.13~3-0~ubuntu-jammy 为例
VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy

sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

Reference

debmirror 镜像 nexus3 apt 仓库

nexus3 没有很好的目录重命名方法。

使用 apt-mirror 镜像会出错,实测 debmirror 没问题。下面记录方法:

首先导入公钥

导入 apt 公钥

如果你已经有了公钥文件(如 public.key),你可以使用以下命令将其导入到 GPG 密钥环和 APT 的受信任密钥列表中:

  1. 导入 GPG 密钥到密钥环:
gpg --import public.key
  1. 查找密钥 ID。在导入密钥后,gpg 将显示类似于以下内容的输出:
gpg: key 1234567890ABCDEF: public key "Your Name <your.email@example.com>" imported

在这个示例中,1234567890ABCDEF 是密钥 ID。

  1. 将 GPG 公钥导出到 APT 的受信任密钥列表中:
gpg --export --armor 1234567890ABCDEF | sudo tee /etc/apt/trusted.gpg.d/1234567890ABCDEF.gpg

将 1234567890ABCDEF 替换为你的 GPG 密钥 ID。

现在,你已经成功地将公钥导入到 GPG 密钥环和 APT 的受信任密钥列表中。在使用 apt 或 debmirror 时,它们应该能够验证签名的仓库。

镜像仓库

为了使用 debmirror 镜像你的 Nexus3 APT 仓库,请按照以下步骤操作:

  1. 首先确保你已经安装了 debmirror。在基于 Debian/Ubuntu 的系统上,可以使用以下命令安装:
sudo apt-get install debmirror
  1. 在运行 debmirror 之前,首先确保已经导入了 GPG 密钥。你可以使用以下命令导入密钥:

见上一步。

  1. 运行 debmirror 命令,指定仓库地址、发行版、组件和架构等参数。这里是一个示例命令:
debmirror --host=192.168.25.8:8081 \
    --root=repository/test-apt-host \
    --method=http --progress --dist=bullseye \
    --section=main --arch=arm64 \
    --rsync-extra=none \
    --ignore-release-gpg ./pve-arm/

这个命令将从 http://192.168.25.8:8081/repository/test-apt-host 镜像别名为 bullseye 的发行版中 arm64 架构的相关 apt 包到本地的 ./apt-arm/ 目录。

根据需求,可以修改这些参数。

注意:--ignore-release-gpg 参数会跳过 GPG 签名检查。在确认仓库是可信的情况下,可以使用此参数。

--rsync-extra=none 会跳过 rsync 下载额外文件。

  1. 等待 debmirror 完成镜像过程。这可能需要一段时间,具体取决于仓库的大小。

完成这些步骤后,你应该在本地 ./pve-arm/ 目录中找到镜像的仓库。如果遇到任何问题,请确保检查命令中的参数是否正确。

检查当前终端是不是 Docker

要确定当前运行的终端是否在 Docker 容器内,可以检查容器特定的文件和环境变量。以下是一种方法,通过查看 /proc/1/cgroup 文件来判断:

cat /proc/1/cgroup

观察输出的内容。如果您看到与 Docker 相关的内容(如 docker 或 containerd),则表示您当前正在 Docker 容器内运行。例如:

12:memory:/docker/9a3c3b3d3e3c413dc3f3e3g3h3i3j3k3l3m
11:devices:/docker/9a3c3b3d3e3c413dc3f3e3g3h3i3j3k3l3m
...

如果输出中没有提到 Docker 或类似的容器技术,那么您可能不在 Docker 容器内运行。

请注意,这种方法主要适用于 Docker 容器,而不一定适用于其他容器技术(如 Podman、LXC 等)。如果您使用的是其他容器技术,可能需要查找特定于该技术的文件或环境变量。