A tool to manage Docker images using S3 storage
Project description
🐳 S3Docker
Simplify Docker image distribution using AWS S3 storage
🎯 Why S3Docker?
Managing Docker images across multiple environments and teams can be challenging:
- Private registries can be expensive and complex to maintain
- Manual image transfer is time-consuming and error-prone
- Version management and rollbacks can be difficult
S3Docker solves these problems by:
- Using AWS S3 as a cost-effective storage solution
- Providing simple commands for image management
- Automatically handling versioning and archiving
- Supporting multiple configuration profiles for different environments
✨ Features
- 📦 Simple push/pull commands for Docker images
- 🔄 Automatic version archiving
- 📝 Multiple named configuration profiles
- 📊 Image listing with size and modification info
- 🧹 Automatic cleanup of temporary files
- 🔒 Secure AWS credentials management
🚀 Installation
pip install s3docker
📋 Prerequisites
- Python 3.6 or higher
- Docker installed and running
- AWS account with S3 access
- AWS credentials with the following permissions:
s3:PutObjects3:GetObjects3:ListBucket
🛠️ Configuration
Initial Setup
s3docker config
Follow the interactive wizard to configure:
- Profile name (e.g., 'prod', 'staging', 'default')
- AWS Access Key ID
- AWS Secret Access Key
- AWS Region (default: us-east-1)
- S3 Bucket name
- S3 Path prefix (default: docker-images)
Managing Multiple Profiles
List all configured profiles:
s3docker configs
📚 Usage Guide
Pushing Images to S3
# Using default profile
s3docker push myapp:latest
# Using specific profile
s3docker push myapp:latest --to prod
# Replace existing image
s3docker push myapp:latest --replace
Pulling Images from S3
# Using default profile
s3docker pull myapp:latest
# Using specific profile
s3docker pull myapp:latest --from prod
Listing Available Images
# List images in default profile
s3docker list
# List images in specific profile
s3docker list --from prod
🔧 How It Works
-
Push Operation:
- Saves Docker image to temporary tar file
- If image exists in S3:
- Moves existing image to archive folder (if --replace not used)
- Archives include timestamps for version tracking
- Uploads new image to S3
- Cleans up temporary files
-
Pull Operation:
- Downloads tar file from S3
- Loads image into Docker
- Automatically removes temporary files
-
Configuration Storage:
- Configs stored in
~/.s3docker/configs.json - Separate profiles for different environments
- Secure credential storage
- Configs stored in
🌟 Best Practices
-
Profile Management:
- Use different profiles for development/staging/production
- Keep production credentials separate
- Regular credential rotation
-
Image Management:
- Use specific tags instead of 'latest'
- Utilize --replace flag carefully
- Regular cleanup of archived versions
🤝 Contributing
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
📝 License
MIT License - feel free to use and modify as needed!
🆘 Support
- Create an issue for bug reports
- Feature requests are welcome
- PRs accepted
🔮 Future Plans
- Support for image tags listing
- Bulk upload/download
- Compression options
- Image metadata support
- Integration with CI/CD pipelines
Made with ❤️ for the Docker community
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file s3docker-0.1.0.tar.gz.
File metadata
- Download URL: s3docker-0.1.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e87148b4539bd3cfe543ba85fd9e008f9a14966397d88a048153fed2783de42a
|
|
| MD5 |
b60e1bdbd4585538e4a87b74ccaa1f60
|
|
| BLAKE2b-256 |
2f7a4416edd4d12def6936dd4201e6751d1a01932175f47cab0d7058cfc584a9
|
File details
Details for the file s3docker-0.1.0-py3-none-any.whl.
File metadata
- Download URL: s3docker-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09ada46a1a7c2f99b5c9d308b0cf5ccf9d53b53108574293008f3a2fd5d2bf74
|
|
| MD5 |
5afd3bfab04d9ed02f00de948278161b
|
|
| BLAKE2b-256 |
b52fc3b55e904ce2aa690b3ed8540ee32a89806bc09592c4bb032ab6378cc038
|