fleetflow_container/
docker.rs

1use crate::error::{ContainerError, Result};
2use bollard::Docker;
3
4/// Docker接続を初期化
5pub async fn init_docker() -> Result<Docker> {
6    let docker = Docker::connect_with_local_defaults()
7        .map_err(|e| ContainerError::DockerConnectionFailed(e.to_string()))?;
8
9    // 接続テスト
10    docker
11        .ping()
12        .await
13        .map_err(|e| ContainerError::DockerConnectionFailed(e.to_string()))?;
14
15    Ok(docker)
16}
17
18/// Dockerバージョンを取得
19pub async fn get_docker_version() -> Result<String> {
20    let docker = init_docker().await?;
21    let version = docker
22        .version()
23        .await
24        .map_err(|e| ContainerError::DockerApiError(e.to_string()))?;
25    Ok(version.version.unwrap_or_else(|| "unknown".to_string()))
26}