安装 docker
- Ubuntu/ Kali Linux
bash
sudo apt update
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
- CentOS 7
bash
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
systemctl enable docker
systemctl start docker
usermod -aG docker $USER
- CentOS 9 Stream / CentOS 10 Stream
bash
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io -y
systemctl enable docker
systemctl start docker
usermod -aG docker $USER
- Rocky Linux 8/9(同 CentOS9)
bash
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io -y
systemctl enable docker
systemctl start docker
usermod -aG docker $USER
- ArchLinux
bash
sudo pacman -S docker
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
Docker 安装镜像操作系统
我安装的是KyLin SP03 arm,想要其他的操作系统可以自行下载,我这里提供一个自己可以查找源的网站:
轩辕镜像:https://xuanyuan.cloud/zh/r/macrosan/kylin
bash
# 社区维护版(支持 ARM64)
docker pull \
--platform linux/arm64 \
macrosan/kylin:v10-sp3-2403
# 或华为云镜像(国内更快)
docker pull \
--platform linux/arm64 \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hxsoong/kylin:v10-sp3-linuxarm64
Docker 常用命令
查看运行的容器
bash
# 命令格式
docker ps [OPTIONS]
# 常用示例
# 查看运行中的容器
docker ps
# 查看运行中的容器(显示启动时间)
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.RunningFor}}\t{{.CreatedAt}}"
参数介绍
| 参数选项 | 作用说明 |
|---|---|
| 无参数 | 显示正在运行的容器 |
-a, --all |
显示所有容器(运行 + 已停止) |
-l, --latest |
显示最近创建的容器 |
-n, --last |
显示最近创建的 N 个容器(如 -n 3) |
-q, --quiet |
仅显示容器 ID |
-s, --size |
显示文件大小 |
--no-trunc |
不截断输出(显示完整信息) |
-f, --filter |
按条件过滤容器 |
--format |
使用 Go 模板格式化输出 |
查看镜像
bash
# 命令格式
docker images [OPTIONS]
# 常用示例
# 查看本地所有镜像
docker images
# 常用示例
#显示最近使用的镜像(带完整创建日期)
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}\t{{.Size}}" | head -11
参数介绍
| 参数选项 | 作用说明 |
|---|---|
| 无参数 | 查看本地所有顶层镜像 |
-a, --all |
显示所有镜像(包含中间层/临时镜像) |
-q, --quiet |
仅显示镜像ID,方便脚本批量操作 |
--no-trunc |
显示完整的镜像ID,不截断 |
-f "过滤条件", --filter |
按条件过滤镜像(名称、标签、时间等) |
--format |
自定义输出内容和格式(模板格式化) |
--digests |
显示镜像的摘要信息(Digest校验值) |
运行镜像
bash
# 命令格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 常用例子
# 交互式进入终端
docker run -it --rm ubuntu /bin/bash
# 后台运行并映射端口
docker run -d --name nginx -p 80:80 nginx
# 挂载目录 + 工作目录
docker run -it --rm -v $PWD:/app -w /app ubuntu
# 指定架构运行
docker run -it --rm --platform linux/arm64 myimage:v1
# 指定架构运行,挂载目录,交互式进入终端
docker run -it --platform linux/arm64 -v $PWD:/app myimage:v1 /bin/bash
参数介绍
| 参数选项 | 作用说明 |
|---|---|
-i |
交互式运行,保持标准输入打开 |
-t |
分配一个伪终端(TTY) |
-it |
最常用组合,交互式进入终端 |
-d |
后台运行容器(守护式) |
--rm |
容器停止后自动删除 |
-p 主机端口:容器端口 |
端口映射 |
-P |
随机映射所有暴露端口 |
-v 主机目录:容器目录 |
目录挂载(文件共享) |
--name 名称 |
指定容器名称 |
--hostname 名称 |
设置容器主机名 |
--platform 架构 |
指定架构(linux/amd64, linux/arm64) |
-e 键=值 |
设置环境变量 |
--env-file 文件 |
从文件加载环境变量 |
-w 路径 |
指定容器内工作目录 |
-u 用户 |
指定运行用户 |
--network 网络 |
指定容器网络 |
--restart 策略 |
设置重启策略(no,on-failure,always) |
--privileged |
给容器特权权限 |
--entrypoint 命令 |
覆盖镜像默认入口命令 |
--ip 指定IP |
指定容器静态IP |
--dns DNS地址 |
指定DNS |
-h |
同 --hostname |
-a |
绑定到标准输入/输出/错误 |
进入运行的容器
bash
# 命令格式
docker exec [OPTIONS] 容器ID/容器名 要执行的命令
# 常用示例
# 进入容器终端(最常用)
docker exec -it 容器ID /bin/bash
# 直接在容器内执行命令,不进入终端
docker exec 容器ID ls /root
# 指定工作目录进入容器
docker exec -it -w /home 容器ID /bin/bash
参数介绍
| 参数 | 作用 |
|---|---|
-i |
保持标准输入打开,确保可以交互 |
-t |
分配一个伪终端(TTY),支持终端显示与输入 |
-it |
交互式进入容器终端(最常用组合) |
-d |
后台执行命令,不占用当前终端 |
-e |
设置容器内的环境变量 |
-u |
指定执行命令的用户(如 root) |
-w |
指定容器内的工作目录 |
--privileged |
以特权模式执行命令 |
容器修改保存镜像快照
bash
# 命令格式
docker commit [OPTIONS] 容器ID或名称 新镜像名[:标签]
# 常用示例
# 基础保存容器为镜像
docker commit 容器ID myimage:v1
# 带作者和备注提交(推荐)
docker commit -a "张三" -m "配置好环境" 容器ID myimage:v2
参数介绍
| 参数选项 | 作用说明 |
|---|---|
-a, --author |
设置镜像的作者信息(例如:-a "你的名字") |
-c, --change |
为提交的镜像应用 Dockerfile 指令 |
-m, --message |
设置提交的备注信息(类似 Git 提交说明) |
-p, --pause |
提交时暂停容器运行(默认启用,保证数据完整) |
--help |
查看帮助文档 |
导出镜像 tar 包
bash
# 命令格式
docker save [OPTIONS] IMAGE [IMAGE...]
# 常用示例
# 导出镜像为 tar 包(最常用)
docker save -o 我的镜像.tar 镜像名:版本
# 同时导出多个镜像到一个包
docker save -o 多个镜像.tar 镜像1:v1 镜像2:v2
参数介绍
| 参数选项 | 作用说明 |
|---|---|
-o, --output |
指定导出的 tar 文件名和路径 |
--help |
查看帮助文档 |
导入镜像 tar
bash
# 命令格式
docker load [OPTIONS]
# 常用示例
# 从 tar 文件导入镜像(最常用)
docker load -i 镜像文件.tar
# 完整写法
docker load --input 镜像文件.tar
参数介绍
| 参数选项 | 作用说明 |
|---|---|
-i, --input |
指定导入的 tar 归档文件路径 |
-q, --quiet |
静默模式,仅输出错误信息 |
--help |
查看帮助文档 |
删除容器
bash
# 命令格式
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 常用示例
# 删除单个镜像
docker rmi 镜像名:标签
# 强制删除镜像
docker rmi -f 镜像ID
# 删除多个镜像
docker rmi 镜像1 镜像2 镜像3
参数介绍
| 参数选项 | 作用说明 |
|---|---|
-f, --force |
强制删除镜像(无视容器依赖) |
--no-prune |
保留未标记的父镜像,不移除 |
--help |
查看帮助文档 |
一键清理所有无用容器、镜像、缓存
bash
# 命令格式
docker system prune [OPTIONS]
# 常用示例
# 基础清理(安全)
docker system prune
# 彻底清理(推荐,空间释放最多)
docker system prune -a --volumes
# 无提示强制清理
docker system prune -af
参数介绍
| 参数选项 | 作用说明 |
|---|---|
-a, --all |
删除所有未使用的镜像,而不仅仅是悬空镜像 |
-f, --force |
不进行确认提示,直接执行清理操作 |
--volumes |
同时清理未被任何容器使用的数据卷 |
--filter |
根据条件过滤要清理的资源 |
总结
docker 使用类似于虚拟机,使用步骤为:
- 安装
docker - 安装系统
- 登录系统工作
- 提交或者退出提交快照
- 导出 / 导出 / 删除快照
个人建议
如果只有一个机器,不想装多个虚拟机或者条件不具备,我觉得还是有必要使用的,不过他也是类似虚拟机的一个工具,工具的上限不会超过宿主机,所以如果想要做调试工作,建议还是安装个虚拟机,如果只是为了验证或者编译某个软件,你可以设置运行的镜像跟你宿主机一样大进行测试。