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>, 类似于 terminaldocker run1
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: 声明环境变量