Build a docker container as your workspace.
Project description
Pre-requirements
Features
- Easy to use: Just a few commands to build and start a docker container.
- Customizable: You can customize the docker image and the python packages you want to install in the container.
- Reproducible: You can build the same docker image on different machines. Say bye bye to the "It works on my machine" problem.
- Convenient: We made some convenient setups for you, including tools and functions:
- tools: oh-my-zsh, docker within docker, tmux, lightvim
- free of permission problems: same uid and gid as the host
- reversely mounting $HOME directory from container to host
- easy to share
~/.ssh
and~/.gitconfig
- files will not be lost even if the container is removed, e.g., zsh history, configuration files, model checkpoints, ...
- easy to share
- free of port mapping: sharing network with the host
- Pre-built Images: We provide several basic pre-built images for quickly setting up your own workspace environment.
Quick Start
1. Install dockerlab
Install dockerlab with pip:
pip install dockerlab
Or install the latest version from source:
pip install git+https://github.com/hughplay/dockerlab.git
2. Setup a dockerlab project
Create a new dockerlab project:
dockerlab new <project_name>
Or init a dockerlab environment for the existing project:
dockerlab init .
This will setup a few files and directories, the structure is as follows:
.
├── docker/
│ ├── Dockerfile
│ └── misc/
├── docker-compose.yml
├── docker.py
└── .gitignore
3. DIY your own workspace environment
In general, you only need to modify docker/Dockerfile
to customize your own workspace environment. Files you may care about:
docker/Dockerfile
: The dockerfile for building the docker image.docker-compose.yml
: The docker-compose file for building the docker container.docker.py
: The python script for building and starting the container.
We have prepared several templates and pre-built docker images for you. You can replace the default docker/Dockerfile
with the template you like by running the following command:
dockerlab use <template_name>
The available templates can be listed by dockerlab ls
, and the details of each template can be found in dockerlab/templates.
By default, the generated docker/Dockerfile
will use pre-built docker images if there exists. You can also get the full dockerfile by running the following command:
dockerlab use <template_name> --full
4. Build and start the container
python docker.py startd
When you first execute the above command, it will ask you to enter information related to the container and store them in .env
. The example of prompt and the output are as follows:
# prompts
Give a project name [dockerlab]: dockerlab
Code root to be mounted at /project [.]:
Data root to be mounted at /data [data]:
`/home/hongxin/code/dockerlab/data` does not exist in your machine. Create? [yes]:
Log root to be mounted at /log [log]:
`/home/hongxin/code/dockerlab/log` does not exist in your machine. Create? [yes]:
directory to be mounted to hongxin [./docker/misc/container_home]:
`/home/hongxin/code/dockerlab/container_home` does not exist in your machine. Create? [yes]:
# output
Your setting (.env):
UID: 1000
GID: 1000
USER_NAME: hongxin
PROJECT: dockerlab
CODE_ROOT: .
DATA_ROOT: /home/hongxin/code/dockerlab/data
LOG_ROOT: /home/hongxin/code/dockerlab/log
CONTAINER_HOME: /home/hongxin/code/dockerlab/container_home
COMPOSE_PROJECT_NAME: dockerlab_hongxin
5. Get in the container and start your journey.
python docker.py
License
DockerLab is released under the MIT license.
Project details
Release history Release notifications | RSS feed
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
Hashes for dockerlab-0.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e5934fa681b6df826bc149d8e8f8b668d5109b90e148dc9cf2c617334600711 |
|
MD5 | ffd73bdd101f86d46d7e6c60ebb9c870 |
|
BLAKE2b-256 | d40d2f022eb3ff940f95510a63ed6c59b7b59d94c4110c5ec4403b7448a1d77d |