Advertisement
Guest User

Untitled

a guest
Oct 29th, 2015
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.14 KB | None | 0 0
  1. TL;DR
  2.  
  3. Hosting for docker containers. Download eLEET, and type for example ./eLEET run centos echo "Hello world" or eLEET.exe run eleet/ubuntu to get started!
  4.  
  5. History
  6.  
  7. Minecraft (game by MSFT) is one of the most popular games of all times, and the game is best enjoyed by friends playing together on "servers". However, the servers are complicated to set up and require professional hardware making it very costly and hard to administer for most people. To address the problem a small group of Minecraft enthusiasts started working on a hosting solution to make it cheaper and easier to host servers and play the game in multiplayer mode. We started by providing servers to our nearest friends, but we quickly discovered that we needed a way of scaling the service so we built apps (Google, Apple) to control the servers. At the same time, as we hosted more and more servers we continuously made the backend more and more sophisticated.
  8.  
  9. After 9 months of continuous refinements of the system we now have something that runs very smoothly at fairly large scale. We are hosting ~950 000 containers (~130 000 active) with ~1-2 create/start/stop commands per second running in a 2000-core/X TB memory dynamic cluster.
  10.  
  11. eLEET is our project to take the same architecture that we have refined for Minecraft hosting to general Docker container hosting.
  12.  
  13. What is eLEET?
  14.  
  15. eLEET is a hosting solution for Docker. The difference is that when you run an image using Docker it runs on your local machine, while when you run an image using eLEET it runs inside our cluster. For example, to start an ubuntu image on Docker and run a command you would type:
  16.  
  17. docker run ubuntu:14.04 echo "hello world"
  18.  
  19. To do the same in eLEET you would type:
  20.  
  21. eLEET run ubuntu:14.04 echo "hello world"
  22.  
  23. That sounds cool, how do I get started?
  24.  
  25. All interaction with eLEET is happening through the eLEET command. You can download the eLEET command for your platform¹ here: Download eLEET
  26.  
  27. Or if you are familiar with Go: go get github.com/LEETcc/eLEET/
  28.  
  29. Once you have downloaded the binary you need to register / login by typing: eLEET login youremail@gmail.com We currently only support login using Google accounts. You only need to login once.
  30.  
  31. After you have logged in you can either use one of the eLEET images (eLEET images) or any docker image. For example, to use the eLEET ubuntu image which comes with a built-in SSH server you would type:
  32.  
  33. eLEET run eleet/ubuntu
  34.  
  35. This would output something like:
  36.  
  37. Creating container...........................*..........................................success!
  38.  
  39. ContainerID 29
  40. Container successfully created: sys286.eleet.io
  41. Root password: aiwn
  42. SSH port: 10038
  43. Login using: "ssh -p 10038 root@sys286.eleet.io"
  44. To list all your containers type eLEET ps which would output something like:
  45.  
  46. Requesting list of containers........success!
  47.  
  48. All containers associated with your account are listed below:
  49.  
  50. ------------------------------
  51. ContainerID: 1
  52. Status: Online
  53. Address: sys177.eleet.io
  54. SSH port: 10006 (ssh -p 10006 root@sys177.eleet.io)
  55. Web access: http://sys177.eleet.io
  56. All ports: 22->10006,80->10099,19132->19132
  57. ------------------------------
  58. ContainerID: 22
  59. Status: Online
  60. Address: sys926.eleet.io
  61. SSH port: 10070 (ssh -p 10070 root@sys926.eleet.io)
  62. Web access: http://sys926.eleet.io
  63. All ports: 22->10070,80->10060
  64. ------------------------------
  65. ContainerID: 29
  66. Status: Online
  67. Address: sys286.eleet.io
  68. SSH port: 10038 (ssh -p 10038 root@sys286.eleet.io)
  69. All ports: 22->10038
  70. ------------------------------
  71.  
  72. Please note:
  73. - ContainerID is the identifier used in all other eLEET commands like 'start' and 'stop'
  74. - Port mappings shown as [internal]->[external]. [internal] denoting ports seen from within the container. [external] denoting corresponding public ports
  75. - On most system you can SSH by typing 'ssh -p {port} root@{address}'
  76. - Containers are accessible over port 80 through a proxy. You can also access the container directly through the external mapping of port 80
  77. To see all commands simply type eLEET:
  78.  
  79. Usage: eLEET [global options] COMMAND [arg...]
  80.  
  81. Commands:
  82. ps List all your containers
  83. run Create a new container
  84. start Start an existing container
  85. stop Stop a running container
  86. restart Restart a running container
  87. delete Deletes a container
  88. images List all official eLEET images
  89. login Login / register an account with eLEET, required for all other commands
  90. logout Logout from eLEET
  91.  
  92. Global options:
  93. -server="eLEET.io": Ignore, only used for development and testing
  94.  
  95. Run 'eLEET COMMAND --help' for more information on a command.
  96. What's all this funky stuff with sysXXX.eleet.io and what's going on with the ports?
  97.  
  98. If you are familiar with regulary cloud instances and VPSes you will find that eLEET is behaving differently on a few things:
  99.  
  100. No static IP
  101.  
  102. All eLEET containers are given a domain identifier, for example sys286.eLEET.io. You should use this domain to connect to your container. Please do not use the IP behind the domain to connect to your container as the IP may change. If you want to use your own domain you can put a CNAME record pointing to your eLEET domain (this does not yet work for HTTP).
  103.  
  104. Only pre-specified ports are available
  105.  
  106. By default, eLEET containers do not have any public ports open. To open up ports you need to specify which ports you want to use as a parameter to eLEET run using the -ports parameter. Ports <1000 are not available for containers and if you specify a port <1000 it will be "mapped" to an externally visible port. You can see all open ports including port mappings using the eLEET ps command.
  107.  
  108. HTTP traffic
  109.  
  110. HTTP traffic on port 80 is supported on LEET through a proxy system. If you open up port 80 when you create the container (eLEET run -ports=80 ...) you will be able of accessing your container on port 80 but only through the domain identifier. eLEET does not yet support custom domains on port 80, and eLEET does not yet support HTTPS.
  111.  
  112. Be prepared for container restarts
  113.  
  114. eLEET containers are subject to restarts more often than regular VPSes. This means that you should ensure that you have proper start-up commands specified when you create the container, or alternatively boot-scripts specified inside the container.
  115.  
  116. Bugs
  117.  
  118. eLEET is in a really early stage. If you find bugs or things that are not working properly. Please file an issue here on GitHub. Include (1) your email that you are using to log in to eLEET, (2) the command that caused the error, and (3) any output in the console that may be relevant. Also, feel free to contact us on info@eleet.io.
  119.  
  120. Developing your own eLEET client
  121.  
  122. With permission, the API for eLEET is open for anyone to use. The API runs over HTTP and is using JSON. You can see the documentation here.
  123.  
  124. Disclaimer
  125.  
  126. eLEET comes with absolutely no warranty. None what so ever. This is a project that could be shut down at any point and you should host nothing critical within eLEET. You have been warned!
  127.  
  128. ¹ Linux, Mac OS X, or Windows. Note that as the images are run inside the eLEET cluster you can run eLEET on Windows and Mac OS X even though Docker only has support for Linux (without VMs).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement