编程开发
未读一图看懂Docker工作原理Docker 包含三个主要组件: 🔹 Docker Client,这是用户交互的界面。它与 Docker 守护程序进行通信。 🔹 Docker Host,在这里,Docker 守护程序监听 Docker API 请求并管理各种 Docker 对象,包括镜像、容器、网络和 volume。 🔹Docker Registries,这是 Docker 镜像存储的地方。例如,Docker Hub 是一个经常被用到的公共注册中心。
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必知必会系列(五):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 ...
基于 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 网络原理、分类及容器互联配置
数据持久化存储与性能调优数据持久保存默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着当该容器不再存在时,数据也将丢失。
为了让数据脱离容器持久保存,Docker 提供了两个选项来将文件持久存储在主机中: volume 和 bind mount 。如果您在 Linux 上运行 Docker,则还可以使用 tmpfs 挂载。如果您在 Windows 上运行 Docker,则还可以使用命名管道。
volume(卷)存储在主机文件系统的一部分中,该文件系统由 Docker 管理(/var/lib/docker/volumes/在 Linux 上)。非 Docker 进程不应修改文件系统的这一部分。卷是在 Docker 中持久保存数据的最佳方法。
bind mount(绑定挂载)可以存储在主机系统上的任何位置。它们甚至可能是重要的系统文件或目录。Docker 主机或 Docke ...
七、Docker Compose 入门实践
本文是《Docker必知必会系列》第七篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(六):基于多阶段构建减小镜像体积降低复杂度
一、Docker Compose 概述1、Docker Compose 是什么Compose 项目是 Docker 官方支持的开源项目,基于 Python 编写,用于定义和运行多容器Docker应用程序。Compose 使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
使用 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。Compose 刚好可以满足这样的需求。
Compose 有着用于管理应用程序整个生命周期的各种命令:
启动、停止和重建服务
查看正在运行的服务的状态
实时查看运行服务的日志输出
仅执行一次命令即可运行整个服务 ...
四、Docker 网络原理、分类及容器互联配置
本文是《Docker必知必会系列》第四篇,原文发布于个人博客:悟尘记。
上一篇:Docker必知必会系列(三):基于 Docker-registry/Nexus3 搭建本地仓库
Docker 网络配置Docker 网络基本原理要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)来收发数据包。如果不同子网之间要进行通信,需要路由机制。
Docker 中的网络接口默认都是虚拟接口,虚拟接口的优势之一是转发效率较高。 Linux 通过在内核中进行数据复制来实现虚拟接口之间的数据转发,发送接口的发送缓存中的数据包被直接复制到接收接口的接收缓存中。
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥( Linux 的一个 bridge),它会在挂载到它的网口之间进行转发。同时,Docker 随机分配一个本地未占用的私有网段中的一个地址给 docker0 接口,此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。
当创建一个 Docker 容器的时候,同时会创建了一对 ve ...
编程开发
未读🐳 好用斋 Docker 懒人包
https://haoyongzhai.com/lazybag
NAS系统:
架构:
IP地址:
脚本位置:
💡绿联系统使用懒人包,需要首先手动在共享文件夹下创建3个文件夹:media,netdisk,downloads
媒体库
🎬Jellyfin
📺 查看教程
🎥Emby
📺 查看教程
🎞️Plex
📺 查看教程
音乐与阅读
🎵音乐刮削Music-tag
📺 查看教程
🎼音乐管理Navidrome
📺 查看教程
📚图书管理Calibre-web
📺 查看教程
📖漫画管理Komga
📺 查看教程
🎧有声书管理 Audiobookshelf
📺 查看教程
🎧有声书元数据 Abs-ximalaya
📺 查看教程
🔊小米小爱音箱 Xiaomusic
📺 查看教程
网盘挂载
☁️CloudDrive2
📺 查看教程
📁网盘挂载Openlist
📺 查看教程
🗂️网盘聚合WebOS
📺 查看教程
💾网盘搜索CloudSaver
📺 查看教程
🔍网盘搜索PanSou
📺 查看教程
🔍网盘搜索PanH ...
安装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)安装完成 +----------- ...
