Skip to content

DevNatan/docker-kotlin

Folders and files

NameName
Last commit message
Last commit date
Aug 5, 2023
Dec 4, 2022
Jun 7, 2024
May 31, 2024
Dec 4, 2022
Dec 23, 2021
Jan 9, 2022
May 30, 2024
May 30, 2024
May 30, 2024
May 30, 2024
Aug 5, 2023
Dec 4, 2022
Dec 21, 2021
May 30, 2024

Repository files navigation

docker-kotlin

Build Integration Tests Maven Central

docker-kotlin allows you to interact with the Docker Engine Remote API in a simplified and fast way.

Installation

repositories {
    mavenCentral()
}

dependencies {
    implementation("me.devnatan:docker-kotlin:0.6.0")
}

For JVM users, use the Docker client JVM artifact

implementation 'me.devnatan:docker-kotlin-jvm:0.6.0'

Basic Usage

Use DockerKotlin.create() to create a new Docker client instance with the default settings, default settings are based on the current platform or environment variables, e.g.: socket path will be set to DOCKER_HOST if present otherwise unix://var/run/docker.sock if the current platform is Unix-like.

val client = DockerClient.create()

To change the default configuration properties use DockerClientConfig and DockerClient overload.

val client = DockerClient {
    // this: DockerClientConfigBuilder
}
Get System Information
val version: SystemVersion = client.system.version()
Create and start a Container with explicit port bindings
val containerId = client.containers.create("busybox:latest") {
    // Only if your container doesn't already expose this port
    exposedPort(80u)

    hostConfig {
        portBindings(80u) {
            add(PortBinding("0.0.0.0", 8080u))
        }
    }
}

client.containers.start(containerId)
Create and start a Container with auto-assigned port bindings
val containerId = client.containers.create("busybox:latest") {
    // Only if your container doesn't already expose this port
    exposedPort(80u)
    
    hostConfig {
        portBindings(80u)
    }
}

client.containers.start(containerId)

// Inspect the container to retrieve the auto-assigned ports
val container = testClient.containers.inspect(id)
val ports = container.networkSettings.ports
List All Containers
val containers: List<Container> = client.containers.list()
Create a new Network
val networkId: String = client.networks.create {
    name = "octopus-net"
    driver = "overlay"
}
Stream Container Logs
val logs: Flow<Frame> = client.containers.logs("floral-fury") {
    stderr = true
    stdout = true
}

logs.onStart { /* streaming started */ }
    .onCompletion { /* streaming finished */ }
    .catch { /* something went wrong */ }
    .collect { log -> /* do something with each log */ }

License

docker-kotlin is licensed under the MIT license.