五、Docker 数据持久化存储与性能调优
本文是《Docker必知必会系列》第五篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(四):Docker 网络原理、分类及容器互联配置
数据持久化存储与性能调优数据持久保存默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着当该容器不再存在时,数据也将丢失。
为了让数据脱离容器持久保存,Docker 提供了两个选项来将文件持久存储在主机中: volume 和 bind mount 。如果您在 Linux 上运行 Docker,则还可以使用 tmpfs 挂载。如果您在 Windows 上运行 Docker,则还可以使用命名管道。
volume(卷)存储在主机文件系统的一部分中,该文件系统由 Docker 管理(/var/lib/docker/volumes/在 Linux 上)。非 Docker 进程不应修改文件系统的这一部分。卷是在 Docker 中持久保存数据的最佳方法。
bind mount(绑定挂载)可以存储在主机系统上的任何位置。它们甚至可能是重要的系统文件或目录。Docker 主机或 Docke ...
基于 Dockerfile 构建并运行镜像
本文是《Docker必知必会系列》第二篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(一):Docker 基础入门及架构介绍
二、基于 Dockerfile 构建并运行镜像构建并运行镜像要构建一个容器,需要做很多的工作,设置很多的配置,如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么经常被提及的无法重复、镜像构建透明性、体积等问题就都会解决。 这个脚本就是 Dockerfile。
准备 Dockerfile 文件下载示例项目,请在终端中运行以下命令:
123curl -LO https://github.com/dockersamples/node-bulletin-board/archive/master.zipunzip master.zipcd node-bulletin-board-master/bulletin-board-app
该node-bulletin-board项目是一个简单的公告板应用程序,使用 Node.js 编写。在此示例中,假设您编写了此应用 ...
六、基于多阶段构建减小镜像体积降低复杂度
本文是《Docker必知必会系列》第六篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(五):Docker 数据持久化存储与性能调优
一、引言如何减小所构建镜像的体积最非常具有挑战性的事情。Docker 17.05版本以后,新增了Dockerfile多阶段构建。所谓多阶段构建,实际上是允许一个Dockerfile 中出现多个 FROM 指令。
二、单 Dockerfile 构建镜像如果将所有的构建过程都包含在一个 Dockerfile 中,包括项目及其依赖库的编译、测试、打包等流程,这样会带来的一些问题:
镜像层次多,镜像体积较大,部署时间变长
源代码存在泄露的风险
下面是一个简单示例:
123456789FROM golang:1.14-alpineRUN apk --no-cache add git ca-certificatesWORKDIR /go/src/github.com/go/lixl.cn/helloworld/COPY app.go .RUN go get -d -v github.com/go-sq ...
Linux 一键安装 Docker 脚本使用指南
脚本版本 1.0.0 | 默认安装 Docker 27.5.0 | 最后更新 2026-02-16
这个脚本是在管理多台服务器时写的,目的是把每次安装 Docker 都要重复的操作自动化——选版本、配镜像加速、改 daemon.json、设开机自启,一次配好,以后所有机器都用同一套。
系统要求与兼容性支持的 Linux 发行版
Linux 发行版
支持版本
包管理器
推荐度
Ubuntu
20.04 / 22.04 / 24.04
apt
⭐⭐⭐⭐⭐
Debian
11 (Bullseye) / 12 (Bookworm)
apt
⭐⭐⭐⭐⭐
CentOS
7 / 8 / 9
yum
⭐⭐⭐⭐
RHEL
8 / 9
yum
⭐⭐⭐⭐
Rocky Linux
8 / 9
yum
⭐⭐⭐⭐
AlmaLinux
8 / 9
yum
⭐⭐⭐⭐
Fedora
38 / 39
dnf
⭐⭐⭐⭐
Ubuntu、Debian ...
四、Docker 网络原理、分类及容器互联配置
本文是《Docker必知必会系列》第四篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(三):基于 Docker-registry/Nexus3 搭建本地仓库
Docker 网络配置Docker 网络基本原理要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)来收发数据包。如果不同子网之间要进行通信,需要路由机制。
Docker 中的网络接口默认都是虚拟接口,虚拟接口的优势之一是转发效率较高。 Linux 通过在内核中进行数据复制来实现虚拟接口之间的数据转发,发送接口的发送缓存中的数据包被直接复制到接收接口的接收缓存中。
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥( Linux 的一个 bridge),它会在挂载到它的网口之间进行转发。同时,Docker 随机分配一个本地未占用的私有网段中的一个地址给 docker0 接口,此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。
当创建一个 Docker 容器的时候,同时会创建了一对 ve ...
安装docker1.安装依赖包
1yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置docker yum源
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
1yum install -y docker-ce
4.修改docker配置文件
1mkdir /etc/docker -p
12345678910111213141516171819202122232425262728293031323334353637sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.credclouds.com", "https://k8s.credcloud ...
编程开发
未读最新docker安装教程1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283最新安装docker教程更改CentOs Yum源rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo或curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoimage-20241204143942094一键安装docker脚本bash <(curl -sSL https://linuxmirrors.cn/docker.sh)安装完成 +----------- ...
Docker面试突击手册:20个核心问题全覆盖
不管是面试 Docker 岗位,还是日常运维、开发中使用容器,总有一些问题绕不开:
容器隔离到底靠什么实现?
namespace 和 cgroup 区别是什么?
RUN 和 CMD 有什么本质差异?
Docker Compose 怎么排查日志?
生产环境如何优化性能?
这篇文章整理了 20 个 Docker 核心高频问题,覆盖:
✔ 底层原理 ✔ 网络机制 ✔ 架构组成 ✔ 镜像构建 ✔ 容器运行 ✔ 数据持久化 ✔ 性能优化
一、底层原理篇1️⃣ 容器隔离及资源限制的底层技术是什么?核心只有两个:
namespace —— 做“隔离”让容器拥有独立的:
进程空间
网络空间
文件系统
主机名
用户空间
cgroup —— 做“资源限制”控制容器使用多少:
CPU
内存
磁盘 IO
网络带宽
一句话总结:
namespace 负责“看起来独立” cgroup 负责“资源不越界”
2️⃣ namespace 六大隔离类型
类型
隔离内容
mnt
文件系统
UTS
主机名
IPC
进程通信
PID
进程 ...
编程开发
未读运维Docker命令Docker 常用命令的整理,按照功能分类:
一、容器管理
运行容器
1docker run [OPTIONS] IMAGE [COMMAND]
常用选项:
-d:后台运行(守护模式)
-it:交互式终端(通常与 bash 结合使用)
--name:指定容器名称
-p:端口映射(主机端口:容器端口)
-v:挂载数据卷(主机目录:容器目录)
--rm:容器退出后自动删除
-e:设置环境变量
示例:
1docker run -d --name my_nginx -p 80:80 nginx
列出容器
123docker ps # 查看运行中的容器docker ps -a # 查看所有容器(包括已停止的)docker ps -q # 只显示容器ID
启动/停止/重启容器
1234docker start 容器名/IDdocker stop 容器名/ID # 优雅停止docker kill 容器名/ID # 强制停止docker restart 容器名/ID
...
12个提升日常效率的Python脚本1. 剪贴板历史记录器1234567891011121314151617import timeimport pypercliphistory = []defclipboard_logger(): recent_value = "" whileTrue: tmp_value = pyperclip.paste() if tmp_value != recent_value: recent_value = tmp_value history.append(recent_value) print(f"Copied: {recent_value}") time.sleep(1)clipboard_logger()
用途:自动记录剪贴板历史,可随时找回之前复制的内容,相当于给 Ctrl+C 加了“撤销”功能。
2. Wi-Fi 密码快速提取12345678910111213impor ...
