太长不看:跳转至此处
什么是Docker
Docker是一组平台即服务(PaaS)的产品。
它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器,托管容器的软件称为Docker引擎。
Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离,高效工作。
为什么需要Docker
Docker解决了以下问题:
- Linux内部环境差异导致的软件一致性问题
- 环境不一致与依赖地狱(编译器版本、依赖的第三方库的版本)
- 隔离性与安全性(进程级的隔离)
Docker的优势:
- 如果所有软件都运行在同一个主机操作系统上,一个应用的行为异常(例如内存泄漏、疯狂占用 CPU)或安全漏洞可能会影响到同一主机上的其他应用,甚至导致系统崩溃,在Docker环境中则不会发生。
- 提高资源利用率与效率 (比虚拟机效率更高)
- 简化软件部署流程(快速实现软件开发/运行环境的准备)

Linux环境下的Docker安装
以下操作均以 Ubuntu-22.04 LTS 为例。
准备工作
安装基础依赖:
1
2
|
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
|
配置镜像源
1
2
3
4
5
6
7
8
|
# 添加阿里云GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置仓库
echo "deb [arch=$(dpkg --print-architecture) 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
# 更新APT缓存
sudo apt-get update
|
安装Docker引擎
1
|
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
启动Docker服务
1
2
3
4
5
6
7
8
|
# 启动服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 验证服务状态
sudo systemctl status docker
|
配置镜像加速器
创建配置文件目录(已存在可跳过)
1
|
sudo mkdir -p /etc/docker
|
通过命令行生成配置
1
2
3
4
5
6
7
8
9
10
|
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com"
]
}
EOF
|
应用配置
1
2
|
sudo systemctl daemon-reload
sudo systemctl restart docker
|
以下为可选操作:
点击展开
1
2
3
4
5
|
#测试基础镜像
sudo docker pull hello-world
#查看已用镜像源
docker info | grep Mirrors -A 3
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# 添加docker用户组
sudo groupadd docker
# 将当前用户加入docker组
sudo usermod -aG docker $USER
# 激活组权限变更
newgrp docker
# 验证权限
docker run hello-world
|
日志分析
1
2
3
4
5
|
# 查看Docker服务日志
journalctl -u docker.service --since "2025-08-01" --no-pager
# 查看容器日志
docker logs -f [容器ID] --tail 100
|
案例
以下提供一些个人使用的Docker。
所有操作必须在Docker安装完成后进行!
OpenList
OpenList 是一个支持多种存储的文件列表程序,是一个有韧性、长期治理、社区驱动的 AList 分支,旨在防御基于信任的开源攻击
Docker CLI方法
首先创建目录:
然后执行命令:
1
2
3
4
5
|
docker run --user $(id -u):$(id -g) -d \
--restart=unless-stopped \
-v /etc/openlist:/opt/openlist/data \
-p 5244:5244 -e UMASK=022 \
--name="openlist" openlistteam/openlist:latest
|
Docker Compose方法
创建docker-compose.yml文件:
1
2
3
|
mkdir -p /opt/openlist # 可以替换为其他目录
cd /opt/openlist
vim docker-compose.yml
|
写入以下内容,然后保存并退出:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# docker-compose.yml
services:
openlist:
image: 'openlistteam/openlist:latest' # 默认选择最新镜像
container_name: openlist # 容器名称
user: '0:0' # 更换为镜像所在目录的user和group
volumes:
- './data:/opt/openlist/data' # 挂载的目录,宿主机目录在前
ports:
- '5244:5244' # 将Docker的5244端口映射到宿主机的5244端口
environment:
- UMASK=022
restart: unless-stopped # 如果不是手动停止则开机自启
|
在终端中执行:
输出示例:
1
|
drwxr-xr-x 2 user group 4096 Mar 11 16:31 example_dir
|
即可查看到当前目录的所有者user和group。
在 docker-compose.yml 相同目录下执行:
1
2
|
docker compose pull
docker compose up -d
|
Openlist 即可启动
需要更新,则进入docker-compose.yml相同目录,然后运行:
1
2
3
|
docker compose pull
docker compose down
docker compose up -d
|
ddns-go
ddns-go 可以自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名。
挂载主机目录,使用docker host模式。可把/opt/ddns-go替换为你主机任意目录,配置文件为隐藏文件:
1
2
3
4
5
|
docker run -d \
--name ddns-go \
--restart=always \
--net=host \
-v /opt/ddns-go:/root jeessy/ddns-go
|