Docker 常用命令大全

Docker 常用命令大全

Docker 命令不多,但记不住还是很麻烦。整理一份常用命令清单,收藏备用。

1. 镜像命令

# 拉取镜像
docker pull nginx:latest

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

# 搜索镜像
docker search nginx

# 导出镜像
docker save -o nginx.tar nginx:latest

# 导入镜像
docker load -i nginx.tar

2. 容器命令

# 启动容器(后台运行)
docker run -d --name mynginx -p 80:80 nginx

# 查看运行中的容器
docker ps

# 查看所有容器(包括停止的)
docker ps -a

# 停止容器
docker stop mynginx

# 启动已停止的容器
docker start mynginx

# 重启容器
docker restart mynginx

# 删除容器
docker rm mynginx

# 强制删除运行中的容器
docker rm -f mynginx

3. 进入容器

# 进入容器(bash)
docker exec -it mynginx bash

# 进入容器(sh)
docker exec -it mynginx sh

# 查看容器日志
docker logs mynginx

# 实时查看日志
docker logs -f mynginx

# 查看容器详情
docker inspect mynginx

4. 文件操作

# 从容器复制文件到宿主机
docker cp mynginx:/etc/nginx/nginx.conf ./

# 从宿主机复制文件到容器
docker cp ./index.html mynginx:/usr/share/nginx/html/

5. 端口和网络

# 查看容器端口映射
docker port mynginx

# 查看容器 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mynginx

6. 清理命令

# 停止所有容器
docker stop $(docker ps -q)

# 删除所有停止的容器
docker container prune

# 删除所有未使用的镜像
docker image prune

# 删除所有未使用的资源(危险操作)
docker system prune -a

7. Docker Compose 常用命令

# 启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 重启某个服务
docker-compose restart nginx

总结

Docker 常用命令核心:

  • 镜像:pull / images / rmi
  • 容器:run / ps / stop / start / rm
  • 进入:exec -it
  • 日志:logs -f
  • 清理:prune

记住这些,日常 Docker 操作基本够用了。


emer 发布于  2026-10-4 11:07 

Docker 网络模式详解

Docker 四种网络模式详解

Docker 网络是容器通信的基础,搞懂四种网络模式,容器网络就不会乱。

1. bridge 模式(默认)

这是 Docker 默认的网络模式。容器在一个虚拟的 bridge 网络里,每个容器有自己的虚拟 IP,通过 NAT 访问外部网络。

# 启动容器,默认就是 bridge
docker run -d nginx

# 查看容器 IP
docker inspect 容器ID | grep IPAddress

特点:

  • 容器之间可以通过 IP 互相访问
  • 外部访问需要端口映射
  • 适合大多数场景

2. host 模式

容器直接用宿主机的网络,没有独立的网络栈。

docker run -d --net=host nginx

特点:

  • 网络性能最好,没有 NAT 开销
  • 端口直接用宿主机的,不用映射
  • 多个容器不能用同一个端口

适合对性能要求高的场景。

3. none 模式

容器没有网络,完全隔离。

docker run -d --net=none nginx

特点:

  • 没有任何网络
  • 安全级别最高
  • 适合不需要网络的离线计算任务

4. container 模式

新创建的容器和一个已存在的容器共享网络。

docker run -d --net=container:nginx容器ID redis

特点:

  • 两个容器共享网络栈
  • 可以用 localhost 互相访问
  • 适合紧密配合的服务

5. 自定义网络

生产环境推荐用自定义网络,不用默认的 bridge:

# 创建自定义网络
docker network create mynet

# 容器加入自定义网络
docker run -d --net=mynet --name web nginx
docker run -d --net=mynet --name app php

同一个自定义网络里的容器,可以直接用容器名互相访问,不用记 IP。

总结

四种网络模式各有适用场景:

  • 日常开发用默认 bridge
  • 性能要求高用 host
  • 安全要求高用 none
  • 容器间通信密集用自定义网络

搞懂这四种模式,Docker 网络基本就够用了。


emer 发布于  2026-10-4 10:44 

Docker Compose 实战

Docker Compose 一键部署多容器

Docker Compose 可以用一个 YAML 文件定义和运行多个 Docker 容器,开发环境部署特别方便。

1. 基本结构

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456

2. 常用命令

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止并删除容器
docker-compose down

# 重启某个服务
docker-compose restart web

3. PHP 开发环境示例

version: '3'
services:
  php:
    build: .
    ports:
      - "8000:80"
    volumes:
      - ./:/var/www/html
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:alpine

volumes:
  mysql_data:

4. 数据卷

数据卷用来持久化数据,容器删了数据还在:

volumes:
  - ./data:/var/lib/mysql

5. 网络

默认同一 Compose 里的服务在同一个网络,可以直接用服务名互相访问。比如 PHP 容器里连数据库用 mysql:3306,不用写 IP。

总结

Docker Compose 适合本地开发和测试环境。生产环境部署建议用 K8s 或者更专业的编排工具。


emer 发布于  2026-10-4 10:32 

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 的核心思路:

  1. 镜像:打包应用和依赖
  2. 容器:镜像的运行实例
  3. Dockerfile:构建镜像的脚本
  4. Docker Compose:多容器编排

掌握这些,你就可以用 Docker 来部署你的 Web 应用了。Docker 最大的好处就是"一次构建,到处运行",再也不会出现"我电脑上是好的"这种问题了。


emer 发布于  2026-10-4 10:02