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:定义如何构建镜像的脚本。
- 分层存储机制:提高构建效率和资源利用率。
希望这些总结对你有所帮助!如果你有任何问题,请随时提问。