Kitematic Contribute

Kitematic is an application built using electron and is powered by the Docker Engine. While it's work in progress, the goal is to make Kitematic a high-performance, portable Javascript ES6 application built with React and Flux (using alt. It adopts a single data flow pattern:

There are three primary types of objects:

  • Actions:

    Interact with the system (Docker Engine, Docker Machine, Registries, Hub, etc)

  • Views:

    Views make up the UI, and trigger available actions.

  • Stores: Stores store the state of the application.

* Utils:   Utils interact with APIs, outside systems, CLI tools and generate. They are called by user-generated actions and in return, also create actions based on API return values, CLI output etc.


Kitematic is a self-contained .app , with a two exceptions:

  1. It will install VirtualBox if it's not already installed.
  2. It copies the docker and docker-machine binaries to /usr/local/bin for convenience.

Getting Started

  1. npm install
  2. npm start
  3. npm run release
  4. Unit Tests: npm test


Kitematic uses the Jest framework by Facebook. To keep tests fast, please mock as much as possible.

Code Guidelines

Run npm run lint before committing to ensure your javascript is up to standard. Feel free to suggest changes to the lint spec in .jshint.

Contributor Prcess

  • grunt package tech
  • electron tech
  • replace by
  • from starting to running process.
  • source code

source code


actions/.js components/.js stores/.js utils/.js *.js browser.js(electron) main.js(app.js->react主应用) npm start->browser->index.hmtl(main.js->app.js->reactor->router.js(set,get)|routes.js) menutemplate.js

  • utils ContainerUtil.js DockerMachineUtil.js DockerUtil.js HubUtil.js let HUB2_ENDPOINT = process.env.HUB2_ENDPOINT || ''; MetricsUtil.js RegHubUtil.js let REGHUB2_ENDPOINT = process.env.REGHUB2_ENDPOINT || ''; SetupUtil.js Util.js VirtualBox.js WebUtil.js script.src = 'http://localhost:35729/livereload.js';

  • stores AccountStore.js export default alt.createStore(AccountStore); ContainerStore.js RepositoryStore.js SetupStore.js TagStore.js

  • actions AccountAction.js AccountServerAction.js export default alt.createActions(AccountServerActions); ContainerAction.js ContainerSererActions.js RepositoryAction.js RepositoryServerActions.js SetupActions.js SetupServerAction.js TagAction.js TagServerActions.js


styles/bootstrap/mixins/.less .less bootstrap.less(mixins.less,.less) mixins.less(mixins/.less) .less main.less(bootstrap/bootstrap.less,.less)

kitematic login - - [24/Mar/2016:18:12:20 +0800] "POST /v2/users/login/ HTTP/1.1" 401 195 "-" "-"

docker login - - [24/Mar/2016:18:08:38 +0800] "GET /v2/ HTTP/1.1" 401 195 "-" "docker/1.9.1-cs2 go/go1.4.3 git-commit/4ade326 kernel/3.16.0-0.bpo.4-amd64 os/linux arch/amd64" - hujb2000 [24/Mar/2016:18:08:38 +0800] "GET /v2/ HTTP/1.1" 200 2 "-" "docker/1.9.1-cs2 go/go1.4.3 git-commit/4ade326 kernel/3.16.0-0.bpo.4-amd64 os/linux arch/amd64"

docker logout 目前的搭建方法:只能登录,但不能判断用户,不能区分租户。

root@hjb:/home/hjb/icp# docker login -u hujb2000 -e [email protected] Password: Error response from daemon: no successful auth challenge for - errors: [token auth attempt for registry request failed with status: 401 Unauthorized]