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 | docker exec -it 容器名 /bin/bash |
查看容器:
docker ps -a:查看所有容器(包括已停止的)docker ps -aq:只显示容器ID
批量操作:
1 | # 停止所有容器 |
第三章:镜像保存与加载
| 命令 | 描述 |
|---|---|
docker commit |
将容器保存为新镜像 |
docker save |
将镜像保存为tar文件 |
docker load |
从tar文件加载镜像 |
docker commit示例:
1 | docker commit -m "描述信息" 容器名 新镜像名:标签 |
镜像导出导入:
1 | # 导出镜像 |
第四章:镜像分享
| 命令 | 描述 |
|---|---|
docker login |
登录Docker Registry |
docker tag |
给镜像打标签 |
docker push |
推送镜像到Registry |
操作流程:
- 登录仓库:
docker login registry.example.com - 重命名镜像:
docker tag 原镜像 新镜像名:标签 - 推送镜像:
docker push 新镜像名:标签
第五章:数据存储
挂载方式
- 目录挂载:
-v /host/path:/container/path - 卷挂载:
-v volume_name:/container/path
卷管理
1 | # 查看所有卷 |
注意:
- 卷默认存储在
/var/lib/docker/volumes/ - 卷的生命周期独立于容器
第六章:网络管理
常用命令
1 | # 创建网络 |
容器连接网络
1 | docker run --network=my_network ... |
特点:
- 自定义网络支持DNS解析(容器名即主机名)
- 默认bridge网络不支持容器名解析
第七章:Docker Compose
基本命令
1 | # 启动服务 |
YAML文件结构
1 | name: 应用名称 |
注意:
- 资源名称会添加
应用名_前缀 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 | FROM openjdk:17 |
构建镜像
1 | docker build -t 镜像名:标签 -f Dockerfile路径 上下文路径 |