use bollard::{API_DEFAULT_VERSION, Docker}; use futures_util::future::TryFutureExt; use bollard::container::ListContainersOptions; use std::collections::HashMap; use std::default::Default; #[tokio::main] async fn main() -> Result<(), Box> { let connection = Docker::connect_with_defaults().expect("connection"); let mut filters = HashMap::new(); filters.insert("status", vec!["running"]); filters.insert("label", vec!["auto-restart.unhealthy"]); filters.insert("health", vec!["unhealthy"]); let options = Some(ListContainersOptions{ all: true, filters, ..Default::default() }); let result = connection.list_containers(options).await; //let result = connection.ping().map_ok(|_| Ok::<_, ()>(println!("Connected!"))).await; if let Err(x) = result { eprintln!("error: {:#?}", x); } else if let Ok(found) = result { println!("found: {}", found.len()); for container in found { let container_id = container.id.unwrap(); println!("{:?}", container.names.unwrap_or(vec![container_id.clone()])); //let r = connection.restart_container(container_id.as_str(), None).await; //println!("{:?}", r); } } Ok(()) }