jeffrey 发布的文章

Docker是一种容器化技术,可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件,而不再需要安装配置各种环境。

安装Docker

1.首先,安装一些必要的软件包:

apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates

2.然后加入 Docker 的 GPG 公钥和 apt 源:

curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list

国内机器可以用清华 TUNA 的国内源:

curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list

3.更新系统后即可安装 Docker CE

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

使用 docker version 命令检查是否安装成功:

 ~ # docker version

4.使用特定用户运行Docker(可选)

特定用户可以用 Docker rootless 模式运行 Docker,把用户也加入 docker 组,比如我们把 www-data 用户加进去:

apt install docker-ce-rootless-extras
sudo usermod -aG docker www-data

5.修改 Docker 配置

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小。

cat > /etc/docker/daemon.json << EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

重启 Docker 服务:

systemctl restart docker
Docker Compose是一个用于在单个主机上定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务,然后使用一个命令就可以创建并启动所有服务。

安装 Docker Compose

安装Docker时安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose

~ # docker compose version
Docker Compose version v2.24.5

1.使用 Docker 官方发布的 Github 直接安装最新版本:

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

使用 docker-compose version 命令检查是否安装成功:

~ # docker-compose version
Docker Compose version v2.18.1

本文以Ubuntu20.05系统为例安装docker。

检查卸载老版本docker

ubuntu下自带了docker的库,不需要添加新的源。

但是ubuntu自带的docker版本太低,需要先卸载旧的再安装新的。

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

如果不能正常卸载,显示无权限时,需要添加管理员权限才可进行卸载。

安装步骤

  1. 更新软件包

在终端中执行以下命令来更新Ubuntu软件包列表和已安装软件的版本:

sudo apt update
sudo apt upgrade
  1. 安装docker依赖

Docker在Ubuntu上依赖一些软件包。执行以下命令来安装这些依赖:

apt-get install ca-certificates curl gnupg lsb-release
  1. 添加Docker官方GPG密钥

执行以下命令来添加Docker官方的GPG密钥:

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  1. 添加Docker软件源

执行以下命令来添加Docker的软件源:

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

注:该命令需要使用root权限

  1. 安装docker

执行以下命令来安装Docker:

apt-get install docker-ce docker-ce-cli containerd.io
  1. 配置用户组(可选)

默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。命令如下:

sudo usermod -aG docker $USER

注:重新登录才能使更改生效。

运行docker

我们可以通过启动docker来验证我们是否成功安装。命令如下:

systemctl start docker

安装工具

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

重启docker

service docker restart

复制

验证是否成功

sudo docker run hello-world

查看版本

我们可以通过下面的命令来查看docker的版本

sudo docker version

查看镜像

上面我们拉取了hello-world的镜像,现在我们可以通过命令来查看镜像,命令如下:

sudo docker images

1.信息资讯

  • "" 限定关键字
  • intitle限定标题
  • allintitle 限定标题多个关键字
  • intext限定内容关键字
  • inure限定网址关键字
  • site 限定网址来源
  • imagesize 限定图片的尺寸
  • filetype 限定文件格式

2.知识技能

  • 查找报告

    • 限定PDF格式 filetype:pdf
    • 限定报告网站域名Inure
    • 寻找类似网站SimilarSites
  • 论文

    • 谷歌学术
    • Sci-hub
  • 电子书

    • jiuodiary.com
    • google
    • zlibrary
    • manybooks.net
    • www.pdfbooksworld.com
  • 阅读APP

    • 微信读书
    • 等到APP
    • Kindle
  • 视频

    • B站
    • 油管
    • 网易云课堂
    • 腾讯课堂
    • 可汗学院
    • OpenCulture
    • Coursera
    • Udacity
    • edX
    • Google(best online learning websites)
  • 网盘搜索

3.素材文件

  • 视频

    • www.pexels.com
    • www.pixabay.com
    • www.videvo.net
    • www.mixkit.com
    • Google(best sites for free stock videos)

    下载网站:https://save.tube/

  • 音频

    • Google(best sites for free bgm)
  • 图片

    • Google
    • Gettyimages.co.jp

      • 下载器 GettyImages Downloader
  • 文件

    • PPT模板 iSlide插件、canva.com

4.工具软件

在线工具->下载软件->安装插件

在线海报设计 canva.com

在线抠图 remove.bg

文字转语音 腾讯智影/Azure

画脑图/概念图 miro/canva

找影视剧台词 找台词网

在线剪视频 Clipchamp/FlexClip

测网速 fast.com

检测陌生链接安全性 virustotal.com

生成不存在人像 thispersondoesnotexist.com

生成单词略缩词 litscape.com

查找替代软件(发现新奇软件) alternativeto.net

插件

PMTU 黑洞
所谓 MTU,指的是一条链路上可以通过的三层数据包的最大尺寸(包含 IP 包头)。以太网默认的 MTU 是 1500 字节。但是从我的设备到目标服务器之间的路径上可能存在 MTU 小于 1500 的链路,那么这条路径上最小的 MTU,就是整条链路的 Path MTU(PMTU)。

路由器在转发包的时候,如果包的大小超过了 MTU,那么这个包会被分片(fragmentation)。而终端设备在发包时,也可以设置 DF 标志位(Don’t Fragment)来告诉路由器不要对这个包分片,此时如果这个包大小超过了 MTU,那么路由器就会丢掉这个包,并回复一条 ICMP Fragmentation Needed 消息。发送者收到这个消息后,下次就会发送小一点的包。这个过程叫做 PMTU 发现(PMTU Discovery)。

但是互联网中有大量的设备因为各种原因,会配置为不回应 ICMP Fragmentation Needed 消息,这使得大小超过 MTU 的包会被无声地丢掉,直到 TCP 协议发现超时丢包并进行重传。这种情况就是 PMTU黑洞。

此外,IPv6 包不支持分片,换句话说就是所有 IPv6 数据包全都带有 DF 标记。中间的路由器在遇到尺寸大于 MTU 的包的时候,应该回应 ICMPv6 Packet Too Big 消息,而同样的,由于各种原因,某些中间设备可能会直接丢掉这个包而不返回这条消息,直到 TCP 协议发现超时而进行重传。

在 RouterOS 中配置 MSS Clamping

# 将命令中 out-interface 参数的值替换成你的PPPoE接口的名字
/ip/firewall/mangle
add action=change-mss chain=forward comment="IPv4 MSS clamp to PMTU" \
    new-mss=clamp-to-pmtu out-interface="pppoe-out1" passthrough=yes \
    protocol=tcp tcp-flags=syn

/ipv6/firewall/mangle
add action=change-mss chain=forward comment="IPv6 MSS clamp to PMTU" \
    new-mss=clamp-to-pmtu out-interface="pppoe-out1" passthrough=yes \
    protocol=tcp tcp-flags=syn

1.生成 RSA 证书

acme.sh --issue -d www.example.com -w /var/www/ssl/

2.生成 ECC 证书

acme.sh --issue -d www.example.com -w /var/www/ssl/ --keylength ec-256
ECC证书:ECC证书是基于ECC算法的SSL证书,ECC证书中文名称为椭圆加密算法,新一代算法趋势主流,一般采用 256 位加密长度,加密速度快,效率更高,对服务器资源消耗低,而且最重要的是更安全,抗攻击型更强。
RSA证书:RSA证书是基于RSA算法的SSL证书,RSA算法是国际标准算法,应用较早,最为普及,比ECC算法的适用范围更广,兼容性更好,一般采用 2048 位的加密长度,但是对服务端性能消耗高。

3.安装 ECC 证书

acme.sh --installcert -d www.example.com   \
        --key-file   /ssl/www.example.com.key \
        --fullchain-file /ssl/www.example.com.crt \
        --reloadcmd  "systemctl reload nginx" --ecc

4.更新SSL证书

acme.sh --renew -d www.example.com --ecc --force

5.取消SSL证书的自动续期

acme.sh --remove -d www.example.com --ecc
您是第 68120 位访客