解决因网络原因导致的 Docker 构建镜像太慢的问题

docker pull 太慢 可以通过设置 docker 的国内源解决 sudo vi /etc/docker/daemon.json 写入以下内容 { "registry-mirrors" : [ "https://mirror.ccs.tencentyun.com" ] } 重启docker服务 systemctl restart docker.service docker build 太慢 更改 docker 源只能解决 docker pull 时慢的问题,如果需要在构建阶段进行下载,例如 apt update 、pip install 之类的操作则需要替换对应的源。 替换 pip 的源相对简单,可以在 pip 命令时指定源,例如 pip install -i https://pypi.mirrors.ustc.edu.cn/simple requests。 替换 apt 源则比较麻烦,因为不同的 base image 可能碰到不一样的问题。例如 python-slim 镜像需要替换 /etc/apt/sources.list 文件,添加国内源后会报公钥验证的错误,见 How can I write a Dockerfile based on Debian Slim in which ‘apt-get update’ doesn’t fail with public key errors?,根据网上教程添加公钥,又会报请先安装 gnupg:E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation,想要安装 gnupg,要先执行 apt-update 。我本来就是为了执行 apt-update,整闭环了。 ...

March 27, 2024

通过 Wireguard 实现内网穿透

架构 graph BT 内网服务器 <--> 云服务器 云服务器 <--> 客户端A 云服务器 <--> 客户端B 在内网服务器(需要被穿透的机器)、拥有公网 IP 的云服务器、以及各个客户端(笔记本、iPhone 等)上分别安装 Wireguard ,以云服务器作为中心节点组建虚拟局域网。各个客户端通过向云服务器发送 keepalive 的心跳保持活跃。局域网中各个终端可以实现互联。 安装 ubuntu 安装 sudo apt install wireguard # check wg version iPhone 可以在美区 AppStore 下载 配置 云服务器配置 生成密钥 # 生成节点公私钥 wg genkey | tee yourhost_privatekey | wg pubkey > yourhost_publickey # 生成 preshared key # preshared key 是可选配置,配置后可以加一层对称加密更加安全 wg genpsk 配置文件 [Interface] # Name = host Address = 192.168.168.1/24 # define the local IP for the server ListenPort = 51820 # listen port of the server PrivateKey = ... # private key of the server # 配置 IP 伪装 #PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE #PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # Name = nas PublicKey = ... # public key of the machine behind NAT PresharedKey = ... # preshared key of server <-> NAS AllowedIPs = 192.168.168.2/32 # the peer's local IP [Peer] # Name = iphone PublicKey = ... # public key of client A PresharedKey = ... # preshared key of server <-> client A AllowedIPs = 192.168.168.3/32 # the peer's local IP [Peer] # Name = notebook PublicKey = ... # public key of client B PresharedKey = ... # preshared key of server <-> client B AllowedIPs = 192.168.168.4/32 # the peer's local IP 将上述文件放到 /etc/wireguard/wg.conf 路径 ...

March 7, 2024