Docker常用命令大全,新手必看
前言
Docker现在用得越来越多,但很多新手记不住命令。本文整理了最常用的Docker命令,收藏起来随用随查。
一、镜像相关命令
拉取镜像
docker pull nginx:latest
查看本地镜像
docker images
删除镜像
docker rmi 镜像ID
强制删除镜像
docker rmi -f 镜像ID
搜索镜像
docker search nginx
二、容器相关命令
查看运行中的容器
docker ps
查看所有容器(包括停止的)
docker ps -a
启动容器
docker start 容器名/容器ID
停止容器
docker stop 容器名/容器ID
重启容器
docker restart 容器名/容器ID
删除容器
docker rm 容器名/容器ID
强制删除运行中的容器
docker rm -f 容器名/容器ID
进入容器
docker exec -it 容器名/容器ID /bin/bash
查看容器日志
docker logs 容器名/容器ID
实时查看日志
docker logs -f 容器名/容器ID
查看容器详细信息
docker inspect 容器名/容器ID
查看容器IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名
查看容器资源占用
docker stats
三、运行容器
后台运行
docker run -d --name mynginx -p 80:80 nginx
参数解释:
- -d:后台运行
- --name:容器名
- -p:端口映射(宿主端口:容器端口)
运行并进入容器
docker run -it ubuntu /bin/bash
挂载目录
docker run -d -v /host/path:/container/path nginx
环境变量
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
自动重启
docker run --restart=always -d nginx
四、清理命令
停止所有容器
docker stop $(docker ps -q)
删除所有停止的容器
docker container prune
删除所有未使用的镜像
docker image prune -a
一键清理
docker system prune -a
五、Docker Compose命令
启动
docker-compose up -d
停止
docker-compose down
查看状态
docker-compose ps
查看日志
docker-compose logs -f
重启
docker-compose restart
六、常用场景
运行MySQL
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql:/var/lib/mysql \
mysql:5.7
运行Nginx
docker run -d \
--name nginx \
-p 80:80 \
-v /www:/usr/share/nginx/html \
nginx
运行Redis
docker run -d \
--name redis \
-p 6379:6379 \
redis:alpine
七、常见坑
坑1:容器启动后马上退出
原因: 容器没有前台进程。
解决: 加-it或者tail -f /dev/null。
坑2:端口映射不对
问题: 容器里跑的是80端口,映射成了8080:80。
解决: 确认容器内端口和宿主机端口。
坑3:数据丢失
问题: 容器删了数据就没了。
解决: 一定要挂载数据卷-v。
坑4:镜像太大
解决: 用alpine版本,比如redis:alpine。
八、命令速查表
| 功能 | 命令 |
|---|---|
| 查看运行中容器 | docker ps |
| 查看所有容器 | docker ps -a |
| 查看镜像 | docker images |
| 拉取镜像 | docker pull 镜像名 |
| 运行容器 | docker run -d --name 名字 -p 端口:端口 镜像 |
| 进入容器 | docker exec -it 名字 /bin/bash |
| 查看日志 | docker logs -f 名字 |
| 停止容器 | docker stop 名字 |
| 删除容器 | docker rm 名字 |
| 删除镜像 | docker rmi 镜像ID |
| 清理 | docker system prune -a |
总结
记住:
docker ps看容器docker images看镜像docker run启动容器docker exec -it进入容器docker logs -f看日志docker system prune清理
最常用:
docker ps
docker images
docker exec -it 容器名 /bin/bash
docker logs -f 容器名
遇到问题加QQ23979811 协助处理
Docker 入门:从容器到 Compose 的实战教程
前言
Docker 现在已经是后端开发的标配工具了。很多人听说过 Docker,但不知道它到底是什么、怎么用。本文用最通俗的方式,带你从零开始掌握 Docker 的核心用法。
一、Docker 是什么
简单来说,Docker 就是把你的应用和它依赖的所有东西(代码、运行时、系统库、配置文件)打包到一个"集装箱"里,然后这个集装箱可以在任何机器上运行。
和虚拟机的区别:虚拟机是模拟一整套操作系统,Docker 容器是共享宿主机的内核,所以更轻量、启动更快。
二、核心概念
- 镜像(Image):相当于模板,只读的,用来创建容器
- 容器(Container):镜像运行起来的实例,可以创建、启动、停止、删除
- Dockerfile:用来构建镜像的脚本文件
- 仓库(Registry):存放镜像的地方,比如 Docker Hub
三、常用命令
1. 镜像操作
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
2. 容器操作
# 运行容器
docker run -d -p 80:80 --name my-nginx nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 停止容器
docker stop my-nginx
# 启动容器
docker start my-nginx
# 删除容器
docker rm my-nginx
# 查看容器日志
docker logs my-nginx
# 进入容器内部
docker exec -it my-nginx /bin/bash
关键参数说明:
-d:后台运行-p 80:80:端口映射,宿主机端口:容器端口--name:给容器起个名字
四、Dockerfile 实战
写一个简单的 PHP 应用镜像:
# 基于 PHP 官方镜像
FROM php:7.4-fpm
# 设置工作目录
WORKDIR /var/www/html
# 复制项目文件
COPY . .
# 安装依赖
RUN docker-php-ext-install pdo_mysql
# 暴露端口
EXPOSE 9000
# 启动命令
CMD ["php-fpm"]
构建镜像:
docker build -t my-php-app .
运行容器:
docker run -d -p 9000:9000 my-php-app
五、Docker Compose 实战
当你需要同时运行多个容器(比如 PHP + MySQL + Nginx),手动一个个启动太麻烦了。Docker Compose 就是用来编排多个容器的。
创建 docker-compose.yml 文件:
version: '3'
services:
# PHP 应用
app:
build: .
container_name: php-app
volumes:
- ./:/var/www/html
networks:
- app-network
# MySQL 数据库
db:
image: mysql:5.7
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: myapp
volumes:
- dbdata:/var/lib/mysql
networks:
- app-network
# Nginx 反向代理
nginx:
image: nginx:alpine
container_name: nginx-web
ports:
- "80:80"
volumes:
- ./:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- app-network
volumes:
dbdata:
networks:
app-network:
driver: bridge
启动所有服务:
docker-compose up -d
停止所有服务:
docker-compose down
六、常见问题
1. 容器启动后立刻退出
通常是因为启动命令有问题。用 docker logs 查看日志:
docker logs container_name
2. 数据持久化
容器删除后数据就没了,需要用 volumes 来持久化:
docker run -v /host/path:/container/path mysql
3. 进入容器排查问题
docker exec -it container_name /bin/bash
总结
Docker 的核心思路:
- 镜像:打包应用和依赖
- 容器:镜像的运行实例
- Dockerfile:构建镜像的脚本
- Docker Compose:多容器编排
掌握这些,你就可以用 Docker 来部署你的 Web 应用了。Docker 最大的好处就是"一次构建,到处运行",再也不会出现"我电脑上是好的"这种问题了。