diff --git a/content/docker-learn-4.md b/content/docker-learn-4.md new file mode 100644 index 0000000..e00cc75 --- /dev/null +++ b/content/docker-learn-4.md @@ -0,0 +1,78 @@ ++++ +title = "Docker学习笔记(四)" +date = 2024-03-28 + +[taxonomies] +tags = ["Docker"] ++++ + +前言 Docker 使您能够运行与主机操作系统分离的隔离代码段(包括应用程序及其依赖项)的容器。默认情况下,容器是临时的,这意味着容器中存储的任何数据一旦终止就会丢失。为了克服这个问题并跨容器生命周期保留数据,Docker 提供了多种数据持久化方法。 + + +## **Docker 中的数据持久化** + +在本节中,我们将介绍: + +- Docker Volumes Docker 卷 +- Bind Mounts 绑定挂载 +- Docker tmpfs mounts Docker tmpfs 挂载 + +## **Docker Volumes Docker 卷** + +Docker 卷是保存 Docker 容器生成和使用的数据的首选方法。卷是 Docker 用于存储文件和目录的主机上的一个目录,这些文件和目录的寿命可能超过容器的生命周期。Docker 卷可以在容器之间共享,它们提供了各种好处,例如轻松备份和数据迁移。 + +要创建卷,请使用以下命令: +``` +docker volume create volume_name +``` +要使用卷,请在 docker run 命令中添加 --volume(或 -v)标志: +``` +docker run --volume volume_name:/container/path image_name +``` + +**在容器中挂载卷** +若要将卷装载到容器,需要在运行容器时使用 -v 或 --mount 标志。下面是一个示例: + +Using -v flag: 使用 -v 标志: +``` +docker run -d -v my-volume:/data your-image +``` +Using --mount flag: 使用 --mount 标志: +``` +docker run -d --mount source=my-volume,destination=/data your-image +``` +在上面的两个示例中,my-volume 是我们之前创建的卷的名称,/data 是容器内将挂载卷的路径。 + +**在容器之间共享卷** +要在多个容器之间共享卷,只需在多个容器上挂载相同的卷即可。下面介绍如何在运行不同映像的两个容器之间共享 my-volume: +``` +docker run -d -v my-volume:/data1 image1 +docker run -d -v my-volume:/data2 image2 +``` +在此示例中,image1 和 image2 将有权访问存储在 my-volume 中的相同数据。 + +**Removing a Volume 删除卷** +要删除卷,可以使用 docker volume rm 命令,后跟卷名称: +``` +docker volume rm my-volume +``` +## **Bind Mounts 绑定挂载** +绑定挂载允许您将主机上的任何目录映射到容器中的目录。此方法在需要修改主机系统上的文件的开发环境中非常有用,并且这些更改应立即在容器中可用。 + +与卷相比,绑定挂载的功能有限。使用绑定挂载时,主机上的文件或目录将装载到容器中。文件或目录由其在主机上的绝对路径引用。相比之下,当您使用卷时,会在主机上的 Docker 存储目录中创建一个新目录,Docker 管理该目录的内容。 + +文件或目录不需要已存在于 Docker 主机上。如果尚不存在,则按需创建。绑定挂载的性能非常高,但它们依赖于主机的文件系统,该文件系统具有特定的可用目录结构。 + +要创建绑定挂载,请在 docker run 命令中使用带有 type=bind 的 --mount 标志: +``` +docker run --mount type=bind,src=/host/path,dst=/container/path image_name +``` +## **Docker tmpfs mounts Docker tmpfs 挂载** + +Docker tmpfs 挂载允许您直接在容器的内存中创建临时文件存储。存储在 tmpfs 挂载中的数据快速且安全,但一旦容器终止,数据就会丢失。 +要使用 tmpfs 挂载,请在 docker run 命令中添加 --tmpfs 标志: +``` +docker run --tmpfs /container/path image_name +``` +通过采用这些方法,可以确保跨容器生命周期的数据持久性,从而增强 Docker 容器的实用性和灵活性。请记住选择最适合您的用例的方法,无论是首选的 Docker 卷、方便的绑定挂载,还是快速安全的 tmpfs 挂载。 + diff --git a/content/docker-learn-5.md b/content/docker-learn-5.md new file mode 100644 index 0000000..3c95d26 --- /dev/null +++ b/content/docker-learn-5.md @@ -0,0 +1,132 @@ ++++ +title = "Docker学习笔记(五)" +date = 2024-03-28 + +[taxonomies] +tags = ["Docker"] ++++ + +前言 第三方映像是预构建的 Docker 容器映像,可在 Docker Hub 或其他容器注册表上使用。这些映像由个人或组织创建和维护,可用作容器化应用程序的起点。 + + + + +## **查找第三方镜像** +Docker Hub 是最大、最受欢迎的容器镜像注册表,包含官方和社区维护的镜像。您可以根据要使用的名称或技术搜索镜像。 + +例如:如果你正在寻找 Node.js 映像,你可以在 Docker Hub 上搜索“Node”,你会找到官方Node.js映像以及许多其他社区维护的映像。 + +**在 Dockerfile 中使用映像** +要在 Dockerfile 中使用第三方映像,只需使用 FROM 指令将映像名称设置为基础映像即可。下面是使用官方Node.js镜像的示例: + +FROM node:14 +``` +# The rest of your Dockerfile... +``` +**注意安全问题** +请记住,第三方映像可能存在安全漏洞或配置错误。在生产中使用镜像之前,请务必验证镜像的来源并检查其信誉。更喜欢使用官方镜像或维护良好的社区镜像。 + +**维护您的镜像** +使用第三方映像时,必须保持更新,以包含最新的安全更新和依赖项更改。定期检查基础映像中的更新,并相应地重新生成应用程序容器。 + +## **使用第三方映像:数据库** +在 Docker 容器中运行数据库有助于简化开发过程并简化部署。Docker Hub 为 MySQL、PostgreSQL 和 MongoDB 等流行数据库提供了大量预制映像。 + +**示例:使用 MySQL 镜像** +要使用 MySQL 数据库,请在 Docker Hub 上搜索官方镜像: +``` +docker search mysql +``` +找到官方图片,然后拉动它: +``` +docker pull mysql +``` +现在,您可以运行 MySQL 容器。指定所需的环境变量,例如 MYSQL_ROOT_PASSWORD,并选择性地将容器的端口映射到主机: +``` +docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql +``` +此命令创建一个名为 some-mysql 的新容器,将 root 密码设置为 my-secret-pw,并将主机上的端口 3306 映射到容器上的端口 3306。 + +**示例:使用 PostgreSQL 镜像** +对于 PostgreSQL,请执行与上述步骤类似的步骤。首先,搜索官方图片: +``` +docker search postgres +``` +Pull the image: 拉取图像: +``` +docker pull postgres +``` +运行 PostgreSQL 容器,指定环境变量,例如 POSTGRES_PASSWORD: +``` +docker run --name some-postgres -e POSTGRES_PASSWORD=my-secret-pw -p 5432:5432 -d postgres +``` + + +## **使用 Docker 的交互式测试环境** +Docker 允许您创建隔离的一次性环境,这些环境可以在完成测试后删除。这使得使用第三方软件、测试不同的依赖项或版本以及快速试验变得更加容易,而不会损坏本地设置。 + +**使用 Docker 创建交互式测试环境** +为了演示如何设置交互式测试环境,让我们以 Python 编程语言为例。我们将使用 Docker Hub 上提供的公共 Python 映像。 + +要使用 Python 映像启动交互式测试环境,只需运行以下命令: +``` +docker run -it --rm python +``` +在这里,-it 标志确保使用 tty 在交互模式下运行容器,而 --rm 标志将在容器停止后将其删除。 + +现在,您应该位于容器内的交互式 Python shell 中。您可以像往常一样使用 pip 执行任何 Python 命令或安装其他软件包。 +``` +print("Hello, Docker!") +``` +完成交互式会话后,只需键入 exit() 或按 CTRL+D 即可退出容器。容器将按照 --rm 标志的指定自动删除。 + +**交互式测试环境的更多示例** +可以使用 Docker Hub 上提供的多个第三方映像,并创建各种交互式环境,例如: + +Node.js:若要启动交互式 Node.js shell,可以使用以下命令: +``` +docker run -it --rm node +``` +Ruby:要启动交互式 Ruby shell,您可以使用以下命令: +``` +docker run -it --rm ruby +``` +MySQL:要启动临时 MySQL 实例,您可以使用以下命令: +``` +docker run -it --rm --name temp-mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 mysql +``` +这将启动一个临时的MySQL服务器,该服务器可以通过主机端口3306访问。一旦容器停止,它将被移除。 + +随意探索和测试各种软件,而不必担心损坏本地计算机或安装不必要的依赖项。将 Docker 用于交互式测试环境可以让您在处理各种第三方软件时更高效、更干净地工作。 + + + +## **命令行实用程序** +Docker 映像可以包括命令行实用程序或我们可以在容器内运行的独立应用程序。这在使用第三方映像时非常有用,因为我们想要使用的工具已经打包好,无需任何安装或配置即可运行。 + +**BusyBox** +BusyBox 是一个小型 (1-2 Mb) 且简单的命令行应用程序,它提供了大量常用的 Unix 实用程序,例如 awk、grep、vi 等。要在 Docker 容器中运行 BusyBox,只需拉取映像并使用 Docker 运行它: +``` +docker pull busybox +docker run -it busybox /bin/sh +``` +进入容器后,您可以开始运行各种 BusyBox 实用程序,就像在常规命令行上一样。 + +**cURL** +cURL 是一个众所周知的命令行工具,可用于使用各种网络协议传输数据。它通常用于测试 API 或从 Internet 下载文件。若要在 Docker 容器中使用 cURL,可以使用 Docker Hub 上提供的官方 cURL 映像: +``` +docker pull curlimages/curl +docker run --rm curlimages/curl https://example.com +``` +在此示例中,--rm 标志用于在命令运行完毕后删除容器。当您只需要运行单个命令,然后清理容器时,这很有用。 + +**其他命令行实用程序** +Docker 映像中提供了许多命令行实用程序,包括但不限于: + +- wget:用于从 Web 上非交互式下载文件的免费实用程序。 +- imagemagick:用于图像处理和转换的强大软件套件。 +- jq:轻量级且灵活的命令行 JSON 处理器。 + +若要使用这些工具中的任何一个,可以在 Docker Hub 上搜索它们,并按照其各自存储库中提供的说明进行操作。 + + diff --git a/content/mechrev-keyboard.md b/content/mechrev-keyboard.md index 369d461..2b9f267 100644 --- a/content/mechrev-keyboard.md +++ b/content/mechrev-keyboard.md @@ -20,32 +20,32 @@ tags = ["keyboard"] 既然是高低电平表述的错误,那么我们只需建立DSDT 表副本,将其修改,然后让它优先启动,从而让键盘配置正常;另外还存在 BIOS 修复,内核编译的方法,比较复杂,这里不做说明。 ``` -### 首先建立一个DSDT文件夹: +首先建立一个DSDT文件夹: sudo su mkdir -p /home/dsdt -### 随后将系统的DSDT表读取到里面,并安装acpica-tools: +随后将系统的DSDT表读取到里面,并安装acpica-tools: cat /sys/firmware/acpi/tables/DSDT > dsdt.dat apt install acpica-tools iasl -d dsdt.dat -### 进入vim编辑DSDT表,没有vim的先安装一个: +进入vim编辑DSDT表,没有vim的先安装一个: apt install vim vim dsdt.dsl -### 搜索并替换 Device(PS2K) 下面的 +搜索并替换 Device(PS2K) 下面的 IRQ (Edge, ActiveLow, Shared, ) 为 IRQ (Edge, ActiveHigh, Shared, ) -### vim搜索的方法为在命令模式下按下“/”,键入搜索字符并回车即可,按“n”跳转到下一处,“N”跳转到前一处,按: wq保存: +vim搜索的方法为在命令模式下按下“/”,键入搜索字符并回车即可,按“n”跳转到下一处,“N”跳转到前一处,按: wq保存: -### 随后搜索DefinitionBlock,将其步进值增加一(十六进制),即更改 +随后搜索DefinitionBlock,将其步进值增加一(十六进制),即更改 DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I", 0x01072009) 为 DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I", 0x0107200A) -### 关闭DSDT,并设置其优先启动 +关闭DSDT,并设置其优先启动 iasl dsdt.dsl mkdir -p kernel/firmware/acpi cp dsdt.aml kernel/firmware/acpi/ @@ -53,10 +53,10 @@ find kernel | cpio -H newc --create > acpi_override cp acpi_override /boot/acpi_override echo "GRUB_EARLY_INITRD_LINUX_CUSTOM=\"acpi_override\"" >>/etc/default/grub -### 更新并重启: +更新并重启: update-grub2 reboot -``` +``` 不出意外,重启后键盘即可使用,若系统不同将 apt 替换即可。 @@ -70,7 +70,7 @@ reboot ### 修复wifi驱动 -```shell +``` # 内核小于5.18的 git clone https://github.com/HRex39/rtl8852be.git # 内核大于等于5.18的 @@ -84,7 +84,7 @@ sudo modprobe 8852be ### 修复蓝牙驱动 -```shell +``` # 内核=5.15 git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.15 # 内核=5.18 diff --git a/public/archive/index.html b/public/archive/index.html index 069553f..c57eaac 100644 --- a/public/archive/index.html +++ b/public/archive/index.html @@ -81,6 +81,26 @@

修复wifi驱动

-
# 内核小于5.18的
+
# 内核小于5.18的
 git clone https://github.com/HRex39/rtl8852be.git
 # 内核大于等于5.18的
 git clone https://github.com/HRex39/rtl8852be.git -b dev
@@ -158,7 +158,7 @@
 sudo modprobe 8852be
 

修复蓝牙驱动

-
# 内核=5.15
+
# 内核=5.15
 git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.15
 # 内核=5.18
 git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.18
diff --git a/public/page/2/index.html b/public/page/2/index.html
index c9689bf..8575ae0 100644
--- a/public/page/2/index.html
+++ b/public/page/2/index.html
@@ -78,6 +78,74 @@
         
+

Docker学习笔记(一)

+ + + + + + + + +
+

前言 Docker 是一个开源平台,通过将应用程序隔离到轻量级、可移植的容器中,自动执行应用程序的部署、扩展和管理。容器是独立的可执行单元,它封装了应用程序在各种环境中一致运行所需的所有必要依赖项、库和配置文件。

+ +
+ + + +
+ +
+ +

垃圾清理的艺术

+ + + + + + + + +
+

前言 在从前的机械硬盘时代,由于硬盘空间小,且没有时常清理垃圾文件,常常导致硬盘空间严重不足;特别是在以 Windows 平台为代表的 C/D盘 体系下。那么,我们常说的垃圾清理,释放硬盘空间,到底是在清理什么?哪些文件可以被清理?

+ +
+ + + +
+ +
+

Git使用简明手册

-
- -
- -

Terminal,Console and Shell

- - - - - - - - -
-

前言 在linux的学习过程中,我们常常遇到诸如 Terminal,Console,bash,zsh,shell,tty 等概念,这些概念常常被混淆,似乎都和命令行相关。本文从历史角度出发介绍它们的前世今生。

- -
- - - -
- -
- -

Personal Blog

- - - - - - - - -
-

前言 个人博客的搭建有诸多框架的选择。本文以Zola框架为例,介绍如何部署该静态站点,并将其托管到Paas平台上。

- -
- - -