1. 镜像管理

基础操作

docker pull <镜像名:标签>          # 拉取镜像(如 `docker pull nginx:latest`)
docker search <关键词>            # 搜索镜像
docker images                     # 查看本地镜像
docker rmi <镜像ID或名称>          # 删除镜像
docker rmi $(docker images -q)    # 删除所有镜像(谨慎!)

镜像构建与导出

# 通过 Dockerfile 构建镜像
docker build -t <镜像名:标签> <上下文路径>  # 如 `docker build -t myapp:v1 .`

# 将容器打包为新镜像
docker commit <容器ID> <新镜像名:标签>      # 如 `docker commit abc123 myapp:v2`

# 导出镜像为 tar 文件
docker save -o xxx.tar <镜像名:标签>        # 或 `docker save myapp:v1 > myapp.tar`

# 从 tar 文件加载镜像
docker load -i xxx.tar                     # 或 `docker load < myapp.tar`

2. 容器管理

基础操作

# 启动容器(常用选项)
docker run [选项] <镜像名>
  # -d: 后台运行
  # -p: 端口映射(主机端口:容器端口)
  # -v: 数据卷挂载(主机路径:容器路径)
  # --name: 指定容器名称
  # --rm: 容器退出后自动删除(测试常用)
  # -e: 设置环境变量
  # --restart: 重启策略(如 `--restart unless-stopped`)

# 示例:启动 MySQL 并持久化数据
docker run -d --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /data/mysql:/var/lib/mysql \
  -p 3306:3306 \
  --restart unless-stopped \
  mysql:latest

# 查看容器
docker ps           # 运行中的容器
docker ps -a        # 所有容器(含已停止)
docker stats        # 实时资源占用

# 容器生命周期
docker start/stop/restart <容器ID或名称>
docker rm -f <容器ID>          # 强制删除运行中的容器
docker rm $(docker ps -aq)     # 删除所有容器(谨慎!)

进入容器与操作

# 进入容器交互终端
docker exec -it <容器ID> /bin/bash   # 或 `/bin/sh`

# 从容器复制文件到宿主机
docker cp <容器ID>:<容器路径> <宿主机路径>

# 查看容器日志
docker logs -f <容器ID>      # 实时跟踪日志

3. 网络与数据卷

网络管理

docker network ls                  # 查看网络列表
docker network create --subnet=172.18.0.0/16 mynet  # 创建自定义网络
docker run --net mynet --ip 172.18.0.2 ...  # 指定容器IP

数据卷管理

docker volume create <卷名>        # 创建数据卷
docker volume inspect <卷名>       # 查看卷详情
docker run -v <卷名或主机路径>:<容器路径> ...  # 挂载数据卷

4. 高级功能

容器自启动与重启策略

# 启动时设置重启策略(推荐 `unless-stopped`)
docker run -d --restart unless-stopped nginx

# 更新已有容器的重启策略
docker update --restart unless-stopped <容器ID>

时区与宿主机映射

# 容器时区设置为宿主机时区(如 Asia/Shanghai)
docker run -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro ...

# 映射宿主机命令(如使用宿主机的 `docker` 命令)
docker run -v /var/run/docker.sock:/var/run/docker.sock ...

镜像推送与标签管理

# 登录镜像仓库(如网易云)
docker login -u <用户名> -p <密码> hub.c.163.com

# 打标签并推送镜像
docker tag <本地镜像ID> hub.c.163.com/yourname/repo:tag
docker push hub.c.163.com/yourname/repo:tag

5. 实战示例

RabbitMQ 与 Redis

# RabbitMQ(带管理界面)
docker run -d --name rabbitmq \
  -p 5672:5672 -p 15672:15672 \
  --restart unless-stopped \
  rabbitmq:3.7.5-management

# Redis
docker run -d --name redis \
  -p 6379:6379 \
  --restart unless-stopped \
  redis

Spring Boot 应用

# Dockerfile 示例
FROM openjdk:8-jdk-alpine
ADD target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

构建并运行:

docker build -t myapp .
docker run -d -p 8080:8080 --restart unless-stopped myapp

6. 系统维护

# 清理无用资源
docker system prune      # 清理临时文件
docker system prune -a   # 清理所有未使用镜像

# 查看容器IP
docker inspect -f '{{.NetworkSettings.IPAddress}}' <容器ID>

# 批量操作
docker stop $(docker ps -aq)    # 停止所有容器
docker rm $(docker ps -aq)      # 删除所有容器

添加新评论