Top Related Projects
The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
Issue tracker and mirror of kubectl code
An open and reliable container runtime
Quick Overview
Docker CLI is the command-line interface for Docker, a popular platform for developing, shipping, and running applications in containers. It provides a user-friendly way to interact with Docker, allowing users to manage containers, images, networks, and volumes through simple commands.
Pros
- Easy to use and intuitive command structure
- Extensive documentation and large community support
- Cross-platform compatibility (Windows, macOS, Linux)
- Seamless integration with Docker Engine and other Docker tools
Cons
- Learning curve for advanced features and options
- Performance can be slower compared to direct API calls
- Limited built-in automation capabilities
- Some features may require additional Docker components or plugins
Code Examples
- Running a container:
docker run -d --name my_container -p 8080:80 nginx
This command runs an Nginx container in detached mode, naming it "my_container" and mapping port 8080 on the host to port 80 in the container.
- Building an image:
docker build -t my_image:latest .
This command builds a Docker image using the Dockerfile in the current directory and tags it as "my_image:latest".
- Managing containers:
docker ps -a
docker stop my_container
docker rm my_container
These commands list all containers, stop a running container, and remove a stopped container, respectively.
Getting Started
To get started with Docker CLI:
- Install Docker on your system: https://docs.docker.com/get-docker/
- Verify the installation:
docker --version
docker run hello-world
- Basic usage:
# Pull an image
docker pull ubuntu:latest
# Run a container
docker run -it ubuntu:latest /bin/bash
# List running containers
docker ps
# Stop a container
docker stop <container_id>
For more detailed information and advanced usage, refer to the official Docker documentation: https://docs.docker.com/engine/reference/commandline/cli/
Competitor Comparisons
The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
Pros of Moby
- More comprehensive and feature-rich, covering the entire Docker engine
- Highly modular architecture, allowing for easier customization and extension
- Larger community and more frequent updates due to its core role in Docker
Cons of Moby
- Steeper learning curve due to its complexity and broader scope
- Potentially overwhelming for users who only need basic Docker CLI functionality
- Larger codebase, which may lead to longer build times and more resource usage
Code Comparison
Moby (engine implementation):
func (daemon *Daemon) containerStart(container *container.Container, checkpoint string, checkpointDir string, resetRestartManager bool) (err error) {
container.Lock()
defer container.Unlock()
if container.Running {
return nil
}
// ... (additional implementation)
}
CLI (command interface):
func runStart(dockerCli command.Cli, opts *startOptions) error {
ctx := context.Background()
if opts.attach || opts.openStdin {
// We're going to attach to a container.
// 1. Ensure we only have one container.
if len(opts.containers) > 1 {
return errors.New("you cannot start and attach multiple containers at once")
}
// ... (additional implementation)
}
}
Issue tracker and mirror of kubectl code
Pros of kubectl
- More comprehensive orchestration capabilities for managing complex, distributed applications
- Better suited for large-scale, production environments with multiple nodes
- Offers advanced features like rolling updates, auto-scaling, and self-healing
Cons of kubectl
- Steeper learning curve and more complex setup compared to Docker CLI
- Requires more resources to run and manage
- May be overkill for simple, single-container applications
Code Comparison
kubectl:
kubectl run nginx --image=nginx
kubectl get pods
kubectl expose deployment nginx --port=80 --type=LoadBalancer
kubectl scale deployment nginx --replicas=3
Docker CLI:
docker run -d --name nginx nginx
docker ps
docker port nginx
docker-compose up --scale web=3
Both CLI tools offer commands for running containers, checking their status, and scaling, but kubectl provides more advanced orchestration features out of the box. Docker CLI is simpler and more straightforward for basic container management, while kubectl is designed for complex, multi-container applications in distributed environments.
An open and reliable container runtime
Pros of containerd
- More lightweight and focused on core container runtime functionality
- Better suited for integration into larger systems and platforms
- Designed with a modular architecture, allowing for easier extensibility
Cons of containerd
- Less user-friendly for beginners compared to Docker CLI
- Requires additional tools or wrappers for a complete container management experience
- Limited built-in image management capabilities
Code Comparison
containerd:
client, err := containerd.New("/run/containerd/containerd.sock")
container, err := client.NewContainer(ctx, "my-container", opts...)
task, err := container.NewTask(ctx, cio.NewCreator(cio.WithStdio))
Docker CLI:
cli, err := client.NewClientWithOpts(client.FromEnv)
resp, err := cli.ContainerCreate(ctx, &container.Config{}, &container.HostConfig{}, nil, nil, "my-container")
err = cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{})
Summary
containerd focuses on core container runtime functionality, offering a lightweight and modular approach. It's well-suited for integration into larger systems but may require additional tools for a complete container management experience. Docker CLI provides a more user-friendly interface with built-in image management, making it easier for beginners to get started with containerization.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Docker CLI
About
This repository is the home of the Docker CLI.
Development
docker/cli
is developed using Docker.
Build CLI from source:
docker buildx bake
Build binaries for all supported platforms:
docker buildx bake cross
Build for a specific platform:
docker buildx bake --set binary.platform=linux/arm64
Build dynamic binary for glibc or musl:
USE_GLIBC=1 docker buildx bake dynbinary
Run all linting:
docker buildx bake lint shellcheck
Run test:
docker buildx bake test
List all the available targets:
make help
In-container development environment
Start an interactive development environment:
make -f docker.Makefile shell
Legal
Brought to you courtesy of our legal counsel. For more context, see the NOTICE document in this repo.
Use and transfer of Docker may be subject to certain restrictions by the United States and other governments.
It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.
For more information, see https://www.bis.doc.gov
Licensing
docker/cli is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Top Related Projects
The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
Issue tracker and mirror of kubectl code
An open and reliable container runtime
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot