Docker

SoTeA 发布于 3 小时前 8 次阅读


Docker 常用命令速查

Docker 核心操作:镜像管理 → 容器运行 → 数据持久化 → 网络通信 → 资源清理


1. 镜像操作

镜像相当于容器的「模板」,所有容器都从镜像启动。

# 拉取镜像
docker pull nginx

# 查看本地镜像列表
docker images

# 删除本地镜像
docker rmi nginx

# 从 Dockerfile 构建镜像(-t 命名:标签)
docker build -t myapp:1.0 .

# 给镜像打标签(准备推送)
docker tag myapp:1.0 myrepo/myapp:1.0

# 推送镜像到远程仓库
docker push myrepo/myapp:1.0

2. 容器操作

容器是镜像的运行实例,也是最常用的部分。

启动容器

docker run -d --name mynginx -p 8080:80 nginx
参数 含义
-d 后台运行(detach)
--name 指定容器名称
-p 8080:80 主机 8080 端口 → 容器 80 端口
-e KEY=VALUE 设置环境变量
-v /host:/container 挂载目录/数据卷
--restart always 容器退出时自动重启
--network 指定网络

生命周期管理

docker ps              # 查看运行中的容器
docker ps -a           # 查看所有容器(含已停止)

docker stop mynginx    # 停止容器
docker start mynginx   # 启动已停止的容器
docker restart mynginx # 重启容器
docker rm mynginx      # 删除容器(需先停止)
docker rm -f mynginx   # 强制删除(运行中也可删)

docker update ...      # 更新容器启动配置

调试 & 查看信息

docker exec -it mynginx bash   # 进入容器交互式终端
docker logs mynginx            # 查看容器日志
docker logs -f mynginx         # 实时跟踪日志
docker inspect mynginx         # 查看容器详细配置(网络、挂载等)

3. 数据卷与持久化

容器删除后内部数据会丢失,通过挂载实现数据持久化。

数据卷(Volume)

Docker 管理的存储,推荐方式。

docker volume create mydata   # 创建数据卷
docker volume ls              # 查看所有卷
docker volume rm mydata       # 删除卷
# 将容器内 /data 挂载到数据卷 mydata(容器删除后数据仍保留)
docker run -d -v mydata:/data nginx

绑定挂载(Bind Mount)

直接挂载宿主机目录。

# 主机目录 /host/path → 容器内 /data
docker run -d -v /host/path:/data nginx

4. 网络

自定义网络让多个容器通过容器名互相通信。

docker network ls                # 查看所有网络
docker network create mynet      # 创建自定义网络
docker network rm mynet          # 删除网络
# 启动容器并加入自定义网络
docker run -d --name app --network mynet nginx

为什么用自定义网络? 同一自定义网络内的容器可以通过容器名直接互相访问(Docker 内置 DNS),无需硬编码 IP。


5. 资源清理

定期清理释放磁盘空间。

docker system prune -a    # 一键清理:停止的容器 + 未使用的网络 + 镜像
docker container prune    # 仅清理停止的容器
docker image prune -a     # 仅清理未使用的镜像
docker volume prune       # 仅清理未使用的数据卷

6. Docker Compose

用 YAML 文件定义和管理多容器应用,一条命令启停整个服务栈。

docker-compose up -d       # 启动 docker-compose.yml 中所有服务
docker-compose down        # 停止并删除容器、网络
docker-compose ps          # 查看服务状态
docker-compose logs -f     # 查看日志(-f 实时跟踪)
docker-compose build       # 重新构建服务镜像

7. 实战示例

单服务快速启动

# Redis
docker run -d --name redis -p 6379:6379 redis

# MySQL(设置 root 密码)
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8

# 应用 + 日志持久化
docker run -d --name chatapp -v /host/logs:/app/logs myapp:1.0

多容器组网(聊天系统)

# 1. 创建自定义网络
docker network create chatnet

# 2. 启动 Redis 并加入网络
docker run -d --name redis --network chatnet redis

# 3. 启动业务服务并加入同一网络
docker run -d --name chatserver --network chatnet mychat:1.0

# redis 和 chatserver 在同一网络内,可通过容器名互相通信

提示:每个章节的命令都可以直接在终端中运行验证,建议配合实际项目练习加深理解。