docker使用笔记
安装
参考: docker 从入门到实践
1、win
1.1、docker安装
- 环境配置
- 启用
WSL相关功能- 按下
Win + R,输入optionalfeatures打开「Windows功能」窗口,勾选选项: 适用于Linux的Windows子系统 - 命令行操作(管理员权限
PowerShell):wsl --install
- 按下
WSL功能升级(如有)- 命令行操作(管理员权限
PowerShell):winget install Docker.DockerDesktop
- 命令行操作(管理员权限
- 启用
- 下载安装
- 手动下载安装:点击以下 下载链接 下载
Docker Desktop for Windows - 命令行操作(管理员权限
PowerShell):
- 手动下载安装:点击以下 下载链接 下载
1.2、配置镜像加速
Settings -> Docker Engine 添加
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://mirror.gcr.io",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn"
]
}
点击 Apply & Restart 保存
1.3、配置中文
- 下载对应版本中文语言包
- 关闭
Docker Desktop - 在
Docker安装目录找到app.asar文件并将其备份,防止出现意外。Windows下默认为C:\Program Files\Docker\Docker\frontend\resourcesMacos下默认为/Applications/Docker.app/Contents/MacOS/Docker Desktop.app/Contents/ResourcesUbuntu/Debian下默认为/opt/docker-desktop/resources
- 将从仓库下载的
asar文件改名为app.asar后替换原文件
2、Linux
2.1、卸载旧版本
# ubuntu / Debian
sudo apt-get remove docker \
docker-engine \
docker.io
############################################################
############################################################
# Fedora
sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
############################################################
############################################################
# CentOS
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2.2、直接安装
2.2.1、安装必要依赖
# ubuntu / Debian
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
############################################################
############################################################
# Fedora
sudo dnf -y install dnf-plugins-core
############################################################
############################################################
# CentOS
sudo yum install -y yum-utils
############################################################
############################################################
# Raspberry Pi
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
lsb-release \
software-properties-common
2.2.2、安装
-
添加
Docker官方GPG Keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg如果
IPv6网络不稳定,可强制IPv4:sudo sh -c 'echo "Acquire::ForceIPv4 \"true\";" > /etc/apt/apt.conf.d/99force-ipv4' -
添加
Docker软件源echo \ "deb [arch=$(dpkg --print-architecture) \ signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
安装
Docker引擎sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y -
验证
Docker是否正常运行检查服务状态:
sudo systemctl status docker运行测试容器:
sudo docker run hello-world出现
Hello from Docker!表示安装成功 ✅ -
用户配置
# 建立 docker 用户组 sudo groupadd docker # 将当前用户加入 docker 组 sudo usermod -aG docker $USER && newgrp docker
2.3、国内源安装
# ubuntu
# 添加软件源的 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 向 sources.list 中添加 Docker 软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt直接安装
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# sudo sh get-docker.sh --mirror AzureChinaCloud
############################################################
############################################################
# Debian
# 添加软件源的 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 向 sources.list 中添加 Docker 软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
# $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt直接安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# sudo sh get-docker.sh --mirror AzureChinaCloud
############################################################
############################################################
# Fedora
# 添加 dnf 软件源
sudo dnf config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/fedora/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 官方源
# $ sudo dnf config-manager \
# --add-repo \
# https://download.docker.com/linux/fedora/docker-ce.repo
# 需要测试版本的 Docker 请使用以下命令
sudo dnf config-manager --set-enabled docker-ce-test
# 禁用测试版本的 Docker
sudo dnf config-manager --set-disabled docker-ce-test
# dnf 直接安装
sudo dnf update
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 安装指定版本的 Docker
dnf list docker-ce --showduplicates | sort -r
# docker-ce.x86_64 18.06.1.ce-3.fc28 docker-ce-stable
sudo dnf -y install docker-ce-18.06.1.ce
# 脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# sudo sh get-docker.sh --mirror AzureChinaCloud
############################################################
############################################################
# CentOS
# 添加 yum 软件源
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
# 如果需要测试版本的 Docker 请执行以下命令
sudo yum-config-manager --enable docker-ce-test
# 更新 yum 软件源缓存,并安装 docker-ce
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# CentOS8 额外设置
# 由于 CentOS8 防火墙使用了 nftables,但 Docker 尚未支持 nftables, 我们可以使用如下设置使用 iptables
# 更改 /etc/firewalld/firewalld.conf
# FirewallBackend=nftables
FirewallBackend=iptables
# 或者执行如下命令:
firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --reload
# 脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# sudo sh get-docker.sh --mirror AzureChinaCloud
############################################################
############################################################
# Raspberry Pi
# 软件源的 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/raspbian/gpg | sudo apt-key add -
# 官方源
# curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -
# 向 sources.list 中添加 Docker 软件源
sudo add-apt-repository \
"deb [arch=armhf] https://mirrors.aliyun.com/docker-ce/linux/raspbian \
$(lsb_release -cs) \
stable"
# 官方源
# sudo add-apt-repository \
# "deb [arch=armhf] https://download.docker.com/linux/raspbian \
# $(lsb_release -cs) \
# stable"
# apt直接安装
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# sudo sh get-docker.sh --mirror AzureChinaCloud
2.4、设置镜像加速
# 配置镜像加速器
sudo vim /etc/docker/daemon.json
# 添加以下内容
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://mirror.gcr.io",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://index.docker.io/v1/"
]
}
# 注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动 可以使用以下命令测试
python3 -m json.tool /etc/docker/daemon.json > /dev/null && echo "JSON 格式正确" || echo "JSON 格式错误!"
# 重新启动服务
sudo systemctl daemon-reload && sudo systemctl restart docker
2.5、启动及测试
# ubuntu / Debian / Fedora / CentOS
# 启动
sudo systemctl enable docker && sudo systemctl start docker
# 建立 docker 用户组
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER && newgrp docker
# 测试 Docker 是否安装正确
docker run --rm hello-world
# 测试 Docker 版本号
docker --version
docker compose version
3、卸载软件
# 卸载 Docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io -y && sudo apt-get autoremove -y
# 删除残留文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
4、daemon.json 配置示例
4.1、Linux
以下是完整且实用的基于Linux 环境的Docker daemon.json 配置示例,包含镜像加速、存储驱动、日志管理、安全设置等核心功能
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://mirror.gcr.io",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://index.docker.io/v1/"
],
"storage-driver": "overlay2",
"data-root": "/mnt/nvme/my-project/project-docker/docker-log",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3",
"compress": "true"
},
"default-shm-size": "64m",
"icc": false,
"live-restore": true,
"experimental": true,
"metrics-addr": "127.0.0.1:9323",
"debug": false,
"insecure-registries": [
"my-private-registry:5000"
]
}
配置说明:
-
镜像加速
registry-mirrors:配置多个国内镜像源,提升拉取速度。 -
存储配置
-
storage-driver:存储驱动配置,指定Docker存储容器和镜像的驱动类型。-
配置值:
overlay2(推荐,适用于大多数Linux系统,基于分层存储,性能较好)。aufs(旧版系统常用,现已逐渐被淘汰)。btrfs/zfs(适用于特定文件系统场景)。
-
注意事项:
- 若内核版本低于 4.0,
overlay2可能需要开启内核参数overlay2.override_kernel_check=true(通过storage-opts配置)。 - 选择驱动前需确认系统文件系统支持(如
ext4/xfs支持overlay2)。
- 若内核版本低于 4.0,
-
-
data-root:更改Docker数据存储位置,避免根分区空间不足。- 配置值:
- 默认路径为
/var/lib/docker
- 默认路径为
- 注意事项:
- 建议配置到非系统盘(如独立分区或
SSD),避免占用根目录空间。 - 修改后需确保目录存在且
Docker服务有写入权限,首次修改需重启Docker服务。
- 建议配置到非系统盘(如独立分区或
- 配置值:
-
-
日志管理
-
限制单个容器日志大小,防止磁盘被占满。
-
log-driver:- 指定容器日志的驱动类型,
json-file为默认格式,将日志存储为JSON文件。
- 指定容器日志的驱动类型,
-
log-opts:- 配置日志文件的大小、数量和压缩策略。
-
配置示例:
"log-driver": "json-file", "log-opts": { "max-size": "10m", // 单个日志文件最大 10MB "max-file": "3", // 保留最近 3 个日志文件 "compress": "true" // 启用日志压缩 } -
注意事项:
- 若容器日志量较大,建议调整
max-size和max-file避免磁盘爆满。 - 生产环境可改用
syslog或gelf等驱动,将日志转发到集中式日志系统(如ELK)。
- 若容器日志量较大,建议调整
-
-
容器资源配置
-
default-shm-size:设置容器默认的/dev/shm共享内存大小,用于容器内进程间通信。 -
配置示例:
"default-shm-size": "64m" // 64MB(默认值为 64MB,可根据应用需求调整) -
注意事项:
- 若容器运行图形界面程序(如
Chrome)或大数据处理任务,需适当增大此值(如 256m 或 1g)。
- 若容器运行图形界面程序(如
-
-
安全增强
-
icc:控制容器间是否允许直接通信(
icc为inter-container communication的缩写)。- 配置示例:
false(默认值,禁止容器间直接通信,需通过网络别名或自定义网络实现通信,如通过--network显式配置)。true(允许同一主机上的容器通过IP直接通信,存在安全风险)。
- 注意事项:
- 生产环境建议保持
false,并通过docker network create创建自定义网络(如bridge网络)实现可控通信。
- 生产环境建议保持
- 配置示例:
-
live-restore:启用后,Docker服务重启时会尝试恢复正在运行的容器(需配合--restart策略)。-
配置示例:
"live-restore": true // 建议生产环境开启,提升服务可用性 -
注意事项:
- 需确保容器配置了
--restart unless-stopped等重启策略。 - 部分存储驱动(如
devicemapper)可能不支持此功能。
- 需确保容器配置了
-
-
-
用户命名空间映射
-
userns-remap:启用用户命名空间(User Namespace)映射,将容器内的root用户映射到宿主机的非root用户,增强安全性。-
配置示例:
"userns-remap": "default" // 使用默认映射规则(需提前在 `/etc/subuid` 和 `/etc/subgid` 配置用户范围) -
注意事项:
- 配置前需通过
useradd或文件配置创建非root用户范围(如dockeruser:100000:65536)。 - 启用后可能影响容器对宿主机文件的访问权限,需谨慎测试。
- 配置前需通过
-
-
-
实验特性与调试
-
experimental:启用Docker的实验性特性(如BuildKit构建、新容器运行时等)。-
配置示例:
"experimental": true // 需配合 `DOCKER_CLI_EXPERIMENTAL=enabled` 环境变量使用 -
注意事项:
- 实验特性可能不稳定,生产环境不建议开启。
- 部分特性需要
Docker引擎和CLI版本均支持。
-
-
debug:启用Docker守护进程的调试模式,输出更详细的日志(用于排查问题)。-
配置示例:
"debug": false // 生产环境保持关闭,避免泄露敏感信息
-
-
-
私有仓库与监控
-
insecure-registries:配置非HTTPS的私有镜像仓库地址,允许Docker直接访问(存在安全风险)。-
配置示例:
"insecure-registries": ["my-private-registry:5000"] // 私有仓库 IP 或域名:端口 -
注意事项:
- 仅建议在可信的内部网络中使用,公网环境需配置
HTTPS证书。 - 若私有仓库使用自签名证书,需将证书复制到
/etc/docker/certs.d/目录
- 仅建议在可信的内部网络中使用,公网环境需配置
-
-
metrics-addr:配置Docker指标的暴露地址,用于监控工具(如Prometheus)抓取数据。-
配置示例:
"metrics-addr": "127.0.0.1:9323" // 仅允许本地访问(推荐) -
注意事项:
- 若需远程访问,需替换为
0.0.0.0:9323,但需注意防火墙和认证安全。 - 指标格式符合
OpenMetrics标准,可通过curl http://127.0.0.1:9323/metrics验证。
- 若需远程访问,需替换为
-
-
使用方法:
-
创建或编辑配置文件:
sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json粘贴上述配置内容,并保存退出。
-
重启 Docker 服务:
sudo systemctl daemon-reload # 重新加载 systemd 配置 sudo systemctl restart docker # 重启 Docker -
验证配置是否生效:
sudo systemctl status docker # 查看 Docker 服务状态 docker info # 验证配置是否生效
4.2、Windows
以下是针对 Windows 系统的 Docker daemon.json 完整配置示例 及详细讲解,结合 Windows 平台特性和官方文档要求优化配置:
{
// 国内镜像加速(推荐配置多个源)
"registry-mirrors": [
"https://registry.docker-cn.com", // 阿里云
"https://docker.mirrors.ustc.edu.cn", // 中国科学技术大学
"https://hub-mirror.c.163.com", // 网易云
"https://mirror.ccs.tencentyun.com", // 腾讯云
"https://index.docker.io/v1/"
],
// 数据存储位置(默认C:\ProgramData\Docker)
"data-root": "D:\\docker-data",
// 日志配置(推荐使用local驱动实现日志轮换)
"log-driver": "local",
"log-opts": {
"max-size": "10m", // 单个日志文件最大10MB
"max-file": "3", // 最多保留3个日志文件
"compress": "true" // 启用日志压缩
},
// 实验性功能(如buildx多架构构建)
"experimental": true,
// 监控指标暴露(Prometheus兼容接口)
"metrics-addr": "0.0.0.0:9323",
// 安全增强
"live-restore": true, // Docker服务重启时容器不停止
"debug": false, // 生产环境关闭调试模式
// 私有仓库访问(HTTP协议需配置)
"insecure-registries": [
"my-private-registry:5000"
],
// 镜像拉取策略(默认优先本地镜像)
"pull-policy": "always",
// 容器资源限制(通过Docker Desktop界面配置更直观)
"default-ulimit": {
"nofile": {
"Name": "nofile",
"Hard": 65535,
"Soft": 65535
}
},
// 网络监听地址(支持TCP和命名管道)
"hosts": [
"tcp://0.0.0.0:2375",
"npipe://"
]
}
配置说明(Windows 平台特性)
-
镜像加速
- 配置方式:与
Linux完全一致,通过registry-mirrors指定国内镜像源,提升拉取速度。 - 注意事项:如果使用
Docker Desktop,也可通过界面直接添加镜像源(Settings → Docker Engine → Registry mirrors)。
- 配置方式:与
-
存储配置
- 数据存储位置:
- 默认路径为
C:\ProgramData\Docker,建议修改到非系统盘(如D:\docker-data)以避免占用 C 盘空间。 - 路径格式需使用双反斜杠
(\\)或单斜杠(/),例如"data-root": "D:/docker-data"。
- 默认路径为
- 存储驱动:
Windows默认使用windowsfilter存储驱动,无需显式配置。- 若需调整存储大小,可添加
"storage-opts": ["size=200GB"](默认127GB)。
- 数据存储位置:
-
日志管理
- 驱动选择:
- 推荐使用
local驱动替代默认的json-file,自动实现日志轮换和压缩。 json-file驱动在Windows下可能导致日志文件无限增长,需谨慎使用。
- 推荐使用
- 日志压缩:
compress: true可减少历史日志占用的磁盘空间。
- 驱动选择:
-
资源限制
- 文件描述符限制:
default-ulimit用于设置容器默认的文件描述符限制(nofile),避免容器内进程因资源不足崩溃。- 注意拼写为
default-ulimit(单数),而非default-ulimits(复数)。
- 内存 /
CPU限制:
Windows下更建议通过Docker Desktop界面(Settings → Resources)直观配置容器内存、CPU配额。
- 文件描述符限制:
-
安全配置
- 容器持久化:
live-restore: true可确保Docker服务重启时容器不停止,适用于生产环境。 - 调试模式:
debug: true会生成大量调试日志,仅在排查问题时启用。
- 容器持久化:
-
实验性功能
- 启用方式:
需在Docker Desktop界面的Settings → Docker Engine中勾选Enable experimental features,并在daemon.json中添加"experimental": true。 - 常见用途:
启用docker buildx实现多架构镜像构建。
- 启用方式:
-
监控与网络
-
Prometheus监控:metrics-addr: "0.0.0.0:9323"暴露Prometheus兼容的监控接口,可通过http://localhost:9323/metrics访问。- 需在
Prometheus配置中添加目标localhost:9323以采集指标。
-
网络监听:
hosts选项允许Docker监听TCP端口(如0.0.0.0:2375)和命名管道(npipe://),方便远程管理。
-
配置文件位置与生效方式:
-
文件路径:
-
Docker Desktop用户:通常位于C:\ProgramData\Docker\config\daemon.json。 -
手动安装用户:可能位于
C:\Users\<用户名>\.docker\daemon.json。 -
编辑工具:建议使用
Notepad++或VS Code,避免格式错误。
-
-
生效步骤:
保存文件后,重启Docker服务:Restart-Service Docker验证配置:
docker info | Select-String -Pattern "Registry Mirrors|Logging Driver|Experimental"
4.3、配置格式对比
以下是 Windows 和 Linux 系统中Docker daemon.json配置的区别对比:
-
存储配置
-
Windows:默认存储路径为C:\ProgramData\Docker,可通过data-root配置项修改到其他盘。存储驱动默认是windowsfilter,一般无需手动配置,若要调整存储大小,可添加"storage-opts": ["size=200GB"]等相关配置。 -
Linux:默认存储路径为/var/lib/docker,可通过data-root指定其他路径,如/data/docker。存储驱动默认是overlay2,也可根据系统环境和需求选择aufs、btrfs、zfs等,通过storage-driver配置项指定,还可通过storage-opts配置驱动参数,如"storage-opts": ["overlay2.override_kernel_check=true"]。
-
-
日志管理
-
Windows:推荐使用local驱动替代默认的json - file,通过log - driver和log - opts配置日志驱动及参数,如设置单个日志文件大小和保留文件数量等。 -
Linux:默认使用json - file驱动记录容器日志,也可选择syslog、journald等其他日志驱动。同样通过log - driver和log - opts来配置,如"log - driver": "json - file", "log - opts": {"max - size": "10m", "max - file": "10"}。
-
-
安全配置
-
Windows:通过live - restore设置Docker服务重启时容器不停止,生产环境中通常关闭debug调试模式。 -
Linux:除了live - restore和debug配置外,还支持userns - remap进行用户空间重映射,提高安全性,但使用时需充分测试,因为可能导致一些假定uid 0用户拥有特殊能力的应用报错退出。
-
-
资源限制
-
Windows:可在daemon.json中通过default - ulimit设置容器默认的文件描述符限制等,不过内存和CPU限制更建议通过Docker Desktop界面配置。 -
Linux:可在daemon.json中通过default - ulimits配置文件描述符等资源限制,也可通过cgroup相关配置对容器进行更细致的资源控制,但通常也可结合系统工具进行配置。
-
-
网络监听
-
Windows:hosts选项支持 TCP 端口和命名管道监听,如"hosts": ["tcp://0.0.0.0:2375", "npipe://"]。 -
Linux:一般通过hosts配置监听地址,常见的是监听 TCP 端口,如"hosts": ["tcp://0.0.0.0:2375"],也可根据需要配置其他网络相关参数。
-
-
配置文件位置与生效方式
-
Windows:文件通常位于C:\ProgramData\Docker\config\daemon.json。保存文件后,通过重启Docker服务使配置生效,可使用Restart - Service Docker命令重启。 -
Linux:文件位于/etc/docker/daemon.json。修改配置后,需执行sudo systemctl daemon - reload重新加载配置,再执行sudo systemctl restart docker重启Docker服务使配置生效。
-
5、网络共享文件夹
如果需要将容器的一部分数据放在网络共享文件夹中(Nas),比如音视频资源等,建议NFS格式挂载, NFS 是 Linux/Unix 原生的高性能网络文件共享协议,SMB(Samba)主打 Windows 兼容与跨平台协作。下面从核心维度详细对比:
| 对比项 | NFS (Network File System) | SMB/CIFS (Server Message Block) |
|---|---|---|
| 设计初衷 | Sun 为 Unix/Linux 打造的原生文件共享 | 微软为 Windows 设计,Samba 实现跨平台 |
Linux 角色 | 内核原生支持,标准共享方案 | 需安装 Samba 服务,模拟 Windows 共享 |
Windows 支持 | 需手动安装 NFS 客户端,配置繁琐 | 原生支持,“网上邻居” 直接访问 |
| 核心优势 | 轻量、低延迟、Linux 集群高性能 | 跨平台无缝、精细权限、AD 域集成 |
选 NFS 更合适
- 纯
Linux/Unix集群(服务器、容器、HPC) - 追求极致性能、低延迟、高并发
- 开发 / 编译环境、大数据共享、容器持久化存储
- 内网信任环境,无需复杂用户管理
选 SMB 更合适
Windows为主的办公 / 家庭网络- 混合
Windows+Linux环境,Windows是核心 - 需精细权限、
AD域、文件锁定、打印共享 - 桌面端直接访问、预览、协作编辑
5.1、 共享端配置
以威联通Nas为例:
-
在威联通
NAS上开启NFS服务- 登录
QTS网页管理后台 - 进入 控制台 → 网络与文件服务 →
Win/Mac/NFS/WebDAV - 切换到 “
NFS服务” 标签页 - 勾选:
- 激活
NFS v3服务(兼容性最好,Linux通用) - 可选:激活
NFS v4服务(更安全、支持Kerberos)
- 激活
- 点击 应用,等待服务启动
- 登录
-
给共享文件夹开启
NFS访问权限-
回到 控制台 → 权限 → 共享文件夹
-
找到你要共享的文件夹(如
Video、Public) -
点击右侧 “编辑共享文件夹权限” 图标
QNAP -
在弹出窗口:
-
选择权限类别:“
NFS主机访问” -
勾选 “启用
NFS主机访问” -
点击 “加入”,添加允许访问的客户端:
-
主机 /
IP/ 网络:填单个IP(如192.168.0.24)或网段(192.168.0.0/24),*表示所有主机(不推荐) -
访问权限:“只读 / 读写”
-
Squash(权限映射):“无映射 /No mapping” (客户端传过去的UID/GID尽量按原样使用)选
Squash权限(关键!):不推荐(最安全):选
Squash 所有用户到用户 nobody。- 解释:最高权限的
Root用户会被限制,防止误删文件,适合绝大多数场景。
🌀 进阶(
Linux开发常用):选不映射任何用户 (No mapping)。- 解释:保持
Linux账号的UID/GID一致。如果在电脑和NAS上都有mo这个账号,且UID都是1000,选这个能完美解决文件权限错乱问题(比如创建文件后别人打不开)
- 解释:最高权限的
-
-
-
点击 应用
-
5.2、 设备端配置
-
工具准备
sudo apt install nfs-common nfs-kernel-server -y -
查看
NAS开放的NFS共享# 替换为实际的 NAS IP showmount -e 192.168.0.122 # 输出示例: Export list for 192.168.0.122: /Nas_share 192.168.0.0/24 -
临时挂载
sudo mkdir -p /mnt/nas_share sudo mount -t nfs 192.168.1.50:/nas_share /mnt/nas_share -
开机自动挂载(写入
/etc/fstab)sudo mkdir -p /mnt/nas sudo nano /etc/fstab # 写入以下内容 192.168.0.122:/Nas_share/my_folder /mnt/nas nfs defaults,_netdev,nofail,noauto,x-systemd.automount,timeo=600,retrans=5 0 0 -
测试
# 测试挂载 # Step 1:检查 fstab 是否有语法错误 sudo mount -a # Step 2:让 systemd 重新识别 fstab(关键) sudo systemctl daemon-reload # Step 3:检查 automount 是否生效 正常应看到: active (waiting) systemctl status mnt-nas.automount # Step 4:触发自动挂载(真正验证) ls /mnt/nas # Step 5:确认挂载成功 mount | grep nas df -h | grep nas
更多推荐
所有评论(0)