基础概念

镜像(Image)

作用:容器的模板,只读。

容器(Container)

作用:镜像运行后的实例,可读写。

数据卷(Volume)

作用:数据持久化存储。

网络(Network)

作用:容器之间通信。


镜像操作

查看镜像

1
docker images
1
docker image ls

拉取镜像

1
docker pull nginx
1
docker pull nginx:1.25

参数说明:

  • nginx:1.25 → 指定版本 tag(默认 latest)

删除镜像

1
docker rmi nginx
1
docker rmi -f nginx
1
docker image prune -f

参数说明:

  • -f → 强制删除
  • prune → 删除未使用镜像

构建镜像

1
docker build -t myapp:1.0 .

参数说明:

  • -t → 指定镜像名和版本
  • . → 当前目录为构建上下文

容器操作

运行容器

1
docker run -d --name mynginx -p 80:80 nginx

参数说明:

  • -d → 后台运行
  • --name → 指定容器名
  • -p → 端口映射(宿主机:容器)
  • nginx → 使用的镜像
1
docker run -it ubuntu /bin/bash

参数说明:

  • -i → 保持标准输入
  • -t → 分配终端
1
docker run -d --restart=always nginx

参数说明:

  • --restart → 重启策略

查看容器

1
docker ps
1
docker ps -a
  • -a → 包含已停止容器

启动 / 停止 / 重启

1
docker start mynginx
1
docker stop mynginx
1
docker restart mynginx

进入容器

1
docker exec -it mynginx /bin/bash
1
docker attach mynginx

删除容器

1
docker rm mynginx
1
docker rm -f mynginx
1
docker container prune -f

状态查看

查看日志

1
docker logs mynginx
1
docker logs -f mynginx
1
docker logs --tail 100 mynginx

参数说明:

  • -f → 实时输出
  • --tail → 指定最后多少行

资源占用

1
docker stats

查看详细信息

1
docker inspect mynginx

查看端口映射

1
docker port mynginx

查看进程

1
docker top mynginx

数据卷与挂载

创建数据卷

1
docker volume create mydata

查看数据卷

1
docker volume ls

删除数据卷

1
docker volume rm mydata
1
docker volume prune -f

目录挂载(Bind Mount)

1
docker run -d -v /host/data:/container/data nginx

数据卷挂载(Volume)

1
docker run -d -v mydata:/container/data nginx

新版挂载方式(推荐)

1
docker run -d --mount type=volume,source=mydata,target=/container/data nginx

网络管理

查看网络

1
docker network ls

创建网络

1
docker network create mynet

指定网络运行

1
docker run -d --network mynet nginx

Docker Compose

启动

1
docker compose up
1
docker compose up -d

停止

1
docker compose down

查看状态

1
docker compose ps
1
docker compose logs

重建

1
docker compose build
1
docker compose up --build -d

Dockerfile 常用指令速查

示例

1
2
3
4
5
FROM openjdk:17
WORKDIR /app
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

常用指令

  • FROM → 基础镜像
  • WORKDIR → 工作目录
  • COPY → 复制文件
  • ADD → 复制+自动解压
  • RUN → 构建阶段执行命令
  • CMD → 默认启动命令
  • ENTRYPOINT → 固定启动命令
  • EXPOSE → 声明端口
  • ENV → 环境变量
  • ARG → 构建参数
  • VOLUME → 数据卷

生产环境最佳实践

重启策略

1
docker run -d --restart=unless-stopped nginx

可选值:

  • no
  • always
  • unless-stopped
  • on-failure

日志限制

1
docker run -d --log-opt max-size=100m --log-opt max-file=3 nginx

数据必须挂载

1
docker run -d -v mysql_data:/var/lib/mysql mysql

不使用 root

1
USER 1000

限制资源

1
docker run -d --memory=512m --cpus=1 nginx

常用排查

查看退出码

1
docker inspect --format='{{.State.ExitCode}}' mynginx

实时日志

1
docker logs -f --tail 50 mynginx

端口占用

1
lsof -i:80

系统清理

1
docker system df
1
docker system prune -f
1
docker system prune -a -f