Docker on Kali Linux needs special kernel configuration adjustments to work properly with the system’s security features. If you’re wondering how to install docker on kali linux, you’ve come to the right place. This guide walks you through the entire process step by step, from prerequisites to verification, so you can run containers smoothly on your pentesting machine.
Kali Linux is built for security testing, and its default kernel settings sometimes conflict with Docker’s requirements. But don’t worry—with a few tweaks, you’ll have Docker up and running in no time. Let’s get started.
Prerequisites For Installing Docker On Kali Linux
Before you begin, make sure your system meets these basic requirements. You’ll need a working internet connection and sudo privileges.
- Kali Linux 2020.1 or newer (check with
lsb_release -a) - A 64-bit processor
- At least 2GB of RAM (4GB recommended)
- Root access or a user with sudo permissions
- An updated package list
First, update your system to avoid dependency conflicts. Run these commands in your terminal:
sudo apt update
sudo apt upgrade -y
This ensures all existing packages are current. It’s a good habit before installing any new software on Kali.
How To Install Docker On Kali Linux
Now we reach the main event. Follow these steps carefully to get Docker installed on your Kali system. I’ll show you both the official repository method and the Kali-specific approach.
Step 1: Remove Old Docker Versions
If you have any older Docker installations, remove them first. This prevents conflicts.
sudo apt remove docker docker-engine docker.io containerd runc
It’s okay if these packages aren’t installed. The command will just return a message saying they’re not found.
Step 2: Install Required Dependencies
Docker needs some prerequisite packages to function correctly. Install them with:
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
These tools allow you to add secure repositories and verify package signatures. Without them, the installation might fail.
Step 3: Add Docker’s Official GPG Key
Adding the GPG key ensures you download authentic Docker packages. Run:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
This command fetches the key and stores it securely. If you see any errors, check your internet connection.
Step 4: Set Up The Stable Repository
Kali Linux is based on Debian Testing, so we use the Debian repository. Add it with:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bullseye stable" | sudo tee /etc/apt/sources.list.d/docker.list
Note: We use “bullseye” as the codename because Kali’s base matches Debian 11. This works for most modern Kali versions.
Step 5: Install Docker Engine
Update your package list again, then install Docker:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
This installs the Docker Engine, CLI, and container runtime. The process takes a few minutes depending on your internet speed.
Step 6: Start And Enable Docker Service
After installation, start the Docker service and enable it to run at boot:
sudo systemctl start docker
sudo systemctl enable docker
Verify the service is running:
sudo systemctl status docker
You should see “active (running)” in green. If not, check the logs with journalctl -u docker.
Step 7: Verify The Installation
Test that Docker works by running a simple container:
sudo docker run hello-world
This downloads a test image and runs it. If you see a welcome message, Docker is installed correctly.
Post-Installation Steps For Docker On Kali Linux
Now that Docker is installed, you’ll want to configure it for everyday use. These steps improve security and convenience.
Add Your User To The Docker Group
Running Docker commands with sudo every time is tedious. Add your user to the docker group to avoid that:
sudo usermod -aG docker $USER
Log out and log back in for the changes to take effect. After that, you can run docker ps without sudo.
Security note: Adding a user to the docker group gives them root-level privileges. Only do this on trusted systems.
Configure Docker To Start On Boot
If you want Docker to start automatically when Kali boots, it’s already enabled from step 6. But double-check:
sudo systemctl is-enabled docker
If it returns “enabled,” you’re good. Otherwise, run sudo systemctl enable docker.
Adjust Kernel Parameters For Docker
Kali’s hardened kernel sometimes blocks Docker features. To fix common issues, edit the sysctl configuration:
sudo nano /etc/sysctl.d/docker.conf
Add these lines:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
Save and apply:
sudo sysctl --system
This enables IP forwarding and bridge networking, which Docker needs for container communication.
Troubleshooting Common Docker Installation Issues On Kali
Sometimes things go wrong. Here are solutions to frequent problems you might encounter.
Problem: “Cannot Connect To The Docker Daemon”
This usually means the Docker service isn’t running. Check with:
sudo systemctl status docker
If it’s inactive, start it: sudo systemctl start docker. Also ensure your user is in the docker group.
Problem: “Error Response From Daemon: OCI Runtime Create Failed”
This often relates to kernel security modules like AppArmor or SELinux. Try running the container with security options disabled:
docker run --security-opt apparmor=unconfined hello-world
If it works, you need to adjust your AppArmor profile. Edit /etc/apparmor.d/docker or temporarily disable it.
Problem: “Apt Update” Fails After Adding Docker Repository
This happens when the repository key is missing or wrong. Re-add the GPG key from step 3. Also verify the repository URL in /etc/apt/sources.list.d/docker.list.
Problem: Docker Commands Hang Or Timeout
Network issues can cause this. Check your DNS settings in /etc/docker/daemon.json. Add a DNS server like:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
Restart Docker after making changes: sudo systemctl restart docker.
Using Docker On Kali Linux: Basic Commands
Once Docker is installed, you’ll want to start using it. Here are essential commands to get you going.
Pull And Run A Container
To download and run an image, use:
docker pull ubuntu:latest
docker run -it ubuntu bash
This pulls the latest Ubuntu image and opens an interactive shell. You can now run commands inside the container.
List Running Containers
See all active containers with:
docker ps
Add -a to see all containers, including stopped ones.
Stop And Remove Containers
Stop a container by its ID or name:
docker stop container_id
Remove it when done:
docker rm container_id
You can also remove all stopped containers with docker container prune.
Manage Images
List downloaded images:
docker images
Remove an image:
docker rmi image_name
Be careful—removing images can’t be undone easily.
Security Considerations For Docker On Kali
Kali Linux is a security distribution, so running Docker requires extra caution. Here’s what to keep in mind.
Run Containers With Least Privilege
Avoid running containers as root whenever possible. Use the --user flag to specify a non-root user inside the container:
docker run --user 1000:1000 ubuntu bash
This reduces the risk of container breakouts.
Use Read-Only Root Filesystems
For extra security, mount the container’s filesystem as read-only:
docker run --read-only ubuntu bash
This prevents attackers from modifying system files if they compromise the container.
Limit Network Capabilities
By default, containers can access the network. Restrict this with:
docker run --network none ubuntu bash
Or use --cap-drop=ALL to drop all Linux capabilities.
Scan Images For Vulnerabilities
Before using images from unknown sources, scan them with tools like Trivy or Clair. Install Trivy on Kali:
sudo apt install trivy
Then scan an image:
trivy image ubuntu:latest
This helps you avoid running vulnerable software.
Advanced Docker Configuration For Kali
For power users, here are some advanced settings to optimize Docker on Kali.
Change Docker Storage Driver
Kali uses overlay2 by default, which is fine. But if you need better performance, switch to devicemapper or btrfs. Edit /etc/docker/daemon.json:
{
"storage-driver": "overlay2"
}
Restart Docker after changes.
Set Up Docker In Docker
For CI/CD pipelines, you might need Docker running inside a container. Use the docker image with the host’s socket:
docker run -v /var/run/docker.sock:/var/run/docker.sock docker:latest docker ps
This is useful for testing but has security implications.
Use Docker Compose
Install Docker Compose to manage multi-container applications:
sudo apt install docker-compose
Then create a docker-compose.yml file to define services. Run docker-compose up to start them.
Frequently Asked Questions
Can I Install Docker On Older Versions Of Kali Linux?
Yes, but you might need to use an older Docker version. Check the Docker documentation for compatibility with your kernel. Generally, Kali 2019 and above work fine.
Does Docker Work With Kali’s Default Firewall?
Docker manages its own iptables rules, so it usually works alongside UFW or other firewalls. However, you might need to adjust firewall settings to allow container traffic.
How Do I Uninstall Docker From Kali Linux?
Use sudo apt remove docker-ce docker-ce-cli containerd.io. Then delete configuration files with sudo rm -rf /var/lib/docker. This removes all containers and images.
Why Does Docker Show “Permission Denied” Even After Adding My User To The Docker Group?
You need to log out and log back in for group changes to take effect. Alternatively, run newgrp docker to refresh your session.
Can I Run Kali Linux Itself Inside A Docker Container?
Yes, you can pull the official Kali image with docker pull kalilinux/kali-rolling. This is useful for isolated testing environments.
Conclusion
You’ve now learned how to install docker on kali linux from start to finish. The process involves updating your system, adding the official repository, and configuring kernel parameters for compatibility. With Docker installed, you can run isolated containers for development, testing, or security research.
Remember to follow security best practices, especially on a pentesting distribution like Kali. Keep your Docker installation updated with sudo apt update && sudo apt upgrade regularly. If you run into issues, refer to the troubleshooting section or check the Docker forums.
Now you’re ready to containerize your tools and workflows on Kali Linux. Start experimenting with different images and see how Docker can streamline your work. Happy containerizing!