codetainer

A Docker container in your browser.

  • 所有者: codetainerapp/codetainer
  • 平台:
  • 许可证: MIT License
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

codetainer

codetainer gif

Build Status

codetainer allows you to create code 'sandboxes' you can embed in your
web applications (think of it like an OSS clone of codepicnic.com).

Codetainer runs as a webservice and provides APIs to create, view, and attach to the
sandbox along with a nifty HTML terminal you can interact with the sandbox in
realtime. It uses Docker and its introspection APIs to provide the majority
of this functionality.

Codetainer is written in Go.

For more information, see the slides from a talk introduction.

Build & Installation

Requirements

  • Docker >=1.8 (required for file upload API)
  • Go >=1.4
  • godep

Building & Installing From Source

# set your $GOPATH
go get github.com/codetainerapp/codetainer  
# you may get errors about not compiling due to Asset missing, it's ok. bindata.go needs to be created
# by `go generate` first.
cd $GOPATH/src/github.com/codetainerapp/codetainer
# make install_deps  # if you need the dependencies like godep
make

This will create ./bin/codetainer.

Configuring Docker

You must configure Docker to listen on a TCP port.

DOCKER_OPTS="-H tcp://127.0.0.1:4500 -H unix:///var/run/docker.sock"

Configuring codetainer

See ~/.codetainer/config.toml. This file will get auto-generated the first
time you run codetainer, please edit defaults as appropriate.

# Docker API server and port
DockerServer = "localhost"
DockerPort = 4500

# Enable TLS support (optional, if you access to Docker API over HTTPS)
# DockerServerUseHttps = true
# Certificate directory path (optional)
#   e.g. if you use Docker Machine: "~/.docker/machine/certs"
# DockerCertPath = "/path/to/certs"

# Database path (optional, default is ~/.codetainer/codetainer.db)
# DatabasePath = "/path/to/codetainer.db"

Running an example codetainer

$ sudo docker pull ubuntu:14.04
$ codetainer image register ubuntu:14.04
$ codetainer create ubuntu:14.04 my-codetainer-name
$ codetainer server  # to start the API server on port 3000

Embedding a codetainer in your web app

  1. Copy codetainer.js to your webapp.
  2. Include codetainer.js and jquery in your web page. Create a div
    to house the codetainer terminal iframe (it's #terminal in the example below).
<!DOCTYPE html>
<html>
 <head>
   <meta charset="UTF-8">
   <title>lsof tutorial</title>
   <link rel='stylesheet' href='/stylesheets/style.css' />
   <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
   <script src="/javascripts/codetainer.js"></script>
   <script src="/javascripts/lsof.js"></script>
 </head>
 <body>
    <div id="terminal" data-container="YOUR CODETAINER ID HERE"> 
 </body>
</html> 
  1. Run the javascript to load the codetainer iframe from the
    codetainer API server (supply data-container as the id of codetainer on
    the div, or supply codetainer in the constructor options).
 $('#terminal').codetainer({
     terminalOnly: false,                 // set to true to show only a terminal window 
     url: "http://127.0.0.1:3000",        // replace with codetainer server URL
     container: "YOUR CONTAINER ID HERE",
     width: "100%",
     height: "100%",
  });

API Documentation

TODO

Profiles

TODO more documentation.

You can use profiles to apply Docker configs to limit CPU, memory, network access,
and more.

See example profiles for some examples of this.

Register a profile to use with codetainer using codetainer profile register <path-to-json> <name of profile>
and then supply codetainer-config-id when POST'ing to /api/v1/codetainer to create.

Status

Codetainer is unstable and in active development.

主要指标

概览
名称与所有者codetainerapp/codetainer
主编程语言Go
编程语言Makefile (语言数: 4)
平台
许可证MIT License
所有者活动
创建于2015-06-28 16:53:56
推送于2018-05-09 09:11:55
最后一次提交2016-10-17 10:27:15
发布数0
用户参与
星数1.1k
关注者数71
派生数107
提交数142
已启用问题?
问题数30
打开的问题数16
拉请求数6
打开的拉请求数0
关闭的拉请求数2
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?