💾 Made Changes Inside Container? Save Them!
You debugged inside container. Installed packages. Now you want to save it. docker commit creates image from running container.
📝 Basic Commit
# Start container docker run -it ubuntu bash # Inside container: install packages apt-get update apt-get install -y nginx # Exit (Ctrl+D or exit) # Commit changes to new image docker commit CONTAINER_ID myapp:nginx # Now you have image with nginx pre-installed docker run -it myapp:nginx bash
🎯 Advanced Commit
# Commit with message and author docker commit -m "Added nginx" -a "John Doe" CONTAINER_ID myapp:nginx # Commit with different tag docker commit CONTAINER_ID myapp:1.0 # Commit to specific repository docker commit CONTAINER_ID myrepo/myapp:latest # Pause container before commit (avoid corruption) docker pause CONTAINER_ID docker commit CONTAINER_ID myapp:saved docker unpause CONTAINER_ID # Change CMD and ENTRYPOINT during commit docker commit --change 'CMD ["nginx", "-g", "daemon off;"]' CONTAINER_ID myapp:nginx
💡 When to Use (and Not Use)
- Good for: Debugging sessions, temporary snapshots, experimenting
- Not for: Production images (use Dockerfile for reproducibility)
- Not for: Secrets (they get committed to image)
- Prefer Dockerfile over commit for production
“Debugged inside container for 2 hours, installed 10 packages. docker commit saved the state. Now I have a working image without rewriting Dockerfile. Perfect for exploration.”
