Skip to content

👽 Build a docker container as your workspace.

License

Notifications You must be signed in to change notification settings

hughplay/dockerlab

Repository files navigation

DockerLab

Package Building Status pypi Image Building Status Docker

用Docker搭建你的工作区。


Read this in English.

环境要求

特点

  • 易于使用:只需几个命令即可构建和启动 Docker 容器。
  • 可定制:可以自定义要安装在容器中的 Docker 镜像和 Python 包。
  • 可重现:可以在不同的计算机上构建相同的 Docker 镜像。告别“这在我的机器上可以运行”的问题。
  • 方便:Dockerlab提供了一些方便的设置,包括工具和功能:
    • 工具:oh-my-zshdocker within dockertmuxlightvim
    • 解决权限问题:与主机相同的 uid 和 gid。
    • 将 $HOME 目录从容器反向挂载到主机
      • 轻松共享 ~/.ssh~/.gitconfig
      • 即使删除容器,配置文件也不会丢失,例如:zsh历史记录、配置文件、模型检查点等
    • 解决端口映射问题:与主机共享网络
  • 预构建镜像:Dockerlab提供了几个基本的预构建镜像,可快速设置工作区环境。

快速开始

1. 安装dockerlab

用pip安装dockerlab:

pip install dockerlab

或者从源码安装最新版本:

pip install git+https://github.com/hughplay/dockerlab.git

2. 设置dockerlab项目

创建一个新的dockerlab项目:

dockerlab new <project_name>

或者为现有项目初始化一个dockerlab环境:

dockerlab init .

这将设置一些文件和目录,其结构如下:

.
├── docker/
│   ├── Dockerfile
│   └── misc/
├── docker-compose.yml
├── docker.py
├── Makefile
└── .gitignore

3. 自定义工作环境

通常情况下,只需要修改docker/Dockerfile文件来自定义自己的工作环境。可能关心的文件:

  • docker/Dockerfile: 用于构建docker镜像的dockerfile。
  • docker-compose.yml: 用于构建docker容器的docker-compose文件。
  • docker.py: 用于构建和启动容器的python脚本。
  • Makefile: 基于make的便捷命令定义。

dockerlab准备了几个模板和预构建的docker镜像。可以通过运行以下命令将默认的docker/Dockerfile替换为需要的模板:

dockerlab use <template_name>

可用的模板可以通过 dockerlab ls列出,每个模板的详细信息可以在dockerlab/templates找到。

默认情况下,生成的docker/Dockerfile将使用预构建的docker镜像(如果存在)。也可以通过运行以下命令获取完整的dockerfile:

dockerlab use <template_name> --full

4. 构建和启动容器

make init

当你第一次执行上述命令时,它将要求你输入与容器相关的信息,并将它们存储在.env中。提示和输出示例如下:

# 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. 进入容器开启旅程

make in

本地Build镜像

docker build \
    -f dockerlab/templates/workspace_protein/Dockerfile \
    -t deepbase/dockerlab:workspace_protein \
    .

许可证

Dockerlab使用MIT许可证