Docker 学习笔记

第一章:镜像管理

命令描述常用参数
docker search搜索Docker Hub上的镜像--limit 限制搜索结果数量
docker pull下载镜像到本地-a 下载所有标签版本
docker images列出本地镜像-q 只显示镜像ID
docker rmi删除本地镜像-f 强制删除

补充细节

  • 删除镜像前需确保没有容器在使用该镜像
  • 使用docker image prune可清理悬空镜像
  • 镜像命名规范:[仓库地址]/[命名空间]/[镜像名]:[标签]

第二章:容器操作

命令描述
docker run创建并启动容器
docker ps查看容器列表
docker stop停止运行中的容器
docker start启动已停止的容器
docker restart重启容器
docker stats查看容器资源使用情况
docker logs查看容器日志
docker exec进入运行中的容器
docker rm删除容器

docker run 详细参数

1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

常用参数:

  • -d:后台运行(守护模式)
  • --name:指定容器名称
  • -p:端口映射(格式:主机端口:容器端口
  • -e:设置环境变量
  • --restart:重启策略(always|on-failure|unless-stopped
  • --network:指定网络
  • -v:数据卷/目录挂载

其他命令细节

进入容器

1
2
3
docker exec -it 容器名 /bin/bash
# 或使用sh
docker exec -it 容器名 /bin/sh

查看容器

  • docker ps -a:查看所有容器(包括已停止的)
  • docker ps -aq:只显示容器ID

批量操作

1
2
3
4
5
# 停止所有容器
docker stop $(docker ps -aq)

# 删除所有容器
docker rm -f $(docker ps -aq)

第三章:镜像保存与加载

命令描述
docker commit将容器保存为新镜像
docker save将镜像保存为tar文件
docker load从tar文件加载镜像

docker commit示例

1
docker commit -m "描述信息" 容器名 新镜像名:标签

镜像导出导入

1
2
3
4
5
# 导出镜像
docker save -o image.tar 镜像名:标签

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

第四章:镜像分享

命令描述
docker login登录Docker Registry
docker tag给镜像打标签
docker push推送镜像到Registry

操作流程

  1. 登录仓库:docker login registry.example.com
  2. 重命名镜像:docker tag 原镜像 新镜像名:标签
  3. 推送镜像:docker push 新镜像名:标签

第五章:数据存储

挂载方式

  1. 目录挂载-v /host/path:/container/path
  2. 卷挂载-v volume_name:/container/path

卷管理

1
2
3
4
5
6
7
8
# 查看所有卷
docker volume ls

# 创建卷
docker volume create my_volume

# 查看卷详情
docker volume inspect my_volume

注意

  • 卷默认存储在/var/lib/docker/volumes/
  • 卷的生命周期独立于容器

第六章:网络管理

常用命令

1
2
3
4
5
6
7
8
9
10
11
# 创建网络
docker network create my_network

# 查看网络
docker network ls

# 查看网络详情
docker network inspect my_network

# 删除网络
docker network rm my_network

容器连接网络

1
docker run --network=my_network ...

特点

  • 自定义网络支持DNS解析(容器名即主机名)
  • 默认bridge网络不支持容器名解析

第七章:Docker Compose

基本命令

1
2
3
4
5
6
7
8
9
10
11
# 启动服务
docker compose up -d

# 停止服务
docker compose down

# 启停特定服务
docker compose start/stop service_name

# 扩容服务
docker compose scale service=num

YAML文件结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
name: 应用名称
services:
服务名:
container_name: 容器名
image: 镜像:标签
ports:
- "主机端口:容器端口"
environment:
- KEY=VALUE
volumes:
- 卷名:容器路径
- 主机路径:容器路径
networks:
- 网络名
restart: always

networks:
网络名:

volumes:
卷名:

注意

  • 资源名称会添加应用名_前缀
  • down命令可选参数:
    • --rmi all:删除相关镜像
    • -v:删除关联卷

第八章:Dockerfile

常用指令

指令说明示例
FROM基础镜像FROM ubuntu:20.04
RUN执行命令RUN apt-get update
CMD容器启动命令CMD ["python", "app.py"]
EXPOSE声明暴露端口EXPOSE 8080
ENV设置环境变量ENV APP_HOME=/app
COPY复制文件COPY . /app
ADD复制+解压文件ADD app.tar.gz /app
WORKDIR设置工作目录WORKDIR /app
ENTRYPOINT容器入口点ENTRYPOINT ["java", "-jar"]
VOLUME创建挂载点VOLUME /data
USER指定运行用户USER appuser
ARG构建参数ARG APP_VERSION=1.0

案例:

1
2
3
4
5
6
7
8
9
FROM openjdk:17

LABEL author=alan

COPY app.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

构建镜像

1
2
3
docker build -t 镜像名:标签 -f Dockerfile路径 上下文路径
# 示例
docker build -t myapp:1.0 -f ./Dockerfile .