一、镜像(Image)相关命令
镜像是容器的静态模板, 这部分命令用于管理 例如builder-jammy-base:latest(最精简的 Ubuntu 22.04 系统环境) 这类镜像:
| 命令 | 作用 | 示例 |
|---|---|---|
docker images |
查看本地镜像 | docker images |
docker search <关键词> |
搜索镜像 | docker search ubuntu |
docker pull <镜像名:标签> |
拉取镜像 | docker pull builder-jammy-base:latest |
docker rmi <镜像ID/镜像名> |
删除指定镜像 | docker rmi builder-jammy-base:latest(加 -f 强制删除) |
docker build -t <镜像名:标签> <Dockerfile路径> |
通过Dockerfile构建镜像 | docker build -t my-jammy:v1 .(. 表示当前目录的Dockerfile) |
docker save -o <保存文件名.tar> <镜像名> |
导出镜像为压缩包 | docker save -o jammy-base.tar builder-jammy-base:latest |
docker load -i <压缩包.tar> |
导入本地镜像包 | docker load -i jammy-base.tar |
二、容器(Container)相关命令(核心)
容器是镜像的动态运行实例,这部分是日常操作最多的命令:
| 命令 | 作用 | 示例 |
|---|---|---|
docker ps |
查看运行中的容器 | docker ps(加 -a 查看所有容器,包括停止的) |
docker run [参数] <镜像名> |
创建并启动容器 | docker run -d -p 80:80 --name my-nginx nginx (-d:后台运行容器;-p:指定宿主机 8080 端口映射到容器 80 端口;--name 给容器起个好记的名字,避免记容器ID) docker run -d -P --name my-nginx nginx (自动用宿主机随机端口去映射容器端口) ##### -p 和 -P 的区别 -p(小写):手动指定端口映射(如 -p 8080:80,宿主机 8080 端口映射到容器 80 端口) -P(大写):自动用宿主机随机端口去映射容器端口 |
docker start/stop <容器ID/容器名> |
启动 / 停止容器 | docker start my-container / docker stop my-container |
docker restart <容器ID/容器名> |
重启容器 | docker restart my-container |
docker rm <容器ID/容器名> |
删除容器 | docker rm my-container(加 -f 强制删除运行中的容器) |
docker exec -it <容器ID/容器名> <命令> |
在运行的的容器中执行命令 | docker exec -it my-container 命令 |
docker logs <容器ID/容器名> |
查看容器日志 | docker logs -f my-container(-f 实时跟踪日志) |
docker cp <本地路径> <容器ID:容器路径> |
本地与容器互传文件 | docker cp ./test.txt my-container:/root/(本地传容器)docker cp my-container:/root/test.txt ./(容器传本地) |
三、系统 / 资源管理命令(实用)
用于清理垃圾、查看 Docker 状态:
| 命令 | 作用 | 示例 |
|---|---|---|
docker info |
查看 Docker 系统信息(如加速器、存储路径) | docker info |
docker version |
查看 Docker 版本(客户端 + 服务端) | docker version |
docker system df |
查看 Docker 磁盘占用 | docker system df(类似 df -h) |
docker system prune [参数] |
清理无用资源(镜像 / 容器 / 网络) | docker system prune -a(-a 清理所有未使用镜像,谨慎执行) |
四、网络(Network)相关命令(进阶)
管理容器网络(新手先了解即可):
| 命令 | 作用 | 示例 |
|---|---|---|
docker network ls |
查看所有网络 | docker network ls |
docker network create <网络名> |
创建自定义网络 | docker network create my-network |
docker run --network <网络名> <镜像名> |
启动容器并加入指定网络 | docker run -it --name c1 --network my-network ubuntu |
快速记忆技巧
-
所有命令都可以用
docker --help或docker <子命令> --help查看帮助,比如docker run --help; -
核心高频命令:
pull(拉镜像)→run(启容器)→exec(进容器)→ps(看容器)→stop/rm(停 / 删容器); -
批量删除技巧: powershell
# 删除所有停止的容器 docker rm $(docker ps -aq) # 删除所有未使用的镜像 docker rmi $(docker images -aq)
五、贴个docker引擎配置文件
html
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"dns": [
"114.114.114.114",
"8.8.8.8"
],
"experimental": false,
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerhub.timeweb.cloud",
"https://huecker.io",
"https://noohub.net"
]
}
六、最后的建议:
国内现在的 Docker 环境确实是"地狱难度 ",镜像源经常无预警封锁或报 403,需要科学上网,折腾代理和镜像源极其耗费精力,要搞推荐直接下海用阿里云海外服务器或AWS或Azure