Docker 命令
镜像
docker build
: 从 Dockerfile 构建镜像。docker pull
: 从 Docker Hub 或其他注册表拉取镜像。docker push
: 将镜像推送到 Docker Hub 或其他注册表。docker images
: 列出本地镜像。docker rmi
: 删除本地镜像。
容器
docker run
: 创建并启动一个新的容器。docker start
: 启动一个已停止的容器。docker stop
: 停止一个正在运行的容器。docker ps
: 列出正在运行的容器(-a
参数列出所有容器)。docker exec
: 在运行的容器中执行命令。docker rm
: 删除一个或多个容器。docker logs
: 查看容器的日志输出。
参数
-d
: 后台运行容器。-p
: 端口映射(例如:-p 8080:80
)。-v
: 挂载卷或目录(例如:-v /host/path:/container/path
)。-e
: 设置环境变量(例如:-e MY_VAR=value
)。--name
: 为容器指定名称。--network
: 连接到自定义网络。
存储
目录挂载
-v /host/path:/container/path
: 将主机上的目录挂载到容器中的指定路径。-v /host/file:/container/file
: 将主机上的文件挂载到容器中的指定路径。
卷映射
-v my_volume:/container/path
: 使用命名卷将数据持久化。docker volume create my_volume
: 创建一个新的卷。docker volume ls
: 列出所有卷。docker volume rm my_volume
: 删除卷。
网络
自定义网络
docker network create my_network
: 创建一个新的自定义网络。docker network ls
: 列出所有网络。docker network inspect my_network
: 查看网络的详细信息。docker network connect my_network my_container
: 将容器连接到自定义网络。docker network disconnect my_network my_container
: 将容器从自定义网络断开。
Compose
语法
version
: 指定 Compose 文件格式的版本(例如:version: '3.8'
)。services
: 定义服务(例如:db
,web
)。image
: 指定基础镜像。build
: 指定构建上下文和 Dockerfile。ports
: 端口映射(例如:- "8080:80"
)。volumes
: 挂载卷或目录(例如:- "/host/path:/container/path"
)。environment
: 设置环境变量(例如:- "MY_VAR=value"
)。depends_on
: 依赖关系(例如:- db
)。networks
: 连接到自定义网络。restart
: 重启策略(例如:unless-stopped
)。
命令
docker-compose up -d
: 后台启动服务。docker-compose down
: 停止并删除服务。docker-compose ps
: 列出服务状态。docker-compose restart <service_name>
: 重启服务。docker-compose build
: 重新构建服务。docker-compose config
: 检查配置文件的有效性。docker-compose logs <service_name>
: 查看服务日志。
Dockerfile
指令
FROM
: 指定基础镜像(例如:FROM python:3.9-slim
)。WORKDIR
: 设置工作目录(例如:WORKDIR /app
)。RUN
: 执行命令并创建新的镜像层(例如:RUN pip install -r requirements.txt
)。COPY
: 复制文件或目录(例如:COPY . /app
)。ADD
: 类似于COPY
,但支持自动解压压缩文件(例如:ADD myapp.tar.gz /app
)。ENV
: 设置环境变量(例如:ENV MY_ENV_VAR=my_value
)。EXPOSE
: 声明容器运行时需要监听的端口(例如:EXPOSE 8000
)。CMD
: 指定容器启动时要运行的默认命令(例如:CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
)。ENTRYPOINT
: 指定容器启动时要运行的命令(例如:ENTRYPOINT ["uwsgi", "--ini", "uwsgi.ini"]
)。VOLUME
: 创建挂载点(例如:VOLUME /data
)。
Docker 的分层存储机制
- 镜像层:Docker 镜像是由一系列只读层组成的。每一层都是前一层的增量修改。
- 写时复制 (Copy-on-Write, CoW):当容器运行时,Docker 会创建一个可写层来保存所有的更改。只读层保持不变,只有在写操作发生时才会创建新的层。
- 联合文件系统 (UnionFS):Docker 使用联合文件系统来管理这些层,使得多层文件系统可以合并成一个统一的视图。
- 缓存:Docker 构建过程中,如果某一层没有变化,Docker 会使用之前的缓存层,从而加快构建速度。
总结
- Docker 命令:用于管理镜像和容器的基本命令。
- 存储:通过目录挂载和卷映射实现数据持久化。
- 网络:自定义网络使容器间通信更灵活。
- Compose:简化多容器应用的管理和部署。
- Dockerfile:定义如何构建镜像的脚本。
- 分层存储机制:提高构建效率和资源利用率。
希望这些总结对你有所帮助!如果你有任何问题,请随时提问。