从此
📄文章 #️⃣专题 🌐酷站 👨‍💻技术 📺 📱

Linux OS操作系统 & DevOps & Docker容器 & K8S

Linux OS操作系统 \ DevOps

综合

标题

原则
...
内容
...
各发行版

Debian

原则
分区:main(发行版)、contrib(依赖非自由软件的自由软件)、non-free(非自由软件包)、non-free-firmware(非自由固件包)
稳定版 (stable) 、测试版 (testing) 、不稳定版 (unstable)
内容
首选Debian;
容器化

LXC - Docker/Podman/K8S

原则
开机启动首选docker,开发环境首选podman;用于沙盒可选择更轻量级的 systemd-nspawn。

Linux安装Docker:docker-ce虽为官方但要配软件源。
  apt install docker.io -y
  小容器测试 docker pull busybox
  查看镜像Created时间或Version信息 docker image inspect busybox

Linux安装podman:apt install podman -y


Docker国内拉取镜像到大陆电脑(不用翻墙):
  Cloudflare Workers镜像加速 - https://docker.awsl9527.cn/
  [非最新版]300多个知名常用镜像(nginx、debian、openjdk等) - https://atomhub.openatom.cn/repos

  全量镜像:使用说明
    sudo mkdir -p /etc/docker

    sudo tee /etc/docker/daemon.json <<EOF
    {
      "registry-mirrors": [
          "https://docker.m.daocloud.io",
          "https://docker.awsl9527.cn"
      ]
    }
    EOF

    sudo systemctl daemon-reload
    sudo systemctl restart docker

  或 离线导出、导入容器镜像:
    sudo podman save > ~/image.tar nginx:latest  #导出
    sudo docker load < ~/image.tar               #导入镜像
内容
Docker:

  docker多命令入口写法: ENTRYPOINT ["/bin/sh", "-c" , "echo -n 'multiple commands...' && echo -n 'other commands'"]

  构建时传参:docker build --build-arg K=V --build-arg k2=v2 ...
    Dockerfile脚本内必须声明k键,若遇到FROM后使用必须再次通过ARG声明:
      ARG K
      RUN echo $K
      FROM ...
      ARG K
      RUN echo "${K}"


k8s/Kubernetes:
  k8s精准获取deployment关联的pods

Linux操作系统

实战:

服务器安全 - 防火墙首选简易的ufw(Uncomplicated Firewall/调iptables-nft翻译为nftables),高级控制则选用nft(nftables/已架空iptables),或介于两者之间的firewalld(基于nftables)
Netfilter管网络,SELinux(Security-Enhanced Linux)管本地。

shell:

apt install iputils-ping

apt install ./x.deb 或 dpkg -i x.deb

apt source nginx 获取软件包同时发布的源码

  cd目录时,该目录必须拥有x可执行权限,否则报 Permission denied!
  命令行上传文件:
    curl -X POST https://example.com/test-upload -F "file=@/root/x.txt;type=text/plain" -F x=y -F k=v

    参数-X指定GET POST等,与参数-I(HEAD)互斥;参数-F会自动添加-H "Content-Type: multipart/form-data" 不写type=text/plain则默认发送application/octet-stream

shell相关:

开源字体: apt install fonts-noto-cjk

密钥:

私钥、公钥 谁加密、谁解密?

Systemd:

systemd 程序以 1 号进程(PID 1)运行,它利用并行加快了总体启动速度,还管理着开关机顺序。
systemctl 程序提供了服务管理的用户接口; systemd 定时器提供类似 cron 的高级功能。

Wayland:

Linux显示服务器 - Wayland作为一个免费开源项目,目的是用现代,安全和简单的窗口系统代替X Window System(也称为X11或Xorg)。
如何确定你 Linux 运行的是 Xorg 还是 Wayland?

DevOps运维开发

实战:

Java最精简起步模板容器镜像:

vim.tiny Dockerfile # openjdk官方镜像已废弃 FROM eclipse-temurin:23-jre-alpine # 点号包含子目录;libs/* 解压自 build\distributions\app.zip; COPY . /usr/local/src/myapp WORKDIR /usr/local/src/myapp CMD ["java", "Main.java"] # 类路径参数值:Windows分号分隔,Linux则用冒号;且不支持 *.jar 统配。 #CMD ["java", "-cp", ".;libs/*", "Main.java"] # Unnamed Classes 的主类名即源文件名 #CMD ["java", "-cp", ".", "Main"] dd of=./Main.java << EOF void main() { System.out.println(System.getProperty("java.version")); } EOF docker build -t java-main . [使其输出RUN ls命令结果] docker build -t java-main --progress=plain --no-cache . docker run -it --rm java-main docker run -it --rm -e JAVA_TOOL_OPTIONS='--enable-preview' java-main