package cn.reghao.autodop.common.docker.api;

import cn.reghao.autodop.common.docker.pojo.Config;
import cn.reghao.autodop.common.docker.pojo.result.Container;
import cn.reghao.autodop.common.docker.exception.DockerException;
import cn.reghao.autodop.common.docker.pojo.result.ContainerInfo;

import java.util.List;

/**
 * docker 容器操作接口
 *
 * @author reghao
 * @date 2019-12-10 17:48:22
 */
public interface ContainerOps {
    /**
     * 运行镜像
     *
     * @param containerName 容器运行时的名字
     * @param config 容器运行时配置
     * @return 容器 ID
     * @date 2020-01-11 下午9:37
     */
    String run(String containerName, Config config) throws DockerException;

    void start(String containerId) throws DockerException;
    void restart(String containerId) throws DockerException;
    void stop(String containerId) throws DockerException;
    void rmContainer(String containerId) throws DockerException;

    /**
     * 控制台日志内容
     *
     * @param
     * @return
     * @date 2020-05-19 上午10:57
     */
    List<String> consoleLog(String containerId, String logLevel) throws DockerException;

    /**
     * 文件日志内容
     *
     * @param
     * @return
     * @date 2020-05-19 上午10:58
     */
    List<String> fileLog(String containerId, String logPath) throws DockerException;

    /**
     * 查看容器状态
     *
     * @param isAll 是否查看所有的容器
     * @return 容器列表
     * @date 2020-01-19 下午1:38
     */
    List<Container> ps(boolean isAll) throws DockerException;

    /**
     * 查看容器的详细信息
     *
     * @param containerId 容器 ID
     * @return 容器详细信息
     * @date 2020-01-19 下午1:39
     */
    ContainerInfo inspectContainer(String containerId) throws DockerException;

    /**
     * 容器映射到宿主机上的根目录
     *
     * @param
     * @return
     * @date 2020-03-13 下午10:36
     */
    String rootfs(String containerId) throws DockerException;
}
