本文整理 Docker 常用命令,包括基本语法、全局选项、镜像管理、容器管理、网络与数据卷、系统信息、常用组合命令和新手避坑。
适合人群:Docker 新手、后端开发、运维、云原生入门。
关键词:Docker、容器、镜像、命令速查、运维。
一、Docker 命令基本语法
Docker 命令的基本格式:
bash
docker [OPTIONS] COMMAND [ARG...]
一般来说,Docker 命令可以用来管理 daemon,或者通过 CLI 管理镜像和容器。
旧版写法支持:
bash
docker-COMMAND
例如:
bash
docker-ps docker-images
现代 Docker 更推荐统一写成:
bash
docker ps docker images
也就是:
bash
docker COMMAND
二、Docker 全局选项与旧版守护进程选项
1. 现代常用全局选项
| 选项 | 说明 |
|---|---|
-D, --debug | 开启调试模式,默认 false |
-H, --host | 指定 daemon socket,例如 unix:///var/run/docker.sock 或 tcp://host:port |
--config | 指定客户端配置目录 |
--log-level | 设置日志级别 |
--tls | 启用 TLS |
--tlscacert | 指定 CA 证书 |
--tlscert | 指定客户端证书 |
--tlskey | 指定客户端私钥 |
--tlsverify | 启用 TLS 并校验远端 |
-v, --version | 输出版本信息并退出 |
示例:
bash
docker -v docker --version docker -H tcp://127.0.0.1:2375 ps
2. 旧版/守护进程相关选项
下面这些选项常见于旧版 Docker 或 dockerd 守护进程配置中,了解即可。现代 Docker 中很多已经变化,不建议直接照搬。
| 选项 | 说明 | 备注 |
|---|---|---|
-d=true/false | 使用 daemon 模式 | 现代通常直接使用 dockerd |
--api-enable-cors=true/false | 远端 API 启用 CORS 头 | 旧版选项 |
-b="" | 将容器挂载到已存在网桥 | 指定 none 可禁用容器网络 |
--bip="" | 让动态创建的 docker0 使用给定 CIDR 地址 | 与 -b 互斥 |
--dns="" | 指定 Docker 使用的 DNS 服务器 | |
-g="" | 指定 Docker 运行时 root 路径 | 旧版,现代常用 --data-root |
--icc=true/false | 启用容器间通信 | 默认 true |
--ip="" | 绑定端口时默认 IP | 默认 0.0.0.0 |
--iptables=true/false | 是否添加 iptables 规则 | 默认 true |
--mtu=VALUE | 指定容器网络 MTU | 默认 1500 |
-p="" | 指定 daemon PID 文件路径 | 注意:不是端口映射 |
-s="" | 强制使用给定存储驱动 | 旧版,现代常用 --storage-driver |
--selinux-enabled=true/false | 启用 SELinux 支持 | 默认 false |
注意:
docker run -d里的-d表示后台运行;旧版全局选项里的-d表示 daemon 模式,二者不要混淆。
三、Docker 镜像管理命令
| 命令 | 作用 | 常用示例 |
|---|---|---|
docker build | 从 Dockerfile 创建镜像 | docker build -t myapp:1.0 . |
docker images | 列出本地镜像 | docker images |
docker pull | 从仓库拉取镜像 | docker pull nginx:latest |
docker push | 推送镜像到仓库 | docker push username/myapp:1.0 |
docker rmi | 删除镜像 | docker rmi nginx:latest |
docker tag | 给镜像打标签 | docker tag myapp:1.0 username/myapp:1.0 |
docker history | 查看镜像历史 | docker history nginx |
docker save | 保存镜像为 tar 包 | docker save -o nginx.tar nginx:latest |
docker load | 从 tar 包加载镜像 | docker load -i nginx.tar |
docker import | 从 tar 包或目录导入创建镜像 | docker import container.tar myimage:1.0 |
docker search | 搜索镜像 | docker search nginx |
docker login | 登录 Docker 仓库 | docker login |
docker logout | 登出 Docker 仓库 | docker logout |
docker commit | 从容器修改中创建新镜像 | docker commit mycontainer myimage:1.0 |
常用示例:
bash
# 构建镜像 docker build -t myapp:1.0 . 查看镜像 docker images 拉取镜像 docker pull nginx:latest 打标签 docker tag myapp:1.0 username/myapp:1.0 推送镜像 docker push username/myapp:1.0 保存镜像 docker save -o myapp.tar myapp:1.0 加载镜像 docker load -i myapp.tar
四、Docker 容器管理命令
| 命令 | 作用 | 常用示例 |
|---|---|---|
docker run | 创建新容器并运行命令 | docker run -d --name nginx -p 80:80 nginx |
docker create | 创建容器但不启动 | docker create --name nginx nginx |
docker start | 启动容器 | docker start nginx |
docker stop | 停止运行中的容器 | docker stop nginx |
docker restart | 重启容器 | docker restart nginx |
docker kill | 强制关闭容器 | docker kill nginx |
docker rm | 删除容器 | docker rm nginx |
docker pause | 暂停容器内所有进程 | docker pause nginx |
docker unpause | 恢复容器内所有进程 | docker unpause nginx |
docker wait | 阻塞直到容器终止,并输出退出码 | docker wait nginx |
docker ps | 列出容器 | docker ps -a |
docker top | 查看容器内进程 | docker top nginx |
docker attach | 依附到正在运行的容器 | docker attach nginx |
docker exec | 在运行中的容器内执行命令 | docker exec -it nginx bash |
docker logs | 查看容器日志 | docker logs -f nginx |
docker port | 查看端口映射 | docker port nginx |
docker cp | 容器与宿主机之间复制文件 | docker cp nginx:/etc/nginx/nginx.conf ./ |
docker diff | 检查容器文件系统修改 | docker diff nginx |
docker inspect | 查看容器底层信息 | docker inspect nginx |
docker events | 获取服务端实时事件 | docker events |
docker export | 导出容器内容为 tar 包 | docker export nginx > nginx.tar |
常用示例:
bash
# 启动一个 Nginx 容器 docker run -d --name nginx -p 80:80 nginx 查看所有容器 docker ps -a 进入容器 docker exec -it nginx bash 查看日志 docker logs -f nginx 停止并删除容器 docker stop nginx docker rm nginx 从容器复制文件到宿主机 docker cp nginx:/etc/nginx/nginx.conf ./nginx.conf 查看容器详情 docker inspect nginx
推荐:进入容器优先使用
docker exec -it 容器名 bash,不要优先使用docker attach。因为attach退出时可能导致容器停止。
五、Docker 网络与数据卷命令
这部分是现代 Docker 非常常用的内容,建议掌握。
1. 网络管理
| 命令 | 作用 |
|---|---|
docker network ls | 列出网络 |
docker network create | 创建网络 |
docker network inspect | 查看网络详情 |
docker network rm | 删除网络 |
docker network connect | 将容器连接到网络 |
docker network disconnect | 将容器从网络断开 |
示例:
bash
docker network create mynet docker network ls docker run -d --name nginx --network mynet nginx docker network inspect mynet
2. 数据卷管理
| 命令 | 作用 |
|---|---|
docker volume ls | 列出数据卷 |
docker volume create | 创建数据卷 |
docker volume inspect | 查看数据卷详情 |
docker volume rm | 删除数据卷 |
docker volume prune | 清理未使用数据卷 |
示例:
bash
docker volume create mydata docker run -d --name nginx -v mydata:/usr/share/nginx/html nginx docker volume ls docker volume inspect mydata
六、Docker 系统信息与清理命令
| 命令 | 作用 |
|---|---|
docker info | 显示系统相关信息 |
docker version | 输出 Docker 版本信息 |
docker stats | 查看容器资源使用情况 |
docker system df | 查看磁盘使用情况 |
docker system prune | 清理未使用资源 |
docker system prune -a | 清理所有未使用镜像、容器、网络等 |
示例:
bash
docker info docker version docker stats docker system df docker system prune -a
警告:
docker system prune -a会删除大量未使用资源,生产环境慎用。
七、常用组合命令
1. 启动一个 Nginx
bash
docker run -d \ --name nginx \ -p 80:80 \ -v nginx_html:/usr/share/nginx/html \ nginx:latest
2. 进入容器
bash
docker exec -it nginx bash
如果容器没有 bash,可以尝试:
bash
docker exec -it nginx sh
3. 查看日志
bash
docker logs -f nginx
4. 复制文件
bash
docker cp nginx:/etc/nginx/nginx.conf ./nginx.conf docker cp ./index.html nginx:/usr/share/nginx/html/index.html
5. 构建并推送镜像
bash
docker build -t myapp:1.0 . docker tag myapp:1.0 username/myapp:1.0 docker push username/myapp:1.0
6. 保存与加载镜像
bash
docker save -o myapp.tar myapp:1.0 docker load -i myapp.tar
7. 导出与导入容器
bash
docker export nginx > nginx.tar docker import nginx.tar nginx-import:1.0
save/load面向镜像,export/import面向容器,不要混淆。
八、一张表总结 Docker 常用命令
| 分类 | 命令 |
|---|---|
| 镜像 | build、images、pull、push、rmi、tag、history、save、load、import、search、login、logout、commit |
| 容器 | run、create、start、stop、restart、kill、rm、pause、unpause、wait、ps、top、attach、exec、logs、port、cp、diff、inspect、events、export |
| 网络 | network ls、network create、network inspect、network rm、network connect、network disconnect |
| 数据卷 | volume ls、volume create、volume inspect、volume rm、volume prune |
| 系统 | info、version、stats、system df、system prune |
九、新手避坑指南
-
docker run和docker start不一样
docker run会创建新容器;docker start只是启动已存在容器。 -
docker rm和docker rmi不一样
docker rm删除容器;docker rmi删除镜像。 -
删除镜像前先删除依赖它的容器
否则可能提示镜像正在被使用。 -
docker exec比docker attach更适合日常进入容器
exec会新开一个终端,退出一般不会影响容器。 -
-p是端口映射,格式是宿主机端口:容器端口
例如-p 8080:80表示宿主机 8080 映射到容器 80。 -
-v是挂载数据卷或目录
例如-v /host/data:/container/data。 -
docker system prune -a不要随便在生产环境执行
它会清理大量未使用资源。 -
需要持久化的数据不要只放在容器里
容器删除后数据可能丢失,建议使用 volume 或 bind mount。
&spm=1001.2101.3001.5002&articleId=165886433&d=1&t=3&u=7a73ce8fca884524a9eedf39bc47405e)
405

被折叠的 条评论
为什么被折叠?



