161. docker

sites

镜像、容器与仓库

通俗解释:镜像就类似操作系统光盘介质,容器相当于通过光盘安装后的系统。

  • 通过光盘(镜像),我们能在不同机器上部署系统(容器),系统内的操作只会保留在当前的系统(容器)中,

  • 如果要升级系统,需要使用到光盘(镜像),但是可能会导致操作系统(容器)的数据丢失。

常用命令

状态查询命令

  • docker stats: 查看 docker 运行情况

  • docker images: 查看所有镜像

  • docker ps 查看当前正在运行的容器,

    • -a 查看所有已经创建的容器
  • docker inspect <container_name>: 分析容器的详细信息

    包含容器所有的配置信息

  • docker top: 显示指定容器的运行进程

  • docker logs: 查看容器运行日志

    后面加上 container_name 或 ID

    OPTIONS:

    -f: 类似于 tail -f

运行管理命令

  • docker exec

    进入容器: docker exec -it <container_name> <bash或/bin/bash>, 类似于 terminal

  • docker run

    1
    docker run --name <container_name> -d -p 9090:80 images:<TAG >
    • -v <宿主机路径>:<容器路径>: 挂载. 可用于防止容器删除后导致数据丢失.
  • del

    在我们构建镜像过程中, 可能会产生 none 的镜像, 这些镜像是没有意义的, 只会白白占用系统资源.

构建镜像

构建一个 docker 镜像是基于另一个 docker 镜像构建的.

Dockerfile

1
FROM java:8
  • FROM XXX: 基于了另外一个镜像

  • ADD:

    与构建上下文路径(context_directory)相匹配

编排管理

docker compose 负责处理容器间的依赖关系, 用于开发测试
docker swarm 支持集群
docker stack 类似于 docker compose, 用于生产环境

docker compose

用于解决容器之间的依赖关系

  • down: stop & del 容器和网络等
  • stop: 仅让容器停止

docker-compose (单机版)

  • version: 对版本进行解析

  • services: 声明 services, 每个 services 对应一个或多个容器. 可以声明多个 services, 可以配置多容器之间的关联.

    • 名字可以随便写

    • image: 声明容器的镜像, 从哪里下载

    • restart: 重启策略

    • ports: 端口映射

    • links: 声明与其他容器间的关联, 自动解析依赖配置, 解耦绑定关系 depends_on: 通过这个字段容器依赖关系, 需要启动 depends_on 的依赖服务后才能够启动当前 services, 但是不是那么可靠. 需重点关注启动顺序, 关注 “ready”(可以对外提供服务了) 和 “running” 状态, 通过 wait-for-it.sh 用来等待服务可用, 才启动当前 services.

    • volumes: 数据挂载

      可以引用系统里面的环境变量, 包括数据卷、日志卷.

    • command: 启动命令

    • deploy(version2): 声明容器对资源的使用限制

      [!WARNING]
      在 version3 中使用 --compatibility

      • limits:
      • reservations: 使用的初始资源数
    • envirionment: 声明环境变量