| ... | ... |
@@ -45,9 +45,9 @@ clean: |
| 45 | 45 |
|
| 46 | 46 |
docs: |
| 47 | 47 |
-rm -rf $(BUILDDIR)/* |
| 48 |
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
|
| 48 |
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/html |
|
| 49 | 49 |
cp sources/index.html $(BUILDDIR)/html/ |
| 50 |
- cp sources/gettingstarted.html $(BUILDDIR)/html/ |
|
| 50 |
+ cp -r sources/gettingstarted $(BUILDDIR)/html/ |
|
| 51 | 51 |
cp sources/dotcloud.yml $(BUILDDIR)/html/ |
| 52 | 52 |
cp sources/CNAME $(BUILDDIR)/html/ |
| 53 | 53 |
cp sources/.nojekyll $(BUILDDIR)/html/ |
| 54 | 54 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,67 @@ |
| 0 |
+:title: Base commands |
|
| 1 |
+:description: Common usage and commands |
|
| 2 |
+:keywords: Examples, Usage |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+Base commands |
|
| 6 |
+============= |
|
| 7 |
+ |
|
| 8 |
+ |
|
| 9 |
+Running an interactive shell |
|
| 10 |
+---------------------------- |
|
| 11 |
+ |
|
| 12 |
+.. code-block:: bash |
|
| 13 |
+ |
|
| 14 |
+ # Download a base image |
|
| 15 |
+ docker pull base |
|
| 16 |
+ |
|
| 17 |
+ # Run an interactive shell in the base image, |
|
| 18 |
+ # allocate a tty, attach stdin and stdout |
|
| 19 |
+ docker run -i -t base /bin/bash |
|
| 20 |
+ |
|
| 21 |
+ |
|
| 22 |
+Starting a long-running worker process |
|
| 23 |
+-------------------------------------- |
|
| 24 |
+ |
|
| 25 |
+.. code-block:: bash |
|
| 26 |
+ |
|
| 27 |
+ # Run docker in daemon mode |
|
| 28 |
+ (sudo docker -d || echo "Docker daemon already running") & |
|
| 29 |
+ |
|
| 30 |
+ # Start a very useful long-running process |
|
| 31 |
+ JOB=$(docker run -d base /bin/sh -c "while true; do echo Hello world; sleep 1; done") |
|
| 32 |
+ |
|
| 33 |
+ # Collect the output of the job so far |
|
| 34 |
+ docker logs $JOB |
|
| 35 |
+ |
|
| 36 |
+ # Kill the job |
|
| 37 |
+ docker kill $JOB |
|
| 38 |
+ |
|
| 39 |
+ |
|
| 40 |
+Listing all running containers |
|
| 41 |
+------------------------------ |
|
| 42 |
+ |
|
| 43 |
+.. code-block:: bash |
|
| 44 |
+ |
|
| 45 |
+ docker ps |
|
| 46 |
+ |
|
| 47 |
+Expose a service on a TCP port |
|
| 48 |
+------------------------------ |
|
| 49 |
+ |
|
| 50 |
+.. code-block:: bash |
|
| 51 |
+ |
|
| 52 |
+ # Expose port 4444 of this container, and tell netcat to listen on it |
|
| 53 |
+ JOB=$(docker run -d -p 4444 base /bin/nc -l -p 4444) |
|
| 54 |
+ |
|
| 55 |
+ # Which public port is NATed to my container? |
|
| 56 |
+ PORT=$(docker port $JOB 4444) |
|
| 57 |
+ |
|
| 58 |
+ # Connect to the public port via the host's public address |
|
| 59 |
+ echo hello world | nc $(hostname) $PORT |
|
| 60 |
+ |
|
| 61 |
+ # Verify that the network connection worked |
|
| 62 |
+ echo "Daemon received: $(docker logs $JOB)" |
|
| 63 |
+ |
|
| 64 |
+Continue to the complete `Command Line Interface`_ |
|
| 65 |
+ |
|
| 66 |
+.. _Command Line Interface: ../commandline/cli.html |
| 0 | 67 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,320 @@ |
| 0 |
+:title: Command Line Interface |
|
| 1 |
+:description: Docker's CLI command description and usage |
|
| 2 |
+:keywords: Docker, Docker documentation, CLI, command line |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+Command Line Interface |
|
| 6 |
+====================== |
|
| 7 |
+ |
|
| 8 |
+Docker Usage |
|
| 9 |
+~~~~~~~~~~~~ |
|
| 10 |
+ |
|
| 11 |
+:: |
|
| 12 |
+ |
|
| 13 |
+ $ docker |
|
| 14 |
+ Usage: docker COMMAND [arg...] |
|
| 15 |
+ |
|
| 16 |
+ A self-sufficient runtime for linux containers. |
|
| 17 |
+ |
|
| 18 |
+ Commands: |
|
| 19 |
+ attach Attach to a running container |
|
| 20 |
+ commit Create a new image from a container's changes |
|
| 21 |
+ diff Inspect changes on a container's filesystem |
|
| 22 |
+ export Stream the contents of a container as a tar archive |
|
| 23 |
+ history Show the history of an image |
|
| 24 |
+ images List images |
|
| 25 |
+ import Create a new filesystem image from the contents of a tarball |
|
| 26 |
+ info Display system-wide information |
|
| 27 |
+ inspect Return low-level information on a container |
|
| 28 |
+ kill Kill a running container |
|
| 29 |
+ login Register or Login to the docker registry server |
|
| 30 |
+ logs Fetch the logs of a container |
|
| 31 |
+ port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT |
|
| 32 |
+ ps List containers |
|
| 33 |
+ pull Pull an image or a repository to the docker registry server |
|
| 34 |
+ push Push an image or a repository to the docker registry server |
|
| 35 |
+ restart Restart a running container |
|
| 36 |
+ rm Remove a container |
|
| 37 |
+ rmi Remove an image |
|
| 38 |
+ run Run a command in a new container |
|
| 39 |
+ start Start a stopped container |
|
| 40 |
+ stop Stop a running container |
|
| 41 |
+ tag Tag an image into a repository |
|
| 42 |
+ version Show the docker version information |
|
| 43 |
+ wait Block until a container stops, then print its exit code |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+attach |
|
| 47 |
+~~~~~~ |
|
| 48 |
+ |
|
| 49 |
+:: |
|
| 50 |
+ |
|
| 51 |
+ Usage: docker attach [OPTIONS] |
|
| 52 |
+ |
|
| 53 |
+ Attach to a running container |
|
| 54 |
+ |
|
| 55 |
+ -e=true: Attach to stderr |
|
| 56 |
+ -i=false: Attach to stdin |
|
| 57 |
+ -o=true: Attach to stdout |
|
| 58 |
+ |
|
| 59 |
+ |
|
| 60 |
+commit |
|
| 61 |
+~~~~~~ |
|
| 62 |
+ |
|
| 63 |
+:: |
|
| 64 |
+ |
|
| 65 |
+ Usage: docker commit [OPTIONS] CONTAINER [DEST] |
|
| 66 |
+ |
|
| 67 |
+ Create a new image from a container's changes |
|
| 68 |
+ |
|
| 69 |
+ -m="": Commit message |
|
| 70 |
+ |
|
| 71 |
+ |
|
| 72 |
+diff |
|
| 73 |
+~~~~ |
|
| 74 |
+ |
|
| 75 |
+:: |
|
| 76 |
+ |
|
| 77 |
+ Usage: docker diff CONTAINER [OPTIONS] |
|
| 78 |
+ |
|
| 79 |
+ Inspect changes on a container's filesystem |
|
| 80 |
+ |
|
| 81 |
+ |
|
| 82 |
+export |
|
| 83 |
+~~~~~~ |
|
| 84 |
+ |
|
| 85 |
+:: |
|
| 86 |
+ |
|
| 87 |
+ Usage: docker export CONTAINER |
|
| 88 |
+ |
|
| 89 |
+ Export the contents of a filesystem as a tar archive |
|
| 90 |
+ |
|
| 91 |
+ |
|
| 92 |
+history |
|
| 93 |
+~~~~~~~ |
|
| 94 |
+ |
|
| 95 |
+:: |
|
| 96 |
+ |
|
| 97 |
+ Usage: docker history [OPTIONS] IMAGE |
|
| 98 |
+ |
|
| 99 |
+ Show the history of an image |
|
| 100 |
+ |
|
| 101 |
+ |
|
| 102 |
+images |
|
| 103 |
+~~~~~~ |
|
| 104 |
+ |
|
| 105 |
+:: |
|
| 106 |
+ |
|
| 107 |
+ Usage: docker images [OPTIONS] [NAME] |
|
| 108 |
+ |
|
| 109 |
+ List images |
|
| 110 |
+ |
|
| 111 |
+ -a=false: show all images |
|
| 112 |
+ -q=false: only show numeric IDs |
|
| 113 |
+ |
|
| 114 |
+ |
|
| 115 |
+import |
|
| 116 |
+~~~~~~ |
|
| 117 |
+ |
|
| 118 |
+:: |
|
| 119 |
+ |
|
| 120 |
+Usage: docker import [OPTIONS] URL|- [REPOSITORY [TAG]] |
|
| 121 |
+ |
|
| 122 |
+Create a new filesystem image from the contents of a tarball |
|
| 123 |
+ |
|
| 124 |
+ |
|
| 125 |
+info |
|
| 126 |
+~~~~ |
|
| 127 |
+ |
|
| 128 |
+:: |
|
| 129 |
+ |
|
| 130 |
+ Usage: docker info |
|
| 131 |
+ |
|
| 132 |
+ Display system-wide information. |
|
| 133 |
+ |
|
| 134 |
+ |
|
| 135 |
+inspect |
|
| 136 |
+~~~~~~~ |
|
| 137 |
+ |
|
| 138 |
+:: |
|
| 139 |
+ |
|
| 140 |
+ Usage: docker inspect [OPTIONS] CONTAINER |
|
| 141 |
+ |
|
| 142 |
+ Return low-level information on a container |
|
| 143 |
+ |
|
| 144 |
+ |
|
| 145 |
+kill |
|
| 146 |
+~~~~ |
|
| 147 |
+ |
|
| 148 |
+:: |
|
| 149 |
+ |
|
| 150 |
+ Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...] |
|
| 151 |
+ |
|
| 152 |
+ Kill a running container |
|
| 153 |
+ |
|
| 154 |
+ |
|
| 155 |
+login |
|
| 156 |
+~~~~~ |
|
| 157 |
+ |
|
| 158 |
+:: |
|
| 159 |
+ |
|
| 160 |
+ Usage: docker login |
|
| 161 |
+ |
|
| 162 |
+ Register or Login to the docker registry server |
|
| 163 |
+ |
|
| 164 |
+ |
|
| 165 |
+logs |
|
| 166 |
+~~~~ |
|
| 167 |
+ |
|
| 168 |
+:: |
|
| 169 |
+ |
|
| 170 |
+ Usage: docker logs [OPTIONS] CONTAINER |
|
| 171 |
+ |
|
| 172 |
+ Fetch the logs of a container |
|
| 173 |
+ |
|
| 174 |
+ |
|
| 175 |
+port |
|
| 176 |
+~~~~ |
|
| 177 |
+ |
|
| 178 |
+:: |
|
| 179 |
+ |
|
| 180 |
+ Usage: docker port [OPTIONS] CONTAINER PRIVATE_PORT |
|
| 181 |
+ |
|
| 182 |
+ Lookup the public-facing port which is NAT-ed to PRIVATE_PORT |
|
| 183 |
+ |
|
| 184 |
+ |
|
| 185 |
+ps |
|
| 186 |
+~~ |
|
| 187 |
+ |
|
| 188 |
+:: |
|
| 189 |
+ |
|
| 190 |
+ Usage: docker ps [OPTIONS] |
|
| 191 |
+ |
|
| 192 |
+ List containers |
|
| 193 |
+ |
|
| 194 |
+ -a=false: Show all containers. Only running containers are shown by default. |
|
| 195 |
+ -notrunc=false: Don't truncate output |
|
| 196 |
+ -q=false: Only display numeric IDs |
|
| 197 |
+ |
|
| 198 |
+ |
|
| 199 |
+pull |
|
| 200 |
+~~~~ |
|
| 201 |
+ |
|
| 202 |
+:: |
|
| 203 |
+ |
|
| 204 |
+ Usage: docker pull NAME |
|
| 205 |
+ |
|
| 206 |
+ Pull an image or a repository from the registry |
|
| 207 |
+ |
|
| 208 |
+push |
|
| 209 |
+~~~~ |
|
| 210 |
+ |
|
| 211 |
+:: |
|
| 212 |
+ |
|
| 213 |
+ Usage: docker push NAME |
|
| 214 |
+ |
|
| 215 |
+ Push an image or a repository to the registry |
|
| 216 |
+ |
|
| 217 |
+ |
|
| 218 |
+restart |
|
| 219 |
+~~~~~~~ |
|
| 220 |
+ |
|
| 221 |
+:: |
|
| 222 |
+ |
|
| 223 |
+ Usage: docker restart [OPTIONS] NAME |
|
| 224 |
+ |
|
| 225 |
+ Restart a running container |
|
| 226 |
+ |
|
| 227 |
+ |
|
| 228 |
+rm |
|
| 229 |
+~~ |
|
| 230 |
+ |
|
| 231 |
+:: |
|
| 232 |
+ |
|
| 233 |
+ Usage: docker rm [OPTIONS] CONTAINER |
|
| 234 |
+ |
|
| 235 |
+ Remove a container |
|
| 236 |
+ |
|
| 237 |
+ |
|
| 238 |
+rmi |
|
| 239 |
+~~~ |
|
| 240 |
+ |
|
| 241 |
+:: |
|
| 242 |
+ |
|
| 243 |
+ Usage: docker rmi [OPTIONS] IMAGE |
|
| 244 |
+ |
|
| 245 |
+ Remove an image |
|
| 246 |
+ |
|
| 247 |
+ -a=false: Use IMAGE as a path and remove ALL images in this path |
|
| 248 |
+ -r=false: Use IMAGE as a regular expression instead of an exact name |
|
| 249 |
+ |
|
| 250 |
+ |
|
| 251 |
+run |
|
| 252 |
+~~~ |
|
| 253 |
+ |
|
| 254 |
+:: |
|
| 255 |
+ |
|
| 256 |
+ Usage: docker run [OPTIONS] IMAGE COMMAND [ARG...] |
|
| 257 |
+ |
|
| 258 |
+ Run a command in a new container |
|
| 259 |
+ |
|
| 260 |
+ -a=false: Attach stdin and stdout |
|
| 261 |
+ -c="": Comment |
|
| 262 |
+ -i=false: Keep stdin open even if not attached |
|
| 263 |
+ -m=0: Memory limit (in bytes) |
|
| 264 |
+ -p=[]: Map a network port to the container |
|
| 265 |
+ -t=false: Allocate a pseudo-tty |
|
| 266 |
+ -u="": Username or UID |
|
| 267 |
+ |
|
| 268 |
+ |
|
| 269 |
+start |
|
| 270 |
+~~~~~ |
|
| 271 |
+ |
|
| 272 |
+:: |
|
| 273 |
+ |
|
| 274 |
+ Usage: docker start [OPTIONS] NAME |
|
| 275 |
+ |
|
| 276 |
+ Start a stopped container |
|
| 277 |
+ |
|
| 278 |
+ |
|
| 279 |
+stop |
|
| 280 |
+~~~~ |
|
| 281 |
+ |
|
| 282 |
+:: |
|
| 283 |
+ |
|
| 284 |
+ Usage: docker stop [OPTIONS] NAME |
|
| 285 |
+ |
|
| 286 |
+ Stop a running container |
|
| 287 |
+ |
|
| 288 |
+ |
|
| 289 |
+tag |
|
| 290 |
+~~~ |
|
| 291 |
+ |
|
| 292 |
+:: |
|
| 293 |
+ |
|
| 294 |
+ Usage: docker tag [OPTIONS] IMAGE REPOSITORY [TAG] |
|
| 295 |
+ |
|
| 296 |
+ Tag an image into a repository |
|
| 297 |
+ |
|
| 298 |
+ -f=false: Force |
|
| 299 |
+ |
|
| 300 |
+ |
|
| 301 |
+version |
|
| 302 |
+~~~~~~~ |
|
| 303 |
+ |
|
| 304 |
+:: |
|
| 305 |
+ |
|
| 306 |
+ Usage: docker version |
|
| 307 |
+ |
|
| 308 |
+ Show the docker version information |
|
| 309 |
+ |
|
| 310 |
+ |
|
| 311 |
+wait |
|
| 312 |
+~~~~ |
|
| 313 |
+ |
|
| 314 |
+:: |
|
| 315 |
+ |
|
| 316 |
+ Usage: docker wait [OPTIONS] NAME |
|
| 317 |
+ |
|
| 318 |
+ Block until a container stops, then print its exit code. |
|
| 319 |
+ |
| 0 | 320 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,15 @@ |
| 0 |
+:title: docker documentation |
|
| 1 |
+:description: -- todo: change me |
|
| 2 |
+:keywords: todo: change me |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+Commands |
|
| 6 |
+======== |
|
| 7 |
+ |
|
| 8 |
+Contents: |
|
| 9 |
+ |
|
| 10 |
+.. toctree:: |
|
| 11 |
+ :maxdepth: 2 |
|
| 12 |
+ |
|
| 13 |
+ basecommands |
|
| 14 |
+ cli |
|
| 0 | 15 |
\ No newline at end of file |
| 1 | 16 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,112 @@ |
| 0 |
+:title: Containers |
|
| 1 |
+:description: What are standard containers? |
|
| 2 |
+:keywords: containers, lxc, concepts, explanation |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+Standard Containers |
|
| 7 |
+=================== |
|
| 8 |
+ |
|
| 9 |
+ |
|
| 10 |
+What is a Standard Container? |
|
| 11 |
+----------------------------- |
|
| 12 |
+ |
|
| 13 |
+Docker defines a unit of software delivery called a Standard Container. The goal of a Standard Container is to encapsulate a software component and all its dependencies in |
|
| 14 |
+a format that is self-describing and portable, so that any compliant runtime can run it without extra dependency, regardless of the underlying machine and the contents of the container. |
|
| 15 |
+ |
|
| 16 |
+The spec for Standard Containers is currently work in progress, but it is very straightforward. It mostly defines 1) an image format, 2) a set of standard operations, and 3) an execution environment. |
|
| 17 |
+ |
|
| 18 |
+A great analogy for this is the shipping container. Just like Standard Containers are a fundamental unit of software delivery, shipping containers (http://bricks.argz.com/ins/7823-1/12) are a fundamental unit of physical delivery. |
|
| 19 |
+ |
|
| 20 |
+Standard operations |
|
| 21 |
+----------------------- |
|
| 22 |
+ |
|
| 23 |
+Just like shipping containers, Standard Containers define a set of STANDARD OPERATIONS. Shipping containers can be lifted, stacked, locked, loaded, unloaded and labelled. Similarly, standard containers can be started, stopped, copied, snapshotted, downloaded, uploaded and tagged. |
|
| 24 |
+ |
|
| 25 |
+ |
|
| 26 |
+Content-agnostic |
|
| 27 |
+--------------------- |
|
| 28 |
+ |
|
| 29 |
+Just like shipping containers, Standard Containers are CONTENT-AGNOSTIC: all standard operations have the same effect regardless of the contents. A shipping container will be stacked in exactly the same way whether it contains Vietnamese powder coffee or spare Maserati parts. Similarly, Standard Containers are started or uploaded in the same way whether they contain a postgres database, a php application with its dependencies and application server, or Java build artifacts. |
|
| 30 |
+ |
|
| 31 |
+ |
|
| 32 |
+Infrastructure-agnostic |
|
| 33 |
+-------------------------- |
|
| 34 |
+ |
|
| 35 |
+Both types of containers are INFRASTRUCTURE-AGNOSTIC: they can be transported to thousands of facilities around the world, and manipulated by a wide variety of equipment. A shipping container can be packed in a factory in Ukraine, transported by truck to the nearest routing center, stacked onto a train, loaded into a German boat by an Australian-built crane, stored in a warehouse at a US facility, etc. Similarly, a standard container can be bundled on my laptop, uploaded to S3, downloaded, run and snapshotted by a build server at Equinix in Virginia, uploaded to 10 staging servers in a home-made Openstack cluster, then sent to 30 production instances across 3 EC2 regions. |
|
| 36 |
+ |
|
| 37 |
+ |
|
| 38 |
+Designed for automation |
|
| 39 |
+-------------------------- |
|
| 40 |
+ |
|
| 41 |
+Because they offer the same standard operations regardless of content and infrastructure, Standard Containers, just like their physical counterpart, are extremely well-suited for automation. In fact, you could say automation is their secret weapon. |
|
| 42 |
+ |
|
| 43 |
+Many things that once required time-consuming and error-prone human effort can now be programmed. Before shipping containers, a bag of powder coffee was hauled, dragged, dropped, rolled and stacked by 10 different people in 10 different locations by the time it reached its destination. 1 out of 50 disappeared. 1 out of 20 was damaged. The process was slow, inefficient and cost a fortune - and was entirely different depending on the facility and the type of goods. |
|
| 44 |
+ |
|
| 45 |
+Similarly, before Standard Containers, by the time a software component ran in production, it had been individually built, configured, bundled, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers. Builds failed, libraries conflicted, mirrors crashed, post-it notes were lost, logs were misplaced, cluster updates were half-broken. The process was slow, inefficient and cost a fortune - and was entirely different depending on the language and infrastructure provider. |
|
| 46 |
+ |
|
| 47 |
+ |
|
| 48 |
+Industrial-grade delivery |
|
| 49 |
+---------------------------- |
|
| 50 |
+ |
|
| 51 |
+There are 17 million shipping containers in existence, packed with every physical good imaginable. Every single one of them can be loaded on the same boats, by the same cranes, in the same facilities, and sent anywhere in the World with incredible efficiency. It is embarrassing to think that a 30 ton shipment of coffee can safely travel half-way across the World in *less time* than it takes a software team to deliver its code from one datacenter to another sitting 10 miles away. |
|
| 52 |
+ |
|
| 53 |
+With Standard Containers we can put an end to that embarrassment, by making INDUSTRIAL-GRADE DELIVERY of software a reality. |
|
| 54 |
+ |
|
| 55 |
+ |
|
| 56 |
+Standard Container Specification |
|
| 57 |
+-------------------------------- |
|
| 58 |
+ |
|
| 59 |
+(TODO) |
|
| 60 |
+ |
|
| 61 |
+Image format |
|
| 62 |
+~~~~~~~~~~~~ |
|
| 63 |
+ |
|
| 64 |
+Standard operations |
|
| 65 |
+~~~~~~~~~~~~~~~~~~~ |
|
| 66 |
+ |
|
| 67 |
+- Copy |
|
| 68 |
+- Run |
|
| 69 |
+- Stop |
|
| 70 |
+- Wait |
|
| 71 |
+- Commit |
|
| 72 |
+- Attach standard streams |
|
| 73 |
+- List filesystem changes |
|
| 74 |
+- ... |
|
| 75 |
+ |
|
| 76 |
+Execution environment |
|
| 77 |
+~~~~~~~~~~~~~~~~~~~~~ |
|
| 78 |
+ |
|
| 79 |
+Root filesystem |
|
| 80 |
+^^^^^^^^^^^^^^^ |
|
| 81 |
+ |
|
| 82 |
+Environment variables |
|
| 83 |
+^^^^^^^^^^^^^^^^^^^^^ |
|
| 84 |
+ |
|
| 85 |
+Process arguments |
|
| 86 |
+^^^^^^^^^^^^^^^^^ |
|
| 87 |
+ |
|
| 88 |
+Networking |
|
| 89 |
+^^^^^^^^^^ |
|
| 90 |
+ |
|
| 91 |
+Process namespacing |
|
| 92 |
+^^^^^^^^^^^^^^^^^^^ |
|
| 93 |
+ |
|
| 94 |
+Resource limits |
|
| 95 |
+^^^^^^^^^^^^^^^ |
|
| 96 |
+ |
|
| 97 |
+Process monitoring |
|
| 98 |
+^^^^^^^^^^^^^^^^^^ |
|
| 99 |
+ |
|
| 100 |
+Logging |
|
| 101 |
+^^^^^^^ |
|
| 102 |
+ |
|
| 103 |
+Signals |
|
| 104 |
+^^^^^^^ |
|
| 105 |
+ |
|
| 106 |
+Pseudo-terminal allocation |
|
| 107 |
+^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
| 108 |
+ |
|
| 109 |
+Security |
|
| 110 |
+^^^^^^^^ |
|
| 111 |
+ |
| 0 | 16 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,58 @@ |
| 0 |
+Contributing to Docker |
|
| 1 |
+====================== |
|
| 2 |
+ |
|
| 3 |
+Want to hack on Docker? Awesome! There are instructions to get you |
|
| 4 |
+started on the website: http://docker.io/gettingstarted.html |
|
| 5 |
+ |
|
| 6 |
+They are probably not perfect, please let us know if anything feels |
|
| 7 |
+wrong or incomplete. |
|
| 8 |
+ |
|
| 9 |
+Contribution guidelines |
|
| 10 |
+----------------------- |
|
| 11 |
+ |
|
| 12 |
+Pull requests are always welcome |
|
| 13 |
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
| 14 |
+ |
|
| 15 |
+We are always thrilled to receive pull requests, and do our best to |
|
| 16 |
+process them as fast as possible. Not sure if that typo is worth a pull |
|
| 17 |
+request? Do it! We will appreciate it. |
|
| 18 |
+ |
|
| 19 |
+If your pull request is not accepted on the first try, don't be |
|
| 20 |
+discouraged! If there's a problem with the implementation, hopefully you |
|
| 21 |
+received feedback on what to improve. |
|
| 22 |
+ |
|
| 23 |
+We're trying very hard to keep Docker lean and focused. We don't want it |
|
| 24 |
+to do everything for everybody. This means that we might decide against |
|
| 25 |
+incorporating a new feature. However, there might be a way to implement |
|
| 26 |
+that feature *on top of* docker. |
|
| 27 |
+ |
|
| 28 |
+Discuss your design on the mailing list |
|
| 29 |
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
| 30 |
+ |
|
| 31 |
+We recommend discussing your plans `on the mailing |
|
| 32 |
+list <https://groups.google.com/forum/?fromgroups#!forum/docker-club>`__ |
|
| 33 |
+before starting to code - especially for more ambitious contributions. |
|
| 34 |
+This gives other contributors a chance to point you in the right |
|
| 35 |
+direction, give feedback on your design, and maybe point out if someone |
|
| 36 |
+else is working on the same thing. |
|
| 37 |
+ |
|
| 38 |
+Create issues... |
|
| 39 |
+~~~~~~~~~~~~~~~~ |
|
| 40 |
+ |
|
| 41 |
+Any significant improvement should be documented as `a github |
|
| 42 |
+issue <https://github.com/dotcloud/docker/issues>`__ before anybody |
|
| 43 |
+starts working on it. |
|
| 44 |
+ |
|
| 45 |
+...but check for existing issues first! |
|
| 46 |
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
| 47 |
+ |
|
| 48 |
+Please take a moment to check that an issue doesn't already exist |
|
| 49 |
+documenting your bug report or improvement proposal. If it does, it |
|
| 50 |
+never hurts to add a quick "+1" or "I have this problem too". This will |
|
| 51 |
+help prioritize the most common problems and requests. |
|
| 52 |
+ |
|
| 53 |
+Write tests |
|
| 54 |
+~~~~~~~~~~~ |
|
| 55 |
+ |
|
| 56 |
+Golang has a great testing suite built in: use it! Take a look at |
|
| 57 |
+existing tests for inspiration. |
| 0 | 58 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,31 @@ |
| 0 |
+:title: Setting up a dev environment |
|
| 1 |
+:description: Guides on how to contribute to docker |
|
| 2 |
+:keywords: Docker, documentation, developers, contributing, dev environment |
|
| 3 |
+ |
|
| 4 |
+Setting up a dev environment |
|
| 5 |
+============================ |
|
| 6 |
+ |
|
| 7 |
+Instructions that have been verified to work on Ubuntu 12.10, |
|
| 8 |
+ |
|
| 9 |
+.. code:: bash |
|
| 10 |
+ |
|
| 11 |
+ sudo apt-get -y install lxc wget bsdtar curl golang git |
|
| 12 |
+ |
|
| 13 |
+ export GOPATH=~/go/ |
|
| 14 |
+ export PATH=$GOPATH/bin:$PATH |
|
| 15 |
+ |
|
| 16 |
+ mkdir -p $GOPATH/src/github.com/dotcloud |
|
| 17 |
+ cd $GOPATH/src/github.com/dotcloud |
|
| 18 |
+ git clone git@github.com:dotcloud/docker.git |
|
| 19 |
+ cd docker |
|
| 20 |
+ |
|
| 21 |
+ go get -v github.com/dotcloud/docker/... |
|
| 22 |
+ go install -v github.com/dotcloud/docker/... |
|
| 23 |
+ |
|
| 24 |
+Then run the docker daemon, |
|
| 25 |
+ |
|
| 26 |
+.. code:: bash |
|
| 27 |
+ |
|
| 28 |
+ sudo $GOPATH/bin/docker -d |
|
| 29 |
+ |
|
| 30 |
+Run the ``go install`` command (above) to recompile docker. |
| 0 | 31 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,14 @@ |
| 0 |
+:title: Contributing to Docker |
|
| 1 |
+:description: Guides on how to contribute to docker |
|
| 2 |
+:keywords: Docker, documentation, developers, contributing, dev environment |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+Contributing |
|
| 7 |
+============ |
|
| 8 |
+ |
|
| 9 |
+.. toctree:: |
|
| 10 |
+ :maxdepth: 1 |
|
| 11 |
+ |
|
| 12 |
+ contributing |
|
| 13 |
+ devenvironment |
| 0 | 14 |
deleted file mode 100644 |
| ... | ... |
@@ -1,67 +0,0 @@ |
| 1 |
-:title: Base commands |
|
| 2 |
-:description: Common usage and commands |
|
| 3 |
-:keywords: Examples, Usage |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
-Base commands |
|
| 7 |
-============= |
|
| 8 |
- |
|
| 9 |
- |
|
| 10 |
-Running an interactive shell |
|
| 11 |
- |
|
| 12 |
-.. code-block:: bash |
|
| 13 |
- |
|
| 14 |
- # Download a base image |
|
| 15 |
- docker pull base |
|
| 16 |
- |
|
| 17 |
- # Run an interactive shell in the base image, |
|
| 18 |
- # allocate a tty, attach stdin and stdout |
|
| 19 |
- docker run -i -t base /bin/bash |
|
| 20 |
- |
|
| 21 |
- |
|
| 22 |
-Starting a long-running worker process |
|
| 23 |
- |
|
| 24 |
-.. code-block:: bash |
|
| 25 |
- |
|
| 26 |
- # Run docker in daemon mode |
|
| 27 |
- (sudo docker -d || echo "Docker daemon already running") & |
|
| 28 |
- |
|
| 29 |
- # Start a very useful long-running process |
|
| 30 |
- JOB=$(docker run -d base /bin/sh -c "while true; do echo Hello world; sleep 1; done") |
|
| 31 |
- |
|
| 32 |
- # Collect the output of the job so far |
|
| 33 |
- docker logs $JOB |
|
| 34 |
- |
|
| 35 |
- # Kill the job |
|
| 36 |
- docker kill $JOB |
|
| 37 |
- |
|
| 38 |
- |
|
| 39 |
-Listing all running containers |
|
| 40 |
- |
|
| 41 |
-.. code-block:: bash |
|
| 42 |
- |
|
| 43 |
- docker ps |
|
| 44 |
- |
|
| 45 |
-Expose a service on a TCP port |
|
| 46 |
- |
|
| 47 |
-.. code-block:: bash |
|
| 48 |
- |
|
| 49 |
- # Expose port 4444 of this container, and tell netcat to listen on it |
|
| 50 |
- JOB=$(docker run -d -p 4444 base /bin/nc -l -p 4444) |
|
| 51 |
- |
|
| 52 |
- # Which public port is NATed to my container? |
|
| 53 |
- PORT=$(docker port $JOB 4444) |
|
| 54 |
- |
|
| 55 |
- # Connect to the public port via the host's public address |
|
| 56 |
- echo hello world | nc $(hostname) $PORT |
|
| 57 |
- |
|
| 58 |
- # Verify that the network connection worked |
|
| 59 |
- echo "Daemon received: $(docker logs $JOB)" |
|
| 60 |
- |
|
| 61 |
-Continue to the complete `Command Line Interface`_ |
|
| 62 |
- |
|
| 63 |
-.. _Command Line Interface: ../commandline/cli.html |
| 64 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,320 +0,0 @@ |
| 1 |
-:title: Command Line Interface |
|
| 2 |
-:description: Docker's CLI command description and usage |
|
| 3 |
-:keywords: Docker, Docker documentation, CLI, command line |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
-Command Line Interface |
|
| 7 |
-====================== |
|
| 8 |
- |
|
| 9 |
-Docker Usage |
|
| 10 |
-~~~~~~~~~~~~ |
|
| 11 |
- |
|
| 12 |
-:: |
|
| 13 |
- |
|
| 14 |
- $ docker |
|
| 15 |
- Usage: docker COMMAND [arg...] |
|
| 16 |
- |
|
| 17 |
- A self-sufficient runtime for linux containers. |
|
| 18 |
- |
|
| 19 |
- Commands: |
|
| 20 |
- attach Attach to a running container |
|
| 21 |
- commit Create a new image from a container's changes |
|
| 22 |
- diff Inspect changes on a container's filesystem |
|
| 23 |
- export Stream the contents of a container as a tar archive |
|
| 24 |
- history Show the history of an image |
|
| 25 |
- images List images |
|
| 26 |
- import Create a new filesystem image from the contents of a tarball |
|
| 27 |
- info Display system-wide information |
|
| 28 |
- inspect Return low-level information on a container |
|
| 29 |
- kill Kill a running container |
|
| 30 |
- login Register or Login to the docker registry server |
|
| 31 |
- logs Fetch the logs of a container |
|
| 32 |
- port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT |
|
| 33 |
- ps List containers |
|
| 34 |
- pull Pull an image or a repository to the docker registry server |
|
| 35 |
- push Push an image or a repository to the docker registry server |
|
| 36 |
- restart Restart a running container |
|
| 37 |
- rm Remove a container |
|
| 38 |
- rmi Remove an image |
|
| 39 |
- run Run a command in a new container |
|
| 40 |
- start Start a stopped container |
|
| 41 |
- stop Stop a running container |
|
| 42 |
- tag Tag an image into a repository |
|
| 43 |
- version Show the docker version information |
|
| 44 |
- wait Block until a container stops, then print its exit code |
|
| 45 |
- |
|
| 46 |
- |
|
| 47 |
-attach |
|
| 48 |
-~~~~~~ |
|
| 49 |
- |
|
| 50 |
-:: |
|
| 51 |
- |
|
| 52 |
- Usage: docker attach [OPTIONS] |
|
| 53 |
- |
|
| 54 |
- Attach to a running container |
|
| 55 |
- |
|
| 56 |
- -e=true: Attach to stderr |
|
| 57 |
- -i=false: Attach to stdin |
|
| 58 |
- -o=true: Attach to stdout |
|
| 59 |
- |
|
| 60 |
- |
|
| 61 |
-commit |
|
| 62 |
-~~~~~~ |
|
| 63 |
- |
|
| 64 |
-:: |
|
| 65 |
- |
|
| 66 |
- Usage: docker commit [OPTIONS] CONTAINER [DEST] |
|
| 67 |
- |
|
| 68 |
- Create a new image from a container's changes |
|
| 69 |
- |
|
| 70 |
- -m="": Commit message |
|
| 71 |
- |
|
| 72 |
- |
|
| 73 |
-diff |
|
| 74 |
-~~~~ |
|
| 75 |
- |
|
| 76 |
-:: |
|
| 77 |
- |
|
| 78 |
- Usage: docker diff CONTAINER [OPTIONS] |
|
| 79 |
- |
|
| 80 |
- Inspect changes on a container's filesystem |
|
| 81 |
- |
|
| 82 |
- |
|
| 83 |
-export |
|
| 84 |
-~~~~~~ |
|
| 85 |
- |
|
| 86 |
-:: |
|
| 87 |
- |
|
| 88 |
- Usage: docker export CONTAINER |
|
| 89 |
- |
|
| 90 |
- Export the contents of a filesystem as a tar archive |
|
| 91 |
- |
|
| 92 |
- |
|
| 93 |
-history |
|
| 94 |
-~~~~~~~ |
|
| 95 |
- |
|
| 96 |
-:: |
|
| 97 |
- |
|
| 98 |
- Usage: docker history [OPTIONS] IMAGE |
|
| 99 |
- |
|
| 100 |
- Show the history of an image |
|
| 101 |
- |
|
| 102 |
- |
|
| 103 |
-images |
|
| 104 |
-~~~~~~ |
|
| 105 |
- |
|
| 106 |
-:: |
|
| 107 |
- |
|
| 108 |
- Usage: docker images [OPTIONS] [NAME] |
|
| 109 |
- |
|
| 110 |
- List images |
|
| 111 |
- |
|
| 112 |
- -a=false: show all images |
|
| 113 |
- -q=false: only show numeric IDs |
|
| 114 |
- |
|
| 115 |
- |
|
| 116 |
-import |
|
| 117 |
-~~~~~~ |
|
| 118 |
- |
|
| 119 |
-:: |
|
| 120 |
- |
|
| 121 |
-Usage: docker import [OPTIONS] URL|- [REPOSITORY [TAG]] |
|
| 122 |
- |
|
| 123 |
-Create a new filesystem image from the contents of a tarball |
|
| 124 |
- |
|
| 125 |
- |
|
| 126 |
-info |
|
| 127 |
-~~~~ |
|
| 128 |
- |
|
| 129 |
-:: |
|
| 130 |
- |
|
| 131 |
- Usage: docker info |
|
| 132 |
- |
|
| 133 |
- Display system-wide information. |
|
| 134 |
- |
|
| 135 |
- |
|
| 136 |
-inspect |
|
| 137 |
-~~~~~~~ |
|
| 138 |
- |
|
| 139 |
-:: |
|
| 140 |
- |
|
| 141 |
- Usage: docker inspect [OPTIONS] CONTAINER |
|
| 142 |
- |
|
| 143 |
- Return low-level information on a container |
|
| 144 |
- |
|
| 145 |
- |
|
| 146 |
-kill |
|
| 147 |
-~~~~ |
|
| 148 |
- |
|
| 149 |
-:: |
|
| 150 |
- |
|
| 151 |
- Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...] |
|
| 152 |
- |
|
| 153 |
- Kill a running container |
|
| 154 |
- |
|
| 155 |
- |
|
| 156 |
-login |
|
| 157 |
-~~~~~ |
|
| 158 |
- |
|
| 159 |
-:: |
|
| 160 |
- |
|
| 161 |
- Usage: docker login |
|
| 162 |
- |
|
| 163 |
- Register or Login to the docker registry server |
|
| 164 |
- |
|
| 165 |
- |
|
| 166 |
-logs |
|
| 167 |
-~~~~ |
|
| 168 |
- |
|
| 169 |
-:: |
|
| 170 |
- |
|
| 171 |
- Usage: docker logs [OPTIONS] CONTAINER |
|
| 172 |
- |
|
| 173 |
- Fetch the logs of a container |
|
| 174 |
- |
|
| 175 |
- |
|
| 176 |
-port |
|
| 177 |
-~~~~ |
|
| 178 |
- |
|
| 179 |
-:: |
|
| 180 |
- |
|
| 181 |
- Usage: docker port [OPTIONS] CONTAINER PRIVATE_PORT |
|
| 182 |
- |
|
| 183 |
- Lookup the public-facing port which is NAT-ed to PRIVATE_PORT |
|
| 184 |
- |
|
| 185 |
- |
|
| 186 |
-ps |
|
| 187 |
-~~ |
|
| 188 |
- |
|
| 189 |
-:: |
|
| 190 |
- |
|
| 191 |
- Usage: docker ps [OPTIONS] |
|
| 192 |
- |
|
| 193 |
- List containers |
|
| 194 |
- |
|
| 195 |
- -a=false: Show all containers. Only running containers are shown by default. |
|
| 196 |
- -notrunc=false: Don't truncate output |
|
| 197 |
- -q=false: Only display numeric IDs |
|
| 198 |
- |
|
| 199 |
- |
|
| 200 |
-pull |
|
| 201 |
-~~~~ |
|
| 202 |
- |
|
| 203 |
-:: |
|
| 204 |
- |
|
| 205 |
- Usage: docker pull NAME |
|
| 206 |
- |
|
| 207 |
- Pull an image or a repository from the registry |
|
| 208 |
- |
|
| 209 |
-push |
|
| 210 |
-~~~~ |
|
| 211 |
- |
|
| 212 |
-:: |
|
| 213 |
- |
|
| 214 |
- Usage: docker push NAME |
|
| 215 |
- |
|
| 216 |
- Push an image or a repository to the registry |
|
| 217 |
- |
|
| 218 |
- |
|
| 219 |
-restart |
|
| 220 |
-~~~~~~~ |
|
| 221 |
- |
|
| 222 |
-:: |
|
| 223 |
- |
|
| 224 |
- Usage: docker restart [OPTIONS] NAME |
|
| 225 |
- |
|
| 226 |
- Restart a running container |
|
| 227 |
- |
|
| 228 |
- |
|
| 229 |
-rm |
|
| 230 |
-~~ |
|
| 231 |
- |
|
| 232 |
-:: |
|
| 233 |
- |
|
| 234 |
- Usage: docker rm [OPTIONS] CONTAINER |
|
| 235 |
- |
|
| 236 |
- Remove a container |
|
| 237 |
- |
|
| 238 |
- |
|
| 239 |
-rmi |
|
| 240 |
-~~~ |
|
| 241 |
- |
|
| 242 |
-:: |
|
| 243 |
- |
|
| 244 |
- Usage: docker rmi [OPTIONS] IMAGE |
|
| 245 |
- |
|
| 246 |
- Remove an image |
|
| 247 |
- |
|
| 248 |
- -a=false: Use IMAGE as a path and remove ALL images in this path |
|
| 249 |
- -r=false: Use IMAGE as a regular expression instead of an exact name |
|
| 250 |
- |
|
| 251 |
- |
|
| 252 |
-run |
|
| 253 |
-~~~ |
|
| 254 |
- |
|
| 255 |
-:: |
|
| 256 |
- |
|
| 257 |
- Usage: docker run [OPTIONS] IMAGE COMMAND [ARG...] |
|
| 258 |
- |
|
| 259 |
- Run a command in a new container |
|
| 260 |
- |
|
| 261 |
- -a=false: Attach stdin and stdout |
|
| 262 |
- -c="": Comment |
|
| 263 |
- -i=false: Keep stdin open even if not attached |
|
| 264 |
- -m=0: Memory limit (in bytes) |
|
| 265 |
- -p=[]: Map a network port to the container |
|
| 266 |
- -t=false: Allocate a pseudo-tty |
|
| 267 |
- -u="": Username or UID |
|
| 268 |
- |
|
| 269 |
- |
|
| 270 |
-start |
|
| 271 |
-~~~~~ |
|
| 272 |
- |
|
| 273 |
-:: |
|
| 274 |
- |
|
| 275 |
- Usage: docker start [OPTIONS] NAME |
|
| 276 |
- |
|
| 277 |
- Start a stopped container |
|
| 278 |
- |
|
| 279 |
- |
|
| 280 |
-stop |
|
| 281 |
-~~~~ |
|
| 282 |
- |
|
| 283 |
-:: |
|
| 284 |
- |
|
| 285 |
- Usage: docker stop [OPTIONS] NAME |
|
| 286 |
- |
|
| 287 |
- Stop a running container |
|
| 288 |
- |
|
| 289 |
- |
|
| 290 |
-tag |
|
| 291 |
-~~~ |
|
| 292 |
- |
|
| 293 |
-:: |
|
| 294 |
- |
|
| 295 |
- Usage: docker tag [OPTIONS] IMAGE REPOSITORY [TAG] |
|
| 296 |
- |
|
| 297 |
- Tag an image into a repository |
|
| 298 |
- |
|
| 299 |
- -f=false: Force |
|
| 300 |
- |
|
| 301 |
- |
|
| 302 |
-version |
|
| 303 |
-~~~~~~~ |
|
| 304 |
- |
|
| 305 |
-:: |
|
| 306 |
- |
|
| 307 |
- Usage: docker version |
|
| 308 |
- |
|
| 309 |
- Show the docker version information |
|
| 310 |
- |
|
| 311 |
- |
|
| 312 |
-wait |
|
| 313 |
-~~~~ |
|
| 314 |
- |
|
| 315 |
-:: |
|
| 316 |
- |
|
| 317 |
- Usage: docker wait [OPTIONS] NAME |
|
| 318 |
- |
|
| 319 |
- Block until a container stops, then print its exit code. |
|
| 320 |
- |
| 321 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,15 +0,0 @@ |
| 1 |
-:title: docker documentation |
|
| 2 |
-:description: -- todo: change me |
|
| 3 |
-:keywords: todo: change me |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
-Commands |
|
| 7 |
-======== |
|
| 8 |
- |
|
| 9 |
-Contents: |
|
| 10 |
- |
|
| 11 |
-.. toctree:: |
|
| 12 |
- :maxdepth: 2 |
|
| 13 |
- |
|
| 14 |
- basecommands |
|
| 15 |
- cli |
|
| 16 | 1 |
\ No newline at end of file |
| 17 | 2 |
deleted file mode 100644 |
| ... | ... |
@@ -1,112 +0,0 @@ |
| 1 |
-:title: Containers |
|
| 2 |
-:description: What are standard containers? |
|
| 3 |
-:keywords: containers, lxc, concepts, explanation |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
- |
|
| 7 |
-Standard Containers |
|
| 8 |
-=================== |
|
| 9 |
- |
|
| 10 |
- |
|
| 11 |
-What is a Standard Container? |
|
| 12 |
- |
|
| 13 |
-Docker defines a unit of software delivery called a Standard Container. The goal of a Standard Container is to encapsulate a software component and all its dependencies in |
|
| 14 |
-a format that is self-describing and portable, so that any compliant runtime can run it without extra dependency, regardless of the underlying machine and the contents of the container. |
|
| 15 |
- |
|
| 16 |
-The spec for Standard Containers is currently work in progress, but it is very straightforward. It mostly defines 1) an image format, 2) a set of standard operations, and 3) an execution environment. |
|
| 17 |
- |
|
| 18 |
-A great analogy for this is the shipping container. Just like Standard Containers are a fundamental unit of software delivery, shipping containers (http://bricks.argz.com/ins/7823-1/12) are a fundamental unit of physical delivery. |
|
| 19 |
- |
|
| 20 |
-Standard operations |
|
| 21 |
- |
|
| 22 |
-Just like shipping containers, Standard Containers define a set of STANDARD OPERATIONS. Shipping containers can be lifted, stacked, locked, loaded, unloaded and labelled. Similarly, standard containers can be started, stopped, copied, snapshotted, downloaded, uploaded and tagged. |
|
| 23 |
- |
|
| 24 |
- |
|
| 25 |
-Content-agnostic |
|
| 26 |
- |
|
| 27 |
-Just like shipping containers, Standard Containers are CONTENT-AGNOSTIC: all standard operations have the same effect regardless of the contents. A shipping container will be stacked in exactly the same way whether it contains Vietnamese powder coffee or spare Maserati parts. Similarly, Standard Containers are started or uploaded in the same way whether they contain a postgres database, a php application with its dependencies and application server, or Java build artifacts. |
|
| 28 |
- |
|
| 29 |
- |
|
| 30 |
-Infrastructure-agnostic |
|
| 31 |
- |
|
| 32 |
-Both types of containers are INFRASTRUCTURE-AGNOSTIC: they can be transported to thousands of facilities around the world, and manipulated by a wide variety of equipment. A shipping container can be packed in a factory in Ukraine, transported by truck to the nearest routing center, stacked onto a train, loaded into a German boat by an Australian-built crane, stored in a warehouse at a US facility, etc. Similarly, a standard container can be bundled on my laptop, uploaded to S3, downloaded, run and snapshotted by a build server at Equinix in Virginia, uploaded to 10 staging servers in a home-made Openstack cluster, then sent to 30 production instances across 3 EC2 regions. |
|
| 33 |
- |
|
| 34 |
- |
|
| 35 |
-Designed for automation |
|
| 36 |
- |
|
| 37 |
-Because they offer the same standard operations regardless of content and infrastructure, Standard Containers, just like their physical counterpart, are extremely well-suited for automation. In fact, you could say automation is their secret weapon. |
|
| 38 |
- |
|
| 39 |
-Many things that once required time-consuming and error-prone human effort can now be programmed. Before shipping containers, a bag of powder coffee was hauled, dragged, dropped, rolled and stacked by 10 different people in 10 different locations by the time it reached its destination. 1 out of 50 disappeared. 1 out of 20 was damaged. The process was slow, inefficient and cost a fortune - and was entirely different depending on the facility and the type of goods. |
|
| 40 |
- |
|
| 41 |
-Similarly, before Standard Containers, by the time a software component ran in production, it had been individually built, configured, bundled, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers. Builds failed, libraries conflicted, mirrors crashed, post-it notes were lost, logs were misplaced, cluster updates were half-broken. The process was slow, inefficient and cost a fortune - and was entirely different depending on the language and infrastructure provider. |
|
| 42 |
- |
|
| 43 |
- |
|
| 44 |
-Industrial-grade delivery |
|
| 45 |
- |
|
| 46 |
-There are 17 million shipping containers in existence, packed with every physical good imaginable. Every single one of them can be loaded on the same boats, by the same cranes, in the same facilities, and sent anywhere in the World with incredible efficiency. It is embarrassing to think that a 30 ton shipment of coffee can safely travel half-way across the World in *less time* than it takes a software team to deliver its code from one datacenter to another sitting 10 miles away. |
|
| 47 |
- |
|
| 48 |
-With Standard Containers we can put an end to that embarrassment, by making INDUSTRIAL-GRADE DELIVERY of software a reality. |
|
| 49 |
- |
|
| 50 |
- |
|
| 51 |
-Standard Container Specification |
|
| 52 |
- |
|
| 53 |
-(TODO) |
|
| 54 |
- |
|
| 55 |
-Image format |
|
| 56 |
-~~~~~~~~~~~~ |
|
| 57 |
- |
|
| 58 |
-Standard operations |
|
| 59 |
-~~~~~~~~~~~~~~~~~~~ |
|
| 60 |
- |
|
| 61 |
-- Copy |
|
| 62 |
-- Run |
|
| 63 |
-- Stop |
|
| 64 |
-- Wait |
|
| 65 |
-- Commit |
|
| 66 |
-- Attach standard streams |
|
| 67 |
-- List filesystem changes |
|
| 68 |
-- ... |
|
| 69 |
- |
|
| 70 |
-Execution environment |
|
| 71 |
-~~~~~~~~~~~~~~~~~~~~~ |
|
| 72 |
- |
|
| 73 |
-Root filesystem |
|
| 74 |
-^^^^^^^^^^^^^^^ |
|
| 75 |
- |
|
| 76 |
-Environment variables |
|
| 77 |
-^^^^^^^^^^^^^^^^^^^^^ |
|
| 78 |
- |
|
| 79 |
-Process arguments |
|
| 80 |
-^^^^^^^^^^^^^^^^^ |
|
| 81 |
- |
|
| 82 |
-Networking |
|
| 83 |
-^^^^^^^^^^ |
|
| 84 |
- |
|
| 85 |
-Process namespacing |
|
| 86 |
-^^^^^^^^^^^^^^^^^^^ |
|
| 87 |
- |
|
| 88 |
-Resource limits |
|
| 89 |
-^^^^^^^^^^^^^^^ |
|
| 90 |
- |
|
| 91 |
-Process monitoring |
|
| 92 |
-^^^^^^^^^^^^^^^^^^ |
|
| 93 |
- |
|
| 94 |
-Logging |
|
| 95 |
-^^^^^^^ |
|
| 96 |
- |
|
| 97 |
-Signals |
|
| 98 |
-^^^^^^^ |
|
| 99 |
- |
|
| 100 |
-Pseudo-terminal allocation |
|
| 101 |
-^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
| 102 |
- |
|
| 103 |
-Security |
|
| 104 |
-^^^^^^^^ |
|
| 105 |
- |
| 17 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,58 +0,0 @@ |
| 1 |
-Contributing to Docker |
|
| 2 |
-====================== |
|
| 3 |
- |
|
| 4 |
-Want to hack on Docker? Awesome! There are instructions to get you |
|
| 5 |
-started on the website: http://docker.io/gettingstarted.html |
|
| 6 |
- |
|
| 7 |
-They are probably not perfect, please let us know if anything feels |
|
| 8 |
-wrong or incomplete. |
|
| 9 |
- |
|
| 10 |
-Contribution guidelines |
|
| 11 |
- |
|
| 12 |
-Pull requests are always welcome |
|
| 13 |
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
| 14 |
- |
|
| 15 |
-We are always thrilled to receive pull requests, and do our best to |
|
| 16 |
-process them as fast as possible. Not sure if that typo is worth a pull |
|
| 17 |
-request? Do it! We will appreciate it. |
|
| 18 |
- |
|
| 19 |
-If your pull request is not accepted on the first try, don't be |
|
| 20 |
-discouraged! If there's a problem with the implementation, hopefully you |
|
| 21 |
-received feedback on what to improve. |
|
| 22 |
- |
|
| 23 |
-We're trying very hard to keep Docker lean and focused. We don't want it |
|
| 24 |
-to do everything for everybody. This means that we might decide against |
|
| 25 |
-incorporating a new feature. However, there might be a way to implement |
|
| 26 |
-that feature *on top of* docker. |
|
| 27 |
- |
|
| 28 |
-Discuss your design on the mailing list |
|
| 29 |
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
| 30 |
- |
|
| 31 |
-We recommend discussing your plans `on the mailing |
|
| 32 |
-list <https://groups.google.com/forum/?fromgroups#!forum/docker-club>`__ |
|
| 33 |
-before starting to code - especially for more ambitious contributions. |
|
| 34 |
-This gives other contributors a chance to point you in the right |
|
| 35 |
-direction, give feedback on your design, and maybe point out if someone |
|
| 36 |
-else is working on the same thing. |
|
| 37 |
- |
|
| 38 |
-Create issues... |
|
| 39 |
-~~~~~~~~~~~~~~~~ |
|
| 40 |
- |
|
| 41 |
-Any significant improvement should be documented as `a github |
|
| 42 |
-issue <https://github.com/dotcloud/docker/issues>`__ before anybody |
|
| 43 |
-starts working on it. |
|
| 44 |
- |
|
| 45 |
-...but check for existing issues first! |
|
| 46 |
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
| 47 |
- |
|
| 48 |
-Please take a moment to check that an issue doesn't already exist |
|
| 49 |
-documenting your bug report or improvement proposal. If it does, it |
|
| 50 |
-never hurts to add a quick "+1" or "I have this problem too". This will |
|
| 51 |
-help prioritize the most common problems and requests. |
|
| 52 |
- |
|
| 53 |
-Write tests |
|
| 54 |
-~~~~~~~~~~~ |
|
| 55 |
- |
|
| 56 |
-Golang has a great testing suite built in: use it! Take a look at |
|
| 57 |
-existing tests for inspiration. |
| 58 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,31 +0,0 @@ |
| 1 |
-:title: Setting up a dev environment |
|
| 2 |
-:description: Guides on how to contribute to docker |
|
| 3 |
-:keywords: Docker, documentation, developers, contributing, dev environment |
|
| 4 |
- |
|
| 5 |
-Setting up a dev environment |
|
| 6 |
-============================ |
|
| 7 |
- |
|
| 8 |
-Instructions that have been verified to work on Ubuntu 12.10, |
|
| 9 |
- |
|
| 10 |
-.. code:: bash |
|
| 11 |
- |
|
| 12 |
- sudo apt-get -y install lxc wget bsdtar curl golang git |
|
| 13 |
- |
|
| 14 |
- export GOPATH=~/go/ |
|
| 15 |
- export PATH=$GOPATH/bin:$PATH |
|
| 16 |
- |
|
| 17 |
- mkdir -p $GOPATH/src/github.com/dotcloud |
|
| 18 |
- cd $GOPATH/src/github.com/dotcloud |
|
| 19 |
- git clone git@github.com:dotcloud/docker.git |
|
| 20 |
- cd docker |
|
| 21 |
- |
|
| 22 |
- go get -v github.com/dotcloud/docker/... |
|
| 23 |
- go install -v github.com/dotcloud/docker/... |
|
| 24 |
- |
|
| 25 |
-Then run the docker daemon, |
|
| 26 |
- |
|
| 27 |
-.. code:: bash |
|
| 28 |
- |
|
| 29 |
- sudo $GOPATH/bin/docker -d |
|
| 30 |
- |
|
| 31 |
-Run the ``go install`` command (above) to recompile docker. |
| 32 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,14 +0,0 @@ |
| 1 |
-:title: Contributing to Docker |
|
| 2 |
-:description: Guides on how to contribute to docker |
|
| 3 |
-:keywords: Docker, documentation, developers, contributing, dev environment |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
- |
|
| 7 |
-Contributing |
|
| 8 |
-============ |
|
| 9 |
- |
|
| 10 |
-.. toctree:: |
|
| 11 |
- :maxdepth: 1 |
|
| 12 |
- |
|
| 13 |
- contributing |
|
| 14 |
- devenvironment |
| 15 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,34 +0,0 @@ |
| 1 |
-:title: Hello world example |
|
| 2 |
-:description: A simple hello world example with Docker |
|
| 3 |
-:keywords: docker, example, hello world |
|
| 4 |
- |
|
| 5 |
-.. _hello_world: |
|
| 6 |
- |
|
| 7 |
-Hello World |
|
| 8 |
-=========== |
|
| 9 |
-This is the most basic example available for using docker |
|
| 10 |
- |
|
| 11 |
-This example assumes you have Docker installed and it will download the busybox image and then use that image to run a simple echo command, that will echo hello world back to the console over standard out. |
|
| 12 |
- |
|
| 13 |
-.. code-block:: bash |
|
| 14 |
- |
|
| 15 |
- $ docker run busybox /bin/echo hello world |
|
| 16 |
- |
|
| 17 |
-**Explanation:** |
|
| 18 |
- |
|
| 19 |
-- **"docker run"** run a command in a new container |
|
| 20 |
-- **"busybox"** is the image we want to run the command inside of. |
|
| 21 |
-- **"/bin/echo"** is the command we want to run in the container |
|
| 22 |
-- **"hello world"** is the input for the echo command |
|
| 23 |
- |
|
| 24 |
-**Video:** |
|
| 25 |
- |
|
| 26 |
-See the example in action |
|
| 27 |
- |
|
| 28 |
-.. raw:: html |
|
| 29 |
- |
|
| 30 |
- <div style="margin-top:10px;"> |
|
| 31 |
- <iframe width="560" height="350" src="http://ascii.io/a/2561/raw" frameborder="0"></iframe> |
|
| 32 |
- </div> |
|
| 33 |
- |
|
| 34 |
-Continue to the :ref:`hello_world_daemon` example. |
|
| 35 | 1 |
\ No newline at end of file |
| 36 | 2 |
deleted file mode 100644 |
| ... | ... |
@@ -1,79 +0,0 @@ |
| 1 |
-:title: Hello world daemon example |
|
| 2 |
-:description: A simple hello world daemon example with Docker |
|
| 3 |
-:keywords: docker, example, hello world, daemon |
|
| 4 |
- |
|
| 5 |
-.. _hello_world_daemon: |
|
| 6 |
- |
|
| 7 |
-Hello World Daemon |
|
| 8 |
-================== |
|
| 9 |
-The most boring daemon ever written. |
|
| 10 |
- |
|
| 11 |
-This example assumes you have Docker installed and with the busybox image already imported. We will use the busybox image to run a simple hello world daemon that will just print hello world to standard out every second. It will continue to do this until we stop it. |
|
| 12 |
- |
|
| 13 |
-**Steps:** |
|
| 14 |
- |
|
| 15 |
-.. code-block:: bash |
|
| 16 |
- |
|
| 17 |
- $ CONTAINER_ID=$(docker run -d busybox /bin/sh -c "while true; do echo hello world; sleep 1; done") |
|
| 18 |
- |
|
| 19 |
-We are going to run a simple hello world daemon in a new container made from the busybox daemon. |
|
| 20 |
- |
|
| 21 |
-- **"docker run -d "** run a command in a new container. We pass "-d" so it runs as a daemon. |
|
| 22 |
-- **"busybox"** is the image we want to run the command inside of. |
|
| 23 |
-- **"/bin/sh -c"** is the command we want to run in the container |
|
| 24 |
-- **"while true; do echo hello world; sleep 1; done"** is the mini script we want to run, that will just print hello world once a second until we stop it. |
|
| 25 |
-- **$CONTAINER_ID** the output of the run command will return a container id, we can use in future commands to see what is going on with this process. |
|
| 26 |
- |
|
| 27 |
-.. code-block:: bash |
|
| 28 |
- |
|
| 29 |
- $ docker logs $CONTAINER_ID |
|
| 30 |
- |
|
| 31 |
-Check the logs make sure it is working correctly. |
|
| 32 |
- |
|
| 33 |
-- **"docker logs**" This will return the logs for a container |
|
| 34 |
-- **$CONTAINER_ID** The Id of the container we want the logs for. |
|
| 35 |
- |
|
| 36 |
-.. code-block:: bash |
|
| 37 |
- |
|
| 38 |
- $ docker attach $CONTAINER_ID |
|
| 39 |
- |
|
| 40 |
-Attach to the container to see the results in realtime. |
|
| 41 |
- |
|
| 42 |
-- **"docker attach**" This will allow us to attach to a background process to see what is going on. |
|
| 43 |
-- **$CONTAINER_ID** The Id of the container we want to attach too. |
|
| 44 |
- |
|
| 45 |
-.. code-block:: bash |
|
| 46 |
- |
|
| 47 |
- $ docker ps |
|
| 48 |
- |
|
| 49 |
-Check the process list to make sure it is running. |
|
| 50 |
- |
|
| 51 |
-- **"docker ps"** this shows all running process managed by docker |
|
| 52 |
- |
|
| 53 |
-.. code-block:: bash |
|
| 54 |
- |
|
| 55 |
- $ docker stop $CONTAINER_ID |
|
| 56 |
- |
|
| 57 |
-Stop the container, since we don't need it anymore. |
|
| 58 |
- |
|
| 59 |
-- **"docker stop"** This stops a container |
|
| 60 |
-- **$CONTAINER_ID** The Id of the container we want to stop. |
|
| 61 |
- |
|
| 62 |
-.. code-block:: bash |
|
| 63 |
- |
|
| 64 |
- $ docker ps |
|
| 65 |
- |
|
| 66 |
-Make sure it is really stopped. |
|
| 67 |
- |
|
| 68 |
- |
|
| 69 |
-**Video:** |
|
| 70 |
- |
|
| 71 |
-See the example in action |
|
| 72 |
- |
|
| 73 |
-.. raw:: html |
|
| 74 |
- |
|
| 75 |
- <div style="margin-top:10px;"> |
|
| 76 |
- <iframe width="560" height="350" src="http://ascii.io/a/2562/raw" frameborder="0"></iframe> |
|
| 77 |
- </div> |
|
| 78 |
- |
|
| 79 |
-Continue to the :ref:`python_web_app` example. |
|
| 80 | 1 |
\ No newline at end of file |
| 81 | 2 |
deleted file mode 100644 |
| ... | ... |
@@ -1,17 +0,0 @@ |
| 1 |
-:title: Docker Examples |
|
| 2 |
-:description: Examples on how to use Docker |
|
| 3 |
-:keywords: docker, hello world, examples |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
- |
|
| 7 |
-Examples |
|
| 8 |
-============ |
|
| 9 |
- |
|
| 10 |
-Contents: |
|
| 11 |
- |
|
| 12 |
-.. toctree:: |
|
| 13 |
- :maxdepth: 1 |
|
| 14 |
- |
|
| 15 |
- hello_world |
|
| 16 |
- hello_world_daemon |
|
| 17 |
- python_web_app |
| 18 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,70 +0,0 @@ |
| 1 |
-:title: Python Web app example |
|
| 2 |
-:description: Building your own python web app using docker |
|
| 3 |
-:keywords: docker, example, python, web app |
|
| 4 |
- |
|
| 5 |
-.. _python_web_app: |
|
| 6 |
- |
|
| 7 |
-Building a python web app |
|
| 8 |
-========================= |
|
| 9 |
-The goal of this example is to show you how you can author your own docker images using a parent image, making changes to it, and then saving the results as a new image. We will do that by making a simple hello flask web application image. |
|
| 10 |
- |
|
| 11 |
-**Steps:** |
|
| 12 |
- |
|
| 13 |
-.. code-block:: bash |
|
| 14 |
- |
|
| 15 |
- $ docker pull shykes/pybuilder |
|
| 16 |
- |
|
| 17 |
-We are downloading the "shykes/pybuilder" docker image |
|
| 18 |
- |
|
| 19 |
-.. code-block:: bash |
|
| 20 |
- |
|
| 21 |
- $ URL=http://github.com/shykes/helloflask/archive/master.tar.gz |
|
| 22 |
- |
|
| 23 |
-We set a URL variable that points to a tarball of a simple helloflask web app |
|
| 24 |
- |
|
| 25 |
-.. code-block:: bash |
|
| 26 |
- |
|
| 27 |
- $ BUILD_JOB=$(docker run -t shykes/pybuilder:1d9aab3737242c65 /usr/local/bin/buildapp $URL) |
|
| 28 |
- |
|
| 29 |
-Inside of the "shykes/pybuilder" image there is a command called buildapp, we are running that command and passing the $URL variable from step 2 to it, and running the whole thing inside of a new container. BUILD_JOB will be set with the new container_id. "1d9aab3737242c65" came from the output of step 1 when importing image. also available from 'docker images'. |
|
| 30 |
- |
|
| 31 |
-.. code-block:: bash |
|
| 32 |
- |
|
| 33 |
- $ docker attach $BUILD_JOB |
|
| 34 |
- [...] |
|
| 35 |
- |
|
| 36 |
-We attach to the new container to see what is going on. Ctrl-C to disconnect |
|
| 37 |
- |
|
| 38 |
-.. code-block:: bash |
|
| 39 |
- |
|
| 40 |
- $ BUILD_IMG=$(docker commit $BUILD_JOB _/builds/github.com/hykes/helloflask/master) |
|
| 41 |
- |
|
| 42 |
-Save the changed we just made in the container to a new image called "_/builds/github.com/hykes/helloflask/master" and save the image id in the BUILD_IMG variable name. |
|
| 43 |
- |
|
| 44 |
-.. code-block:: bash |
|
| 45 |
- |
|
| 46 |
- $ WEB_WORKER=$(docker run -p 5000 $BUILD_IMG /usr/local/bin/runapp) |
|
| 47 |
- |
|
| 48 |
-Use the new image we just created and create a new container with network port 5000, and return the container id and store in the WEB_WORKER variable. |
|
| 49 |
- |
|
| 50 |
-.. code-block:: bash |
|
| 51 |
- |
|
| 52 |
- $ docker logs $WEB_WORKER |
|
| 53 |
- * Running on http://0.0.0.0:5000/ |
|
| 54 |
- |
|
| 55 |
-view the logs for the new container using the WEB_WORKER variable, and if everything worked as planned you should see the line "Running on http://0.0.0.0:5000/" in the log output. |
|
| 56 |
- |
|
| 57 |
- |
|
| 58 |
-**Video:** |
|
| 59 |
- |
|
| 60 |
-See the example in action |
|
| 61 |
- |
|
| 62 |
-.. raw:: html |
|
| 63 |
- |
|
| 64 |
- <div style="margin-top:10px;"> |
|
| 65 |
- <iframe width="720" height="350" src="http://ascii.io/a/2573/raw" frameborder="0"></iframe> |
|
| 66 |
- </div> |
|
| 67 |
- |
|
| 68 |
-Continue to the `base commands`_ |
|
| 69 |
- |
|
| 70 |
-.. _base commands: ../commandline/basecommands.html |
| 71 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,47 +0,0 @@ |
| 1 |
-FAQ |
|
| 2 |
-=== |
|
| 3 |
- |
|
| 4 |
- |
|
| 5 |
-Most frequently asked questions. |
|
| 6 |
- |
|
| 7 |
-**1. How much does Docker cost?** |
|
| 8 |
- |
|
| 9 |
-Docker is 100% free, it is open source, so you can use it without paying. |
|
| 10 |
- |
|
| 11 |
-**2. What open source license are you using?** |
|
| 12 |
- |
|
| 13 |
-We are using the Apache License Version 2.0, see it here: https://github.com/dotcloud/docker/blob/master/LICENSE |
|
| 14 |
- |
|
| 15 |
-**3. Does Docker run on Mac OS X or Windows?** |
|
| 16 |
- |
|
| 17 |
-Not at this time, Docker currently only runs on Linux, but you can use VirtualBox to run Docker in a virtual machine on your box, and get the best of both worlds. Check out the MacOSX_ and Windows_ intallation guides. |
|
| 18 |
- |
|
| 19 |
-**4. How do containers compare to virtual machines?** |
|
| 20 |
- |
|
| 21 |
-They are complementary. VMs are best used to allocate chunks of hardware resources. Containers operate at the process level, which makes them very lightweight and perfect as a unit of software delivery. |
|
| 22 |
- |
|
| 23 |
-**5. Can I help by adding some questions and answers?** |
|
| 24 |
- |
|
| 25 |
-Definitely! You can fork `the repo`_ and edit the documentation sources. |
|
| 26 |
- |
|
| 27 |
- |
|
| 28 |
-**42. Where can I find more answers?** |
|
| 29 |
- |
|
| 30 |
-You can find more answers on: |
|
| 31 |
- |
|
| 32 |
-* `IRC: docker on freenode`_ |
|
| 33 |
-* `Github`_ |
|
| 34 |
-* `Ask questions on Stackoverflow`_ |
|
| 35 |
-* `Join the conversation on Twitter`_ |
|
| 36 |
- |
|
| 37 |
-.. _Windows: ../documentation/installation/windows.html |
|
| 38 |
-.. _MacOSX: ../documentation/installation/macos.html |
|
| 39 |
-.. _the repo: http://www.github.com/dotcloud/docker |
|
| 40 |
-.. _IRC\: docker on freenode: irc://chat.freenode.net#docker |
|
| 41 |
-.. _Github: http://www.github.com/dotcloud/docker |
|
| 42 |
-.. _Ask questions on Stackoverflow: http://stackoverflow.com/search?q=docker |
|
| 43 |
-.. _Join the conversation on Twitter: http://twitter.com/getdocker |
|
| 44 |
- |
|
| 45 |
- |
|
| 46 |
-Looking for something else to read? Checkout the :ref:`hello_world` example. |
| 47 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,18 +0,0 @@ |
| 1 |
-:title: docker documentation |
|
| 2 |
-:description: docker documentation |
|
| 3 |
-:keywords: |
|
| 4 |
- |
|
| 5 |
-Documentation |
|
| 6 |
-============= |
|
| 7 |
- |
|
| 8 |
-This documentation has the following resources: |
|
| 9 |
- |
|
| 10 |
-.. toctree:: |
|
| 11 |
- :maxdepth: 1 |
|
| 12 |
- |
|
| 13 |
- concepts/index |
|
| 14 |
- installation/index |
|
| 15 |
- examples/index |
|
| 16 |
- contributing/index |
|
| 17 |
- commandline/index |
|
| 18 |
- faq |
|
| 19 | 1 |
\ No newline at end of file |
| 20 | 2 |
deleted file mode 100644 |
| ... | ... |
@@ -1,54 +0,0 @@ |
| 1 |
-Amazon EC2 |
|
| 2 |
-========== |
|
| 3 |
- |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
-Installation |
|
| 7 |
- |
|
| 8 |
-Install vagrant from http://www.vagrantup.com/ (or use your package manager) |
|
| 9 |
- |
|
| 10 |
-clone the repo |
|
| 11 |
- |
|
| 12 |
- |
|
| 13 |
-Docker can be installed with Vagrant on Amazon EC2, using Vagrant 1.1 is required for EC2, but deploying is as simple as: |
|
| 14 |
- |
|
| 15 |
-:: |
|
| 16 |
- |
|
| 17 |
- $ export AWS_ACCESS_KEY_ID=xxx \ |
|
| 18 |
- AWS_SECRET_ACCESS_KEY=xxx \ |
|
| 19 |
- AWS_KEYPAIR_NAME=xxx \ |
|
| 20 |
- AWS_SSH_PRIVKEY=xxx |
|
| 21 |
- |
|
| 22 |
-:: |
|
| 23 |
- |
|
| 24 |
- $ vagrant plugin install vagrant-aws |
|
| 25 |
- |
|
| 26 |
-:: |
|
| 27 |
- |
|
| 28 |
- $ vagrant up --provider=aws |
|
| 29 |
- |
|
| 30 |
-The environment variables are: |
|
| 31 |
- |
|
| 32 |
-* ``AWS_ACCESS_KEY_ID`` - The API key used to make requests to AWS |
|
| 33 |
-* ``AWS_SECRET_ACCESS_KEY`` - The secret key to make AWS API requests |
|
| 34 |
-* ``AWS_KEYPAIR_NAME`` - The ID of the keypair used for this EC2 instance |
|
| 35 |
-* ``AWS_SSH_PRIVKEY`` - The path to the private key for the named keypair |
|
| 36 |
- |
|
| 37 |
- |
|
| 38 |
-Make sure your default security zone on AWS includes rights to SSH to your container. Otherwise access will |
|
| 39 |
-fail silently. |
|
| 40 |
- |
|
| 41 |
- |
|
| 42 |
-.. code-block:: bash |
|
| 43 |
- |
|
| 44 |
- vagrant ssh |
|
| 45 |
- |
|
| 46 |
-Now you are in the VM, run docker |
|
| 47 |
- |
|
| 48 |
-.. code-block:: bash |
|
| 49 |
- |
|
| 50 |
- docker |
|
| 51 |
- |
|
| 52 |
- |
|
| 53 |
-Continue with the :ref:`hello_world` example. |
|
| 54 | 1 |
\ No newline at end of file |
| 75 | 22 |
deleted file mode 100644 |
| ... | ... |
@@ -1,17 +0,0 @@ |
| 1 |
-:title: docker documentation |
|
| 2 |
-:description: -- todo: change me |
|
| 3 |
-:keywords: todo: change me |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
- |
|
| 7 |
-Installation |
|
| 8 |
-============ |
|
| 9 |
- |
|
| 10 |
-Contents: |
|
| 11 |
- |
|
| 12 |
-.. toctree:: |
|
| 13 |
- :maxdepth: 1 |
|
| 14 |
- |
|
| 15 |
- ubuntulinux |
|
| 16 |
- macos |
|
| 17 |
- windows |
| 18 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,66 +0,0 @@ |
| 1 |
- |
|
| 2 |
-Mac OS X and other linux |
|
| 3 |
-======================== |
|
| 4 |
- |
|
| 5 |
- Please note this is a community contributed installation path. The only 'official' installation is using the :ref:`ubuntu_linux` installation path. This version |
|
| 6 |
- may be out of date because it depends on some binaries to be updated and published |
|
| 7 |
- |
|
| 8 |
- |
|
| 9 |
-Requirements |
|
| 10 |
- |
|
| 11 |
-We currently rely on some Ubuntu-linux specific packages, this will change in the future, but for now we provide a |
|
| 12 |
-streamlined path to install Virtualbox with a Ubuntu 12.10 image using Vagrant. |
|
| 13 |
- |
|
| 14 |
-1. Install virtualbox from https://www.virtualbox.org/ (or use your package manager) |
|
| 15 |
-2. Install vagrant from http://www.vagrantup.com/ (or use your package manager) |
|
| 16 |
-3. Install git if you had not installed it before, check if it is installed by running |
|
| 17 |
- ``git`` in a terminal window |
|
| 18 |
- |
|
| 19 |
-We recommend having at least about 2Gb of free disk space and 2Gb RAM (or more). |
|
| 20 |
- |
|
| 21 |
-Installation |
|
| 22 |
- |
|
| 23 |
-1. Fetch the docker sources |
|
| 24 |
- |
|
| 25 |
-.. code-block:: bash |
|
| 26 |
- |
|
| 27 |
- git clone https://github.com/dotcloud/docker.git |
|
| 28 |
- |
|
| 29 |
-2. Run vagrant from the sources directory |
|
| 30 |
- |
|
| 31 |
-.. code-block:: bash |
|
| 32 |
- |
|
| 33 |
- vagrant up |
|
| 34 |
- |
|
| 35 |
-Vagrant will: |
|
| 36 |
- |
|
| 37 |
-* Download the Quantal64 base ubuntu virtual machine image from get.docker.io/ |
|
| 38 |
-* Boot this image in virtualbox |
|
| 39 |
- |
|
| 40 |
-Then it will use Puppet to perform an initial setup in this machine: |
|
| 41 |
- |
|
| 42 |
-* Download & untar the most recent docker binary tarball to vagrant homedir. |
|
| 43 |
-* Debootstrap to /var/lib/docker/images/ubuntu. |
|
| 44 |
-* Install & run dockerd as service. |
|
| 45 |
-* Put docker in /usr/local/bin. |
|
| 46 |
-* Put latest Go toolchain in /usr/local/go. |
|
| 47 |
- |
|
| 48 |
-You now have a Ubuntu Virtual Machine running with docker pre-installed. |
|
| 49 |
- |
|
| 50 |
-To access the VM and use Docker, Run ``vagrant ssh`` from the same directory as where you ran |
|
| 51 |
-``vagrant up``. Vagrant will make sure to connect you to the correct VM. |
|
| 52 |
- |
|
| 53 |
-.. code-block:: bash |
|
| 54 |
- |
|
| 55 |
- vagrant ssh |
|
| 56 |
- |
|
| 57 |
-Now you are in the VM, run docker |
|
| 58 |
- |
|
| 59 |
-.. code-block:: bash |
|
| 60 |
- |
|
| 61 |
- docker |
|
| 62 |
- |
|
| 63 |
- |
|
| 64 |
-Continue with the :ref:`hello_world` example. |
| 65 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,48 +0,0 @@ |
| 1 |
-.. _ubuntu_linux: |
|
| 2 |
- |
|
| 3 |
-Ubuntu Linux |
|
| 4 |
-============ |
|
| 5 |
- |
|
| 6 |
- **Please note this project is currently under heavy development. It should not be used in production.** |
|
| 7 |
- |
|
| 8 |
- |
|
| 9 |
- |
|
| 10 |
-Installing on Ubuntu 12.04 and 12.10 |
|
| 11 |
- |
|
| 12 |
-Right now, the officially supported distributions are: |
|
| 13 |
- |
|
| 14 |
-Ubuntu 12.04 (precise LTS) |
|
| 15 |
-Ubuntu 12.10 (quantal) |
|
| 16 |
-Docker probably works on other distributions featuring a recent kernel, the AUFS patch, and up-to-date lxc. However this has not been tested. |
|
| 17 |
- |
|
| 18 |
-Install dependencies: |
|
| 19 |
- |
|
| 20 |
-:: |
|
| 21 |
- |
|
| 22 |
- sudo apt-get install lxc wget bsdtar curl |
|
| 23 |
- sudo apt-get install linux-image-extra-`uname -r` |
|
| 24 |
- |
|
| 25 |
-The linux-image-extra package is needed on standard Ubuntu EC2 AMIs in order to install the aufs kernel module. |
|
| 26 |
- |
|
| 27 |
-Install the latest docker binary: |
|
| 28 |
- |
|
| 29 |
-:: |
|
| 30 |
- |
|
| 31 |
- wget http://get.docker.io/builds/$(uname -s)/$(uname -m)/docker-master.tgz |
|
| 32 |
- tar -xf docker-master.tgz |
|
| 33 |
- |
|
| 34 |
-Run your first container! |
|
| 35 |
- |
|
| 36 |
-:: |
|
| 37 |
- |
|
| 38 |
- cd docker-master |
|
| 39 |
- |
|
| 40 |
-:: |
|
| 41 |
- |
|
| 42 |
- sudo ./docker run -i -t base /bin/bash |
|
| 43 |
- |
|
| 44 |
-Consider adding docker to your PATH for simplicity. |
|
| 45 |
- |
|
| 46 |
- |
|
| 47 |
-Continue with the :ref:`hello_world` example. |
|
| 48 | 1 |
\ No newline at end of file |
| 49 | 2 |
deleted file mode 100644 |
| ... | ... |
@@ -1,167 +0,0 @@ |
| 1 |
-:title: Requirements and Installation on Windows |
|
| 2 |
-:description: Docker's tutorial to run docker on Windows |
|
| 3 |
-:keywords: Docker, Docker documentation, Windows, requirements, virtualbox, vagrant, git, ssh, putty, cygwin |
|
| 4 |
- |
|
| 5 |
- |
|
| 6 |
-Windows |
|
| 7 |
-========= |
|
| 8 |
- |
|
| 9 |
- Please note this is a community contributed installation path. The only 'official' installation is using the :ref:`ubuntu_linux` installation path. This version |
|
| 10 |
- may be out of date because it depends on some binaries to be updated and published |
|
| 11 |
- |
|
| 12 |
- |
|
| 13 |
- |
|
| 14 |
-Requirements |
|
| 15 |
- |
|
| 16 |
-1. Install virtualbox from https://www.virtualbox.org - or follow this tutorial__ |
|
| 17 |
- |
|
| 18 |
-.. __: http://www.slideshare.net/julienbarbier42/install-virtualbox-on-windows-7 |
|
| 19 |
- |
|
| 20 |
-2. Install vagrant from http://www.vagrantup.com - or follow this tutorial__ |
|
| 21 |
- |
|
| 22 |
-.. __: http://www.slideshare.net/julienbarbier42/install-vagrant-on-windows-7 |
|
| 23 |
- |
|
| 24 |
-3. Install git with ssh from http://git-scm.com/downloads - or follow this tutorial__ |
|
| 25 |
- |
|
| 26 |
-.. __: http://www.slideshare.net/julienbarbier42/install-git-with-ssh-on-windows-7 |
|
| 27 |
- |
|
| 28 |
- |
|
| 29 |
-We recommend having at least 2Gb of free disk space and 2Gb of RAM (or more). |
|
| 30 |
- |
|
| 31 |
-Opening a command prompt |
|
| 32 |
- |
|
| 33 |
-First open a cmd prompt. Press Windows key and then press “R” key. This will open the RUN dialog box for you. Type “cmd” and press Enter. Or you can click on Start, type “cmd” in the “Search programs and files” field, and click on cmd.exe. |
|
| 34 |
- |
|
| 35 |
-.. image:: images/win/_01.gif |
|
| 36 |
- :alt: Git install |
|
| 37 |
- :align: center |
|
| 38 |
- |
|
| 39 |
-This should open a cmd prompt window. |
|
| 40 |
- |
|
| 41 |
-.. image:: images/win/_02.gif |
|
| 42 |
- :alt: run docker |
|
| 43 |
- :align: center |
|
| 44 |
- |
|
| 45 |
-Alternatively, you can also use a Cygwin terminal, or Git Bash (or any other command line program you are usually using). The next steps would be the same. |
|
| 46 |
- |
|
| 47 |
-Launch an Ubuntu virtual server |
|
| 48 |
- |
|
| 49 |
-Let’s download and run an Ubuntu image with docker binaries already installed. |
|
| 50 |
- |
|
| 51 |
-.. code-block:: bash |
|
| 52 |
- |
|
| 53 |
- git clone https://github.com/dotcloud/docker.git |
|
| 54 |
- cd docker |
|
| 55 |
- vagrant up |
|
| 56 |
- |
|
| 57 |
-.. image:: images/win/run_02_.gif |
|
| 58 |
- :alt: run docker |
|
| 59 |
- :align: center |
|
| 60 |
- |
|
| 61 |
-Congratulations! You are running an Ubuntu server with docker installed on it. You do not see it though, because it is running in the background. |
|
| 62 |
- |
|
| 63 |
-Log onto your Ubuntu server |
|
| 64 |
- |
|
| 65 |
-Let’s log into your Ubuntu server now. To do so you have two choices: |
|
| 66 |
- |
|
| 67 |
-- Use Vagrant on Windows command prompt OR |
|
| 68 |
-- Use SSH |
|
| 69 |
- |
|
| 70 |
-Using Vagrant on Windows Command Prompt |
|
| 71 |
-``````````````````````````````````````` |
|
| 72 |
- |
|
| 73 |
-Run the following command |
|
| 74 |
- |
|
| 75 |
-.. code-block:: bash |
|
| 76 |
- |
|
| 77 |
- vagrant ssh |
|
| 78 |
- |
|
| 79 |
-You may see an error message starting with “`ssh` executable not found”. In this case it means that you do not have SSH in your PATH. If you do not have SSH in your PATH you can set it up with the “set” command. For instance, if your ssh.exe is in the folder named “C:\Program Files (x86)\Git\bin”, then you can run the following command: |
|
| 80 |
- |
|
| 81 |
-.. code-block:: bash |
|
| 82 |
- |
|
| 83 |
- set PATH=%PATH%;C:\Program Files (x86)\Git\bin |
|
| 84 |
- |
|
| 85 |
-.. image:: images/win/run_03.gif |
|
| 86 |
- :alt: run docker |
|
| 87 |
- :align: center |
|
| 88 |
- |
|
| 89 |
-Using SSH |
|
| 90 |
-````````` |
|
| 91 |
- |
|
| 92 |
-First step is to get the IP and port of your Ubuntu server. Simply run: |
|
| 93 |
- |
|
| 94 |
-.. code-block:: bash |
|
| 95 |
- |
|
| 96 |
- vagrant ssh-config |
|
| 97 |
- |
|
| 98 |
-You should see an output with HostName and Port information. In this example, HostName is 127.0.0.1 and port is 2222. And the User is “vagrant”. The password is not shown, but it is also “vagrant”. |
|
| 99 |
- |
|
| 100 |
-.. image:: images/win/ssh-config.gif |
|
| 101 |
- :alt: run docker |
|
| 102 |
- :align: center |
|
| 103 |
- |
|
| 104 |
-You can now use this information for connecting via SSH to your server. To do so you can: |
|
| 105 |
- |
|
| 106 |
-- Use putty.exe OR |
|
| 107 |
-- Use SSH from a terminal |
|
| 108 |
- |
|
| 109 |
-Use putty.exe |
|
| 110 |
-''''''''''''' |
|
| 111 |
- |
|
| 112 |
-You can download putty.exe from this page http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html |
|
| 113 |
-Launch putty.exe and simply enter the information you got from last step. |
|
| 114 |
- |
|
| 115 |
-.. image:: images/win/putty.gif |
|
| 116 |
- :alt: run docker |
|
| 117 |
- :align: center |
|
| 118 |
- |
|
| 119 |
-Open, and enter user = vagrant and password = vagrant. |
|
| 120 |
- |
|
| 121 |
-.. image:: images/win/putty_2.gif |
|
| 122 |
- :alt: run docker |
|
| 123 |
- :align: center |
|
| 124 |
- |
|
| 125 |
-SSH from a terminal |
|
| 126 |
-''''''''''''''''''' |
|
| 127 |
- |
|
| 128 |
-You can also run this command on your favorite terminal (windows prompt, cygwin, git-bash, …). Make sure to adapt the IP and port from what you got from the vagrant ssh-config command. |
|
| 129 |
- |
|
| 130 |
-.. code-block:: bash |
|
| 131 |
- |
|
| 132 |
- ssh vagrant@127.0.0.1 –p 2222 |
|
| 133 |
- |
|
| 134 |
-Enter user = vagrant and password = vagrant. |
|
| 135 |
- |
|
| 136 |
-.. image:: images/win/cygwin.gif |
|
| 137 |
- :alt: run docker |
|
| 138 |
- :align: center |
|
| 139 |
- |
|
| 140 |
-Congratulations, you are now logged onto your Ubuntu Server, running on top of your Windows machine ! |
|
| 141 |
- |
|
| 142 |
-Running Docker |
|
| 143 |
- |
|
| 144 |
-First you have to be root in order to run docker. Simply run the following command: |
|
| 145 |
- |
|
| 146 |
-.. code-block:: bash |
|
| 147 |
- |
|
| 148 |
- sudo su |
|
| 149 |
- |
|
| 150 |
-You are now ready for the docker’s “hello world” example. Run |
|
| 151 |
- |
|
| 152 |
-.. code-block:: bash |
|
| 153 |
- |
|
| 154 |
- docker run busybox echo hello world |
|
| 155 |
- |
|
| 156 |
-.. image:: images/win/run_04.gif |
|
| 157 |
- :alt: run docker |
|
| 158 |
- :align: center |
|
| 159 |
- |
|
| 160 |
-All done! |
|
| 161 |
- |
|
| 162 |
-Now you can continue with the :ref:`hello_world` example. |
| 163 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,50 @@ |
| 0 |
+:title: Hello world example |
|
| 1 |
+:description: A simple hello world example with Docker |
|
| 2 |
+:keywords: docker, example, hello world |
|
| 3 |
+ |
|
| 4 |
+.. _hello_world: |
|
| 5 |
+ |
|
| 6 |
+Hello World |
|
| 7 |
+=========== |
|
| 8 |
+This is the most basic example available for using docker |
|
| 9 |
+ |
|
| 10 |
+This example assumes you have Docker installed. |
|
| 11 |
+ |
|
| 12 |
+ |
|
| 13 |
+Download the base container |
|
| 14 |
+ |
|
| 15 |
+.. code-block:: bash |
|
| 16 |
+ |
|
| 17 |
+ # Download a base image |
|
| 18 |
+ docker pull base |
|
| 19 |
+ |
|
| 20 |
+The *base* image is a minimal *ubuntu* based container, alternatively you can select *busybox*, a bare |
|
| 21 |
+minimal linux system. The images are retrieved from the docker repository. |
|
| 22 |
+ |
|
| 23 |
+ |
|
| 24 |
+.. code-block:: bash |
|
| 25 |
+ |
|
| 26 |
+ #run a simple echo command, that will echo hello world back to the console over standard out. |
|
| 27 |
+ docker run base /bin/echo hello world |
|
| 28 |
+ |
|
| 29 |
+**Explanation:** |
|
| 30 |
+ |
|
| 31 |
+- **"docker run"** run a command in a new container |
|
| 32 |
+- **"base"** is the image we want to run the command inside of. |
|
| 33 |
+- **"/bin/echo"** is the command we want to run in the container |
|
| 34 |
+- **"hello world"** is the input for the echo command |
|
| 35 |
+ |
|
| 36 |
+ |
|
| 37 |
+ |
|
| 38 |
+**Video:** |
|
| 39 |
+ |
|
| 40 |
+See the example in action |
|
| 41 |
+ |
|
| 42 |
+.. raw:: html |
|
| 43 |
+ |
|
| 44 |
+ <div style="margin-top:10px;"> |
|
| 45 |
+ <iframe width="560" height="350" src="http://ascii.io/a/2603/raw" frameborder="0"></iframe> |
|
| 46 |
+ </div> |
|
| 47 |
+ |
|
| 48 |
+ |
|
| 49 |
+Continue to the :ref:`hello_world_daemon` example. |
|
| 0 | 50 |
\ No newline at end of file |
| 1 | 51 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,89 @@ |
| 0 |
+:title: Hello world daemon example |
|
| 1 |
+:description: A simple hello world daemon example with Docker |
|
| 2 |
+:keywords: docker, example, hello world, daemon |
|
| 3 |
+ |
|
| 4 |
+.. _hello_world_daemon: |
|
| 5 |
+ |
|
| 6 |
+Hello World Daemon |
|
| 7 |
+================== |
|
| 8 |
+The most boring daemon ever written. |
|
| 9 |
+ |
|
| 10 |
+This example assumes you have Docker installed and with the base image already imported ``docker pull base``. |
|
| 11 |
+We will use the base image to run a simple hello world daemon that will just print hello world to standard |
|
| 12 |
+out every second. It will continue to do this until we stop it. |
|
| 13 |
+ |
|
| 14 |
+**Steps:** |
|
| 15 |
+ |
|
| 16 |
+.. code-block:: bash |
|
| 17 |
+ |
|
| 18 |
+ $ CONTAINER_ID=$(docker run -d base /bin/sh -c "while true; do echo hello world; sleep 1; done") |
|
| 19 |
+ |
|
| 20 |
+We are going to run a simple hello world daemon in a new container made from the busybox daemon. |
|
| 21 |
+ |
|
| 22 |
+- **"docker run -d "** run a command in a new container. We pass "-d" so it runs as a daemon. |
|
| 23 |
+- **"base"** is the image we want to run the command inside of. |
|
| 24 |
+- **"/bin/sh -c"** is the command we want to run in the container |
|
| 25 |
+- **"while true; do echo hello world; sleep 1; done"** is the mini script we want to run, that will just print hello world once a second until we stop it. |
|
| 26 |
+- **$CONTAINER_ID** the output of the run command will return a container id, we can use in future commands to see what is going on with this process. |
|
| 27 |
+ |
|
| 28 |
+.. code-block:: bash |
|
| 29 |
+ |
|
| 30 |
+ $ docker logs $CONTAINER_ID |
|
| 31 |
+ |
|
| 32 |
+Check the logs make sure it is working correctly. |
|
| 33 |
+ |
|
| 34 |
+- **"docker logs**" This will return the logs for a container |
|
| 35 |
+- **$CONTAINER_ID** The Id of the container we want the logs for. |
|
| 36 |
+ |
|
| 37 |
+.. code-block:: bash |
|
| 38 |
+ |
|
| 39 |
+ docker attach $CONTAINER_ID |
|
| 40 |
+ |
|
| 41 |
+Attach to the container to see the results in realtime. |
|
| 42 |
+ |
|
| 43 |
+- **"docker attach**" This will allow us to attach to a background process to see what is going on. |
|
| 44 |
+- **$CONTAINER_ID** The Id of the container we want to attach too. |
|
| 45 |
+ |
|
| 46 |
+.. code-block:: bash |
|
| 47 |
+ |
|
| 48 |
+ docker ps |
|
| 49 |
+ |
|
| 50 |
+Check the process list to make sure it is running. |
|
| 51 |
+ |
|
| 52 |
+- **"docker ps"** this shows all running process managed by docker |
|
| 53 |
+ |
|
| 54 |
+.. code-block:: bash |
|
| 55 |
+ |
|
| 56 |
+ $ docker stop $CONTAINER_ID |
|
| 57 |
+ |
|
| 58 |
+Stop the container, since we don't need it anymore. |
|
| 59 |
+ |
|
| 60 |
+- **"docker stop"** This stops a container |
|
| 61 |
+- **$CONTAINER_ID** The Id of the container we want to stop. |
|
| 62 |
+ |
|
| 63 |
+.. code-block:: bash |
|
| 64 |
+ |
|
| 65 |
+ docker ps |
|
| 66 |
+ |
|
| 67 |
+Make sure it is really stopped. |
|
| 68 |
+ |
|
| 69 |
+ |
|
| 70 |
+**Video:** |
|
| 71 |
+ |
|
| 72 |
+See the example in action |
|
| 73 |
+ |
|
| 74 |
+.. raw:: html |
|
| 75 |
+ |
|
| 76 |
+ <div style="margin-top:10px;"> |
|
| 77 |
+ <iframe width="560" height="350" src="http://ascii.io/a/2562/raw" frameborder="0"></iframe> |
|
| 78 |
+ </div> |
|
| 79 |
+ |
|
| 80 |
+Continue to the :ref:`python_web_app` example. |
|
| 81 |
+ |
|
| 82 |
+ |
|
| 83 |
+Notes: |
|
| 84 |
+------ |
|
| 85 |
+ |
|
| 86 |
+- **Docker daemon** The docker daemon is started by ``sudo docker -d``, Vagrant may have started |
|
| 87 |
+ the Docker daemon for you, but you will need to restart it this way if it was terminated. Otherwise |
|
| 88 |
+ it may give you ``Couldn't create Tag store: open /var/lib/docker/repositories: permission denied`` |
| 0 | 89 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,17 @@ |
| 0 |
+:title: Docker Examples |
|
| 1 |
+:description: Examples on how to use Docker |
|
| 2 |
+:keywords: docker, hello world, examples |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+Examples |
|
| 7 |
+============ |
|
| 8 |
+ |
|
| 9 |
+Contents: |
|
| 10 |
+ |
|
| 11 |
+.. toctree:: |
|
| 12 |
+ :maxdepth: 1 |
|
| 13 |
+ |
|
| 14 |
+ hello_world |
|
| 15 |
+ hello_world_daemon |
|
| 16 |
+ python_web_app |
| 0 | 17 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,70 @@ |
| 0 |
+:title: Python Web app example |
|
| 1 |
+:description: Building your own python web app using docker |
|
| 2 |
+:keywords: docker, example, python, web app |
|
| 3 |
+ |
|
| 4 |
+.. _python_web_app: |
|
| 5 |
+ |
|
| 6 |
+Building a python web app |
|
| 7 |
+========================= |
|
| 8 |
+The goal of this example is to show you how you can author your own docker images using a parent image, making changes to it, and then saving the results as a new image. We will do that by making a simple hello flask web application image. |
|
| 9 |
+ |
|
| 10 |
+**Steps:** |
|
| 11 |
+ |
|
| 12 |
+.. code-block:: bash |
|
| 13 |
+ |
|
| 14 |
+ $ docker pull shykes/pybuilder |
|
| 15 |
+ |
|
| 16 |
+We are downloading the "shykes/pybuilder" docker image |
|
| 17 |
+ |
|
| 18 |
+.. code-block:: bash |
|
| 19 |
+ |
|
| 20 |
+ $ URL=http://github.com/shykes/helloflask/archive/master.tar.gz |
|
| 21 |
+ |
|
| 22 |
+We set a URL variable that points to a tarball of a simple helloflask web app |
|
| 23 |
+ |
|
| 24 |
+.. code-block:: bash |
|
| 25 |
+ |
|
| 26 |
+ $ BUILD_JOB=$(docker run -t shykes/pybuilder:1d9aab3737242c65 /usr/local/bin/buildapp $URL) |
|
| 27 |
+ |
|
| 28 |
+Inside of the "shykes/pybuilder" image there is a command called buildapp, we are running that command and passing the $URL variable from step 2 to it, and running the whole thing inside of a new container. BUILD_JOB will be set with the new container_id. "1d9aab3737242c65" came from the output of step 1 when importing image. also available from 'docker images'. |
|
| 29 |
+ |
|
| 30 |
+.. code-block:: bash |
|
| 31 |
+ |
|
| 32 |
+ $ docker attach $BUILD_JOB |
|
| 33 |
+ [...] |
|
| 34 |
+ |
|
| 35 |
+We attach to the new container to see what is going on. Ctrl-C to disconnect |
|
| 36 |
+ |
|
| 37 |
+.. code-block:: bash |
|
| 38 |
+ |
|
| 39 |
+ $ BUILD_IMG=$(docker commit $BUILD_JOB _/builds/github.com/hykes/helloflask/master) |
|
| 40 |
+ |
|
| 41 |
+Save the changed we just made in the container to a new image called "_/builds/github.com/hykes/helloflask/master" and save the image id in the BUILD_IMG variable name. |
|
| 42 |
+ |
|
| 43 |
+.. code-block:: bash |
|
| 44 |
+ |
|
| 45 |
+ $ WEB_WORKER=$(docker run -p 5000 $BUILD_IMG /usr/local/bin/runapp) |
|
| 46 |
+ |
|
| 47 |
+Use the new image we just created and create a new container with network port 5000, and return the container id and store in the WEB_WORKER variable. |
|
| 48 |
+ |
|
| 49 |
+.. code-block:: bash |
|
| 50 |
+ |
|
| 51 |
+ $ docker logs $WEB_WORKER |
|
| 52 |
+ * Running on http://0.0.0.0:5000/ |
|
| 53 |
+ |
|
| 54 |
+view the logs for the new container using the WEB_WORKER variable, and if everything worked as planned you should see the line "Running on http://0.0.0.0:5000/" in the log output. |
|
| 55 |
+ |
|
| 56 |
+ |
|
| 57 |
+**Video:** |
|
| 58 |
+ |
|
| 59 |
+See the example in action |
|
| 60 |
+ |
|
| 61 |
+.. raw:: html |
|
| 62 |
+ |
|
| 63 |
+ <div style="margin-top:10px;"> |
|
| 64 |
+ <iframe width="720" height="350" src="http://ascii.io/a/2573/raw" frameborder="0"></iframe> |
|
| 65 |
+ </div> |
|
| 66 |
+ |
|
| 67 |
+Continue to the `base commands`_ |
|
| 68 |
+ |
|
| 69 |
+.. _base commands: ../commandline/basecommands.html |
| 0 | 70 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,47 @@ |
| 0 |
+FAQ |
|
| 1 |
+=== |
|
| 2 |
+ |
|
| 3 |
+ |
|
| 4 |
+Most frequently asked questions. |
|
| 5 |
+-------------------------------- |
|
| 6 |
+ |
|
| 7 |
+**1. How much does Docker cost?** |
|
| 8 |
+ |
|
| 9 |
+Docker is 100% free, it is open source, so you can use it without paying. |
|
| 10 |
+ |
|
| 11 |
+**2. What open source license are you using?** |
|
| 12 |
+ |
|
| 13 |
+We are using the Apache License Version 2.0, see it here: https://github.com/dotcloud/docker/blob/master/LICENSE |
|
| 14 |
+ |
|
| 15 |
+**3. Does Docker run on Mac OS X or Windows?** |
|
| 16 |
+ |
|
| 17 |
+Not at this time, Docker currently only runs on Linux, but you can use VirtualBox to run Docker in a virtual machine on your box, and get the best of both worlds. Check out the MacOSX_ and Windows_ intallation guides. |
|
| 18 |
+ |
|
| 19 |
+**4. How do containers compare to virtual machines?** |
|
| 20 |
+ |
|
| 21 |
+They are complementary. VMs are best used to allocate chunks of hardware resources. Containers operate at the process level, which makes them very lightweight and perfect as a unit of software delivery. |
|
| 22 |
+ |
|
| 23 |
+**5. Can I help by adding some questions and answers?** |
|
| 24 |
+ |
|
| 25 |
+Definitely! You can fork `the repo`_ and edit the documentation sources. |
|
| 26 |
+ |
|
| 27 |
+ |
|
| 28 |
+**42. Where can I find more answers?** |
|
| 29 |
+ |
|
| 30 |
+You can find more answers on: |
|
| 31 |
+ |
|
| 32 |
+* `IRC: docker on freenode`_ |
|
| 33 |
+* `Github`_ |
|
| 34 |
+* `Ask questions on Stackoverflow`_ |
|
| 35 |
+* `Join the conversation on Twitter`_ |
|
| 36 |
+ |
|
| 37 |
+.. _Windows: ../documentation/installation/windows.html |
|
| 38 |
+.. _MacOSX: ../documentation/installation/macos.html |
|
| 39 |
+.. _the repo: http://www.github.com/dotcloud/docker |
|
| 40 |
+.. _IRC\: docker on freenode: irc://chat.freenode.net#docker |
|
| 41 |
+.. _Github: http://www.github.com/dotcloud/docker |
|
| 42 |
+.. _Ask questions on Stackoverflow: http://stackoverflow.com/search?q=docker |
|
| 43 |
+.. _Join the conversation on Twitter: http://twitter.com/getdocker |
|
| 44 |
+ |
|
| 45 |
+ |
|
| 46 |
+Looking for something else to read? Checkout the :ref:`hello_world` example. |
| 0 | 47 |
deleted file mode 100644 |
| ... | ... |
@@ -1,204 +0,0 @@ |
| 1 |
-<!DOCTYPE html> |
|
| 2 |
-<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> |
|
| 3 |
-<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> |
|
| 4 |
-<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> |
|
| 5 |
-<!--[if gt IE 8]><!--> |
|
| 6 |
-<html class="no-js" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"> <!--<![endif]--> |
|
| 7 |
-<head> |
|
| 8 |
- <meta charset="utf-8"> |
|
| 9 |
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
|
| 10 |
- <title>Docker - the Linux container runtime</title> |
|
| 11 |
- |
|
| 12 |
- <meta name="description" content="Docker encapsulates heterogeneous payloads in standard containers"> |
|
| 13 |
- <meta name="viewport" content="width=device-width"> |
|
| 14 |
- |
|
| 15 |
- <!-- twitter bootstrap --> |
|
| 16 |
- <link rel="stylesheet" href="_static/css/bootstrap.min.css"> |
|
| 17 |
- <link rel="stylesheet" href="_static/css/bootstrap-responsive.min.css"> |
|
| 18 |
- |
|
| 19 |
- <!-- main style file --> |
|
| 20 |
- <link rel="stylesheet" href="_static/css/main.css"> |
|
| 21 |
- |
|
| 22 |
- <!-- vendor scripts --> |
|
| 23 |
- <script src="_static/js/vendor/jquery-1.9.1.min.js" type="text/javascript" ></script> |
|
| 24 |
- <script src="_static/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js" type="text/javascript" ></script> |
|
| 25 |
- |
|
| 26 |
-</head> |
|
| 27 |
- |
|
| 28 |
- |
|
| 29 |
-<body> |
|
| 30 |
- |
|
| 31 |
-<div class="navbar navbar-fixed-top"> |
|
| 32 |
- <div class="navbar-dotcloud"> |
|
| 33 |
- <div class="container" style="text-align: center;"> |
|
| 34 |
- |
|
| 35 |
- <div style="float: right" class="pull-right"> |
|
| 36 |
- <ul class="nav"> |
|
| 37 |
- <li><a href="index.html">Introduction</a></li> |
|
| 38 |
- <li class="active"><a href="gettingstarted.html">Getting started</a></li> |
|
| 39 |
- <li class=""><a href="documentation/concepts/containers.html">Documentation</a></li> |
|
| 40 |
- </ul> |
|
| 41 |
- |
|
| 42 |
- <div class="social links" style="float: right; margin-top: 14px; margin-left: 12px"> |
|
| 43 |
- <a class="twitter" href="http://twitter.com/getdocker">Twitter</a> |
|
| 44 |
- <a class="github" href="https://github.com/dotcloud/docker/">GitHub</a> |
|
| 45 |
- </div> |
|
| 46 |
- </div> |
|
| 47 |
- |
|
| 48 |
- <div style="margin-left: -12px; float: left;"> |
|
| 49 |
- <a href="index.html"><img style="margin-top: 12px; height: 38px" src="_static/img/docker-letters-logo.gif"></a> |
|
| 50 |
- </div> |
|
| 51 |
- </div> |
|
| 52 |
- </div> |
|
| 53 |
-</div> |
|
| 54 |
- |
|
| 55 |
- |
|
| 56 |
-<div class="container"> |
|
| 57 |
- <div class="row"> |
|
| 58 |
- <div class="span12 titlebar"><h1 class="pageheader">GETTING STARTED</h1> |
|
| 59 |
- </div> |
|
| 60 |
- </div> |
|
| 61 |
- |
|
| 62 |
-</div> |
|
| 63 |
- |
|
| 64 |
-<div class="container"> |
|
| 65 |
- <div class="alert alert-info"> |
|
| 66 |
- <strong>Docker is still under heavy development.</strong> It should not yet be used in production. Check <a href="http://github.com/dotcloud/docker">the repo</a> for recent progress. |
|
| 67 |
- </div> |
|
| 68 |
- <div class="row"> |
|
| 69 |
- <div class="span6"> |
|
| 70 |
- <section class="contentblock"> |
|
| 71 |
- <h2> |
|
| 72 |
- <a name="installing-on-ubuntu-1204-and-1210" class="anchor" href="#installing-on-ubuntu-1204-and-1210"><span class="mini-icon mini-icon-link"></span> |
|
| 73 |
- </a>Installing on Ubuntu</h2> |
|
| 74 |
- <ol> |
|
| 75 |
- <li> |
|
| 76 |
- <p>Install dependencies:</p> |
|
| 77 |
- |
|
| 78 |
- <div class="highlight"> |
|
| 79 |
- <pre>sudo apt-get install lxc wget bsdtar curl</pre> |
|
| 80 |
- <pre>sudo apt-get install linux-image-extra-<span class="sb">`</span>uname -r<span class="sb">`</span></pre></div> |
|
| 81 |
- |
|
| 82 |
- <p>The <code>linux-image-extra</code> package is needed on standard Ubuntu EC2 AMIs in order to install the aufs kernel module.</p> |
|
| 83 |
- </li> |
|
| 84 |
- <li> |
|
| 85 |
- <p>Install the latest docker binary:</p> |
|
| 86 |
- |
|
| 87 |
- <div class="highlight"> |
|
| 88 |
- <pre>wget http://get.docker.io/builds/<span class="k">$(</span>uname -s<span class="k">)</span>/<span class="k">$(</span>uname -m<span class="k">)</span>/docker-master.tgz</pre> |
|
| 89 |
- <pre>tar -xf docker-master.tgz</pre> |
|
| 90 |
- </div> |
|
| 91 |
- </li> |
|
| 92 |
- <li> |
|
| 93 |
- <p>Run your first container!</p> |
|
| 94 |
- |
|
| 95 |
- <div class="highlight"><pre><span class="nb">cd </span>docker-master</pre> |
|
| 96 |
- <pre>sudo ./docker run -i -t base /bin/bash</pre> |
|
| 97 |
- </div> |
|
| 98 |
- <p>Done!</p> |
|
| 99 |
- <p>Consider adding docker to your <code>PATH</code> for simplicity.</p> |
|
| 100 |
- </li> |
|
| 101 |
- |
|
| 102 |
- Continue with the <a href="documentation/examples/hello_world.html#hello-world">Hello world</a> example. |
|
| 103 |
- </ol> |
|
| 104 |
- </section> |
|
| 105 |
- |
|
| 106 |
- <section class="contentblock"> |
|
| 107 |
- <h2>Contributing to Docker</h2> |
|
| 108 |
- |
|
| 109 |
- <p>Want to hack on Docker? Awesome! We have some <a href="/documentation/contributing/contributing.html">instructions to get you started</a>. They are probably not perfect, please let us know if anything feels wrong or incomplete.</p> |
|
| 110 |
- </section> |
|
| 111 |
- |
|
| 112 |
- </div> |
|
| 113 |
- <div class="span6"> |
|
| 114 |
- <section class="contentblock"> |
|
| 115 |
- <h2>Quick install on other operating systems</h2> |
|
| 116 |
- <p><strong>For other operating systems we recommend and provide a streamlined install with virtualbox, |
|
| 117 |
- vagrant and an Ubuntu virtual machine.</strong></p> |
|
| 118 |
- |
|
| 119 |
- <ul> |
|
| 120 |
- <li><a href="documentation/installation/macos.html">Mac OS X and other linuxes</a></li> |
|
| 121 |
- <li><a href="documentation/installation/windows.html">Windows</a></li> |
|
| 122 |
- </ul> |
|
| 123 |
- |
|
| 124 |
- </section> |
|
| 125 |
- |
|
| 126 |
- <section class="contentblock"> |
|
| 127 |
- <h2>More resources</h2> |
|
| 128 |
- <ul> |
|
| 129 |
- <li><a href="irc://chat.freenode.net#docker">IRC: docker on freenode</a></li> |
|
| 130 |
- <li><a href="http://www.github.com/dotcloud/docker">Github</a></li> |
|
| 131 |
- <li><a href="http://stackoverflow.com/tags/docker/">Ask questions on Stackoverflow</a></li> |
|
| 132 |
- <li><a href="http://twitter.com/getdocker/">Join the conversation on Twitter</a></li> |
|
| 133 |
- </ul> |
|
| 134 |
- </section> |
|
| 135 |
- |
|
| 136 |
- |
|
| 137 |
- <section class="contentblock"> |
|
| 138 |
- <div id="wufoo-z7x3p3"> |
|
| 139 |
- Fill out my <a href="http://dotclouddocker.wufoo.com/forms/z7x3p3">online form</a>. |
|
| 140 |
- </div> |
|
| 141 |
- <script type="text/javascript">var z7x3p3;(function(d, t) {
|
|
| 142 |
- var s = d.createElement(t), options = {
|
|
| 143 |
- 'userName':'dotclouddocker', |
|
| 144 |
- 'formHash':'z7x3p3', |
|
| 145 |
- 'autoResize':true, |
|
| 146 |
- 'height':'577', |
|
| 147 |
- 'async':true, |
|
| 148 |
- 'header':'show'}; |
|
| 149 |
- s.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + 'wufoo.com/scripts/embed/form.js';
|
|
| 150 |
- s.onload = s.onreadystatechange = function() {
|
|
| 151 |
- var rs = this.readyState; if (rs) if (rs != 'complete') if (rs != 'loaded') return; |
|
| 152 |
- try { z7x3p3 = new WufooForm();z7x3p3.initialize(options);z7x3p3.display(); } catch (e) {}};
|
|
| 153 |
- var scr = d.getElementsByTagName(t)[0], par = scr.parentNode; par.insertBefore(s, scr); |
|
| 154 |
- })(document, 'script');</script> |
|
| 155 |
- </section> |
|
| 156 |
- |
|
| 157 |
- </div> |
|
| 158 |
- </div> |
|
| 159 |
-</div> |
|
| 160 |
- |
|
| 161 |
- |
|
| 162 |
-<div class="container"> |
|
| 163 |
- <footer id="footer" class="footer"> |
|
| 164 |
- <div class="row"> |
|
| 165 |
- <div class="span12 social"> |
|
| 166 |
- |
|
| 167 |
- Docker is a project by <a href="http://www.dotcloud.com">dotCloud</a> |
|
| 168 |
- |
|
| 169 |
- </div> |
|
| 170 |
- </div> |
|
| 171 |
- |
|
| 172 |
- <div class="row"> |
|
| 173 |
- <div class="emptyspace" style="height: 40px"> |
|
| 174 |
- |
|
| 175 |
- </div> |
|
| 176 |
- </div> |
|
| 177 |
- |
|
| 178 |
- </footer> |
|
| 179 |
-</div> |
|
| 180 |
- |
|
| 181 |
- |
|
| 182 |
-<!-- bootstrap javascipts --> |
|
| 183 |
-<script src="_static/js/vendor/bootstrap.min.js" type="text/javascript"></script> |
|
| 184 |
- |
|
| 185 |
-<!-- Google analytics --> |
|
| 186 |
-<script type="text/javascript"> |
|
| 187 |
- |
|
| 188 |
- var _gaq = _gaq || []; |
|
| 189 |
- _gaq.push(['_setAccount', 'UA-6096819-11']); |
|
| 190 |
- _gaq.push(['_setDomainName', 'docker.io']); |
|
| 191 |
- _gaq.push(['_setAllowLinker', true]); |
|
| 192 |
- _gaq.push(['_trackPageview']); |
|
| 193 |
- |
|
| 194 |
- (function() {
|
|
| 195 |
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
|
| 196 |
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
|
| 197 |
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
|
| 198 |
- })(); |
|
| 199 |
- |
|
| 200 |
-</script> |
|
| 201 |
- |
|
| 202 |
- |
|
| 203 |
-</body> |
|
| 204 |
-</html> |
| 205 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,204 @@ |
| 0 |
+<!DOCTYPE html> |
|
| 1 |
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> |
|
| 2 |
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> |
|
| 3 |
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> |
|
| 4 |
+<!--[if gt IE 8]><!--> |
|
| 5 |
+<html class="no-js" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"> <!--<![endif]--> |
|
| 6 |
+<head> |
|
| 7 |
+ <meta charset="utf-8"> |
|
| 8 |
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
|
| 9 |
+ <title>Docker - the Linux container runtime</title> |
|
| 10 |
+ |
|
| 11 |
+ <meta name="description" content="Docker encapsulates heterogeneous payloads in standard containers"> |
|
| 12 |
+ <meta name="viewport" content="width=device-width"> |
|
| 13 |
+ |
|
| 14 |
+ <!-- twitter bootstrap --> |
|
| 15 |
+ <link rel="stylesheet" href="../_static/css/bootstrap.min.css"> |
|
| 16 |
+ <link rel="stylesheet" href="../_static/css/bootstrap-responsive.min.css"> |
|
| 17 |
+ |
|
| 18 |
+ <!-- main style file --> |
|
| 19 |
+ <link rel="stylesheet" href="../_static/css/main.css"> |
|
| 20 |
+ |
|
| 21 |
+ <!-- vendor scripts --> |
|
| 22 |
+ <script src="../_static/js/vendor/jquery-1.9.1.min.js" type="text/javascript" ></script> |
|
| 23 |
+ <script src="../_static/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js" type="text/javascript" ></script> |
|
| 24 |
+ |
|
| 25 |
+</head> |
|
| 26 |
+ |
|
| 27 |
+ |
|
| 28 |
+<body> |
|
| 29 |
+ |
|
| 30 |
+<div class="navbar navbar-fixed-top"> |
|
| 31 |
+ <div class="navbar-dotcloud"> |
|
| 32 |
+ <div class="container" style="text-align: center;"> |
|
| 33 |
+ |
|
| 34 |
+ <div style="float: right" class="pull-right"> |
|
| 35 |
+ <ul class="nav"> |
|
| 36 |
+ <li><a href="../">Introduction</a></li> |
|
| 37 |
+ <li class="active"><a href="./">Getting started</a></li> |
|
| 38 |
+ <li class=""><a href="http://docs.docker.io/en/latest/concepts/containers/">Documentation</a></li> |
|
| 39 |
+ </ul> |
|
| 40 |
+ |
|
| 41 |
+ <div class="social links" style="float: right; margin-top: 14px; margin-left: 12px"> |
|
| 42 |
+ <a class="twitter" href="http://twitter.com/getdocker">Twitter</a> |
|
| 43 |
+ <a class="github" href="https://github.com/dotcloud/docker/">GitHub</a> |
|
| 44 |
+ </div> |
|
| 45 |
+ </div> |
|
| 46 |
+ |
|
| 47 |
+ <div style="margin-left: -12px; float: left;"> |
|
| 48 |
+ <a href="../index.html"><img style="margin-top: 12px; height: 38px" src="../_static/img/docker-letters-logo.gif"></a> |
|
| 49 |
+ </div> |
|
| 50 |
+ </div> |
|
| 51 |
+ </div> |
|
| 52 |
+</div> |
|
| 53 |
+ |
|
| 54 |
+ |
|
| 55 |
+<div class="container"> |
|
| 56 |
+ <div class="row"> |
|
| 57 |
+ <div class="span12 titlebar"><h1 class="pageheader">GETTING STARTED</h1> |
|
| 58 |
+ </div> |
|
| 59 |
+ </div> |
|
| 60 |
+ |
|
| 61 |
+</div> |
|
| 62 |
+ |
|
| 63 |
+<div class="container"> |
|
| 64 |
+ <div class="alert alert-info"> |
|
| 65 |
+ <strong>Docker is still under heavy development.</strong> It should not yet be used in production. Check <a href="http://github.com/dotcloud/docker">the repo</a> for recent progress. |
|
| 66 |
+ </div> |
|
| 67 |
+ <div class="row"> |
|
| 68 |
+ <div class="span6"> |
|
| 69 |
+ <section class="contentblock"> |
|
| 70 |
+ <h2> |
|
| 71 |
+ <a name="installing-on-ubuntu-1204-and-1210" class="anchor" href="#installing-on-ubuntu-1204-and-1210"><span class="mini-icon mini-icon-link"></span> |
|
| 72 |
+ </a>Installing on Ubuntu</h2> |
|
| 73 |
+ <ol> |
|
| 74 |
+ <li> |
|
| 75 |
+ <p>Install dependencies:</p> |
|
| 76 |
+ |
|
| 77 |
+ <div class="highlight"> |
|
| 78 |
+ <pre>sudo apt-get install lxc wget bsdtar curl</pre> |
|
| 79 |
+ <pre>sudo apt-get install linux-image-extra-<span class="sb">`</span>uname -r<span class="sb">`</span></pre></div> |
|
| 80 |
+ |
|
| 81 |
+ <p>The <code>linux-image-extra</code> package is needed on standard Ubuntu EC2 AMIs in order to install the aufs kernel module.</p> |
|
| 82 |
+ </li> |
|
| 83 |
+ <li> |
|
| 84 |
+ <p>Install the latest docker binary:</p> |
|
| 85 |
+ |
|
| 86 |
+ <div class="highlight"> |
|
| 87 |
+ <pre>wget http://get.docker.io/builds/<span class="k">$(</span>uname -s<span class="k">)</span>/<span class="k">$(</span>uname -m<span class="k">)</span>/docker-master.tgz</pre> |
|
| 88 |
+ <pre>tar -xf docker-master.tgz</pre> |
|
| 89 |
+ </div> |
|
| 90 |
+ </li> |
|
| 91 |
+ <li> |
|
| 92 |
+ <p>Run your first container!</p> |
|
| 93 |
+ |
|
| 94 |
+ <div class="highlight"><pre><span class="nb">cd </span>docker-master</pre> |
|
| 95 |
+ <pre>sudo ./docker run -i -t base /bin/bash</pre> |
|
| 96 |
+ </div> |
|
| 97 |
+ <p>Done!</p> |
|
| 98 |
+ <p>Consider adding docker to your <code>PATH</code> for simplicity.</p> |
|
| 99 |
+ </li> |
|
| 100 |
+ |
|
| 101 |
+ Continue with the <a href="examples/hello_world.html#hello-world">Hello world</a> example. |
|
| 102 |
+ </ol> |
|
| 103 |
+ </section> |
|
| 104 |
+ |
|
| 105 |
+ <section class="contentblock"> |
|
| 106 |
+ <h2>Contributing to Docker</h2> |
|
| 107 |
+ |
|
| 108 |
+ <p>Want to hack on Docker? Awesome! We have some <a href="/documentation/contributing/contributing.html">instructions to get you started</a>. They are probably not perfect, please let us know if anything feels wrong or incomplete.</p> |
|
| 109 |
+ </section> |
|
| 110 |
+ |
|
| 111 |
+ </div> |
|
| 112 |
+ <div class="span6"> |
|
| 113 |
+ <section class="contentblock"> |
|
| 114 |
+ <h2>Quick install on other operating systems</h2> |
|
| 115 |
+ <p><strong>For other operating systems we recommend and provide a streamlined install with virtualbox, |
|
| 116 |
+ vagrant and an Ubuntu virtual machine.</strong></p> |
|
| 117 |
+ |
|
| 118 |
+ <ul> |
|
| 119 |
+ <li><a href="installation/macos.html">Mac OS X and other linuxes</a></li> |
|
| 120 |
+ <li><a href="installation/windows.html">Windows</a></li> |
|
| 121 |
+ </ul> |
|
| 122 |
+ |
|
| 123 |
+ </section> |
|
| 124 |
+ |
|
| 125 |
+ <section class="contentblock"> |
|
| 126 |
+ <h2>More resources</h2> |
|
| 127 |
+ <ul> |
|
| 128 |
+ <li><a href="irc://chat.freenode.net#docker">IRC: docker on freenode</a></li> |
|
| 129 |
+ <li><a href="http://www.github.com/dotcloud/docker">Github</a></li> |
|
| 130 |
+ <li><a href="http://stackoverflow.com/tags/docker/">Ask questions on Stackoverflow</a></li> |
|
| 131 |
+ <li><a href="http://twitter.com/getdocker/">Join the conversation on Twitter</a></li> |
|
| 132 |
+ </ul> |
|
| 133 |
+ </section> |
|
| 134 |
+ |
|
| 135 |
+ |
|
| 136 |
+ <section class="contentblock"> |
|
| 137 |
+ <div id="wufoo-z7x3p3"> |
|
| 138 |
+ Fill out my <a href="http://dotclouddocker.wufoo.com/forms/z7x3p3">online form</a>. |
|
| 139 |
+ </div> |
|
| 140 |
+ <script type="text/javascript">var z7x3p3;(function(d, t) {
|
|
| 141 |
+ var s = d.createElement(t), options = {
|
|
| 142 |
+ 'userName':'dotclouddocker', |
|
| 143 |
+ 'formHash':'z7x3p3', |
|
| 144 |
+ 'autoResize':true, |
|
| 145 |
+ 'height':'577', |
|
| 146 |
+ 'async':true, |
|
| 147 |
+ 'header':'show'}; |
|
| 148 |
+ s.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + 'wufoo.com/scripts/embed/form.js';
|
|
| 149 |
+ s.onload = s.onreadystatechange = function() {
|
|
| 150 |
+ var rs = this.readyState; if (rs) if (rs != 'complete') if (rs != 'loaded') return; |
|
| 151 |
+ try { z7x3p3 = new WufooForm();z7x3p3.initialize(options);z7x3p3.display(); } catch (e) {}};
|
|
| 152 |
+ var scr = d.getElementsByTagName(t)[0], par = scr.parentNode; par.insertBefore(s, scr); |
|
| 153 |
+ })(document, 'script');</script> |
|
| 154 |
+ </section> |
|
| 155 |
+ |
|
| 156 |
+ </div> |
|
| 157 |
+ </div> |
|
| 158 |
+</div> |
|
| 159 |
+ |
|
| 160 |
+ |
|
| 161 |
+<div class="container"> |
|
| 162 |
+ <footer id="footer" class="footer"> |
|
| 163 |
+ <div class="row"> |
|
| 164 |
+ <div class="span12 social"> |
|
| 165 |
+ |
|
| 166 |
+ Docker is a project by <a href="http://www.dotcloud.com">dotCloud</a> |
|
| 167 |
+ |
|
| 168 |
+ </div> |
|
| 169 |
+ </div> |
|
| 170 |
+ |
|
| 171 |
+ <div class="row"> |
|
| 172 |
+ <div class="emptyspace" style="height: 40px"> |
|
| 173 |
+ |
|
| 174 |
+ </div> |
|
| 175 |
+ </div> |
|
| 176 |
+ |
|
| 177 |
+ </footer> |
|
| 178 |
+</div> |
|
| 179 |
+ |
|
| 180 |
+ |
|
| 181 |
+<!-- bootstrap javascipts --> |
|
| 182 |
+<script src="../_static/js/vendor/bootstrap.min.js" type="text/javascript"></script> |
|
| 183 |
+ |
|
| 184 |
+<!-- Google analytics --> |
|
| 185 |
+<script type="text/javascript"> |
|
| 186 |
+ |
|
| 187 |
+ var _gaq = _gaq || []; |
|
| 188 |
+ _gaq.push(['_setAccount', 'UA-6096819-11']); |
|
| 189 |
+ _gaq.push(['_setDomainName', 'docker.io']); |
|
| 190 |
+ _gaq.push(['_setAllowLinker', true]); |
|
| 191 |
+ _gaq.push(['_trackPageview']); |
|
| 192 |
+ |
|
| 193 |
+ (function() {
|
|
| 194 |
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
|
| 195 |
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
|
| 196 |
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
|
| 197 |
+ })(); |
|
| 198 |
+ |
|
| 199 |
+</script> |
|
| 200 |
+ |
|
| 201 |
+ |
|
| 202 |
+</body> |
|
| 203 |
+</html> |
| ... | ... |
@@ -23,8 +23,6 @@ |
| 23 | 23 |
<script src="_static/js/vendor/jquery-1.9.1.min.js" type="text/javascript" ></script> |
| 24 | 24 |
<script src="_static/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js" type="text/javascript" ></script> |
| 25 | 25 |
|
| 26 |
- |
|
| 27 |
- |
|
| 28 | 26 |
</head> |
| 29 | 27 |
|
| 30 | 28 |
|
| ... | ... |
@@ -36,9 +34,9 @@ |
| 36 | 36 |
|
| 37 | 37 |
<div class="pull-right" > |
| 38 | 38 |
<ul class="nav"> |
| 39 |
- <li class="active"><a href="index.html">Introduction</a></li> |
|
| 40 |
- <li ><a href="gettingstarted.html">Getting started</a></li> |
|
| 41 |
- <li class=""><a href="documentation/concepts/containers.html">Documentation</a></li> |
|
| 39 |
+ <li class="active"><a href="./">Introduction</a></li> |
|
| 40 |
+ <li ><a href="gettingstarted/">Getting started</a></li> |
|
| 41 |
+ <li class=""><a href="http://docs.docker.io/en/latest/concepts/containers/">Documentation</a></li> |
|
| 42 | 42 |
</ul> |
| 43 | 43 |
|
| 44 | 44 |
<div class="social links" style="float: right; margin-top: 14px; margin-left: 12px"> |
| ... | ... |
@@ -89,7 +87,7 @@ |
| 89 | 89 |
|
| 90 | 90 |
|
| 91 | 91 |
<div style="display: block; text-align: center;"> |
| 92 |
- <a class="btn btn-custom btn-large" href="gettingstarted.html">Let's get started</a> |
|
| 92 |
+ <a class="btn btn-custom btn-large" href="gettingstarted/index.html">Let's get started</a> |
|
| 93 | 93 |
</div> |
| 94 | 94 |
|
| 95 | 95 |
|
| ... | ... |
@@ -1,16 +1,18 @@ |
| 1 |
-Guides index |
|
| 2 |
-============ |
|
| 1 |
+:title: docker documentation |
|
| 2 |
+:description: docker documentation |
|
| 3 |
+:keywords: |
|
| 3 | 4 |
|
| 4 |
-Contents: |
|
| 5 |
+Documentation |
|
| 6 |
+============= |
|
| 7 |
+ |
|
| 8 |
+This documentation has the following resources: |
|
| 5 | 9 |
|
| 6 | 10 |
.. toctree:: |
| 7 | 11 |
:maxdepth: 1 |
| 8 | 12 |
|
| 9 |
- documentation/concepts/index |
|
| 10 |
- documentation/installation/index |
|
| 11 |
- documentation/examples/index |
|
| 12 |
- documentation/contributing/index |
|
| 13 |
- documentation/commandline/index |
|
| 14 |
- documentation/faq |
|
| 15 |
- |
|
| 16 |
-The source page should also have some content. Otherwise it is just an index. |
|
| 17 | 13 |
\ No newline at end of file |
| 14 |
+ concepts/index |
|
| 15 |
+ installation/index |
|
| 16 |
+ examples/index |
|
| 17 |
+ contributing/index |
|
| 18 |
+ commandline/index |
|
| 19 |
+ faq |
|
| 18 | 20 |
\ No newline at end of file |
| 19 | 21 |
deleted file mode 100644 |
| ... | ... |
@@ -1,245 +0,0 @@ |
| 1 |
-<!DOCTYPE html> |
|
| 2 |
-<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> |
|
| 3 |
-<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> |
|
| 4 |
-<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> |
|
| 5 |
-<!--[if gt IE 8]><!--> |
|
| 6 |
-<html class="no-js" xmlns="http://www.w3.org/1999/html"> <!--<![endif]--> |
|
| 7 |
-<head> |
|
| 8 |
- <meta charset="utf-8"> |
|
| 9 |
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
|
| 10 |
- <title>Docker - the Linux container runtime</title> |
|
| 11 |
- |
|
| 12 |
- <meta name="description" content="Docker encapsulates heterogeneous payloads in standard containers"> |
|
| 13 |
- <meta name="viewport" content="width=device-width"> |
|
| 14 |
- |
|
| 15 |
- <!-- twitter bootstrap --> |
|
| 16 |
- <link rel="stylesheet" href="_static/css/bootstrap.min.css"> |
|
| 17 |
- <link rel="stylesheet" href="_static/css/bootstrap-responsive.min.css"> |
|
| 18 |
- |
|
| 19 |
- <!-- main style file --> |
|
| 20 |
- <link rel="stylesheet" href="_static/css/main.css"> |
|
| 21 |
- |
|
| 22 |
- <!-- vendor scripts --> |
|
| 23 |
- <script src="_static/js/vendor/jquery-1.9.1.min.js" type="text/javascript" ></script> |
|
| 24 |
- <script src="_static/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js" type="text/javascript" ></script> |
|
| 25 |
- |
|
| 26 |
-</head> |
|
| 27 |
- |
|
| 28 |
- |
|
| 29 |
-<body> |
|
| 30 |
- |
|
| 31 |
- |
|
| 32 |
-<div class="navbar navbar-fixed-top"> |
|
| 33 |
- <div class="navbar-dotcloud"> |
|
| 34 |
- <div class="container"> |
|
| 35 |
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> |
|
| 36 |
- <span class="icon-bar"></span> |
|
| 37 |
- <span class="icon-bar"></span> |
|
| 38 |
- <span class="icon-bar"></span> |
|
| 39 |
- </a> |
|
| 40 |
- <a class="brand" href="#"></a> |
|
| 41 |
- <div class="nav-collapse collapse"> |
|
| 42 |
- <ul class="nav pull-right"> |
|
| 43 |
- <li><a href="#">Introduction</a></li> |
|
| 44 |
- <li class=""><a href="usage/concepts/docker.html">Usage</a></li> |
|
| 45 |
- <li><a href="gettingstarted.html">About</a></li> |
|
| 46 |
- |
|
| 47 |
- </ul> |
|
| 48 |
- |
|
| 49 |
- </div><!--/.nav-collapse --> |
|
| 50 |
- </div> |
|
| 51 |
- </div> |
|
| 52 |
-</div> |
|
| 53 |
- |
|
| 54 |
- |
|
| 55 |
-<div class="container"> |
|
| 56 |
- <div class="row"> |
|
| 57 |
- <div class="text-center"> |
|
| 58 |
- <img src="_static/img/docker-letters-logo.gif"> |
|
| 59 |
- </div> |
|
| 60 |
- </div> |
|
| 61 |
-</div> |
|
| 62 |
- |
|
| 63 |
-<div class="container"> |
|
| 64 |
- <div class="row"> |
|
| 65 |
- |
|
| 66 |
- <div class="span9"> |
|
| 67 |
- <section class="contentblock"> |
|
| 68 |
- |
|
| 69 |
- <h1>Docker - the Linux container runtime</h1> |
|
| 70 |
- |
|
| 71 |
- <p>Docker encapsulates heterogeneous payloads in <a href="#container">Standard Containers</a>, and runs them on any server with strong guarantees of isolation and repeatability.</p> |
|
| 72 |
- |
|
| 73 |
- <p>It is a great building block for automating distributed systems: large-scale web deployments, database clusters, continuous deployment systems, private PaaS, service-oriented architectures, etc.</p> |
|
| 74 |
- |
|
| 75 |
- <ul> |
|
| 76 |
- <li><em>Heterogeneous payloads</em>: any combination of binaries, libraries, configuration files, scripts, virtualenvs, jars, gems, tarballs, you name it. No more juggling between domain-specific tools. Docker can deploy and run them all.</li> |
|
| 77 |
- <li><em>Any server</em>: docker can run on any x64 machine with a modern linux kernel - whether it's a laptop, a bare metal server or a VM. This makes it perfect for multi-cloud deployments.</li> |
|
| 78 |
- <li><em>Isolation</em>: docker isolates processes from each other and from the underlying host, using lightweight containers. </li> |
|
| 79 |
- <li><em>Repeatability</em>: because containers are isolated in their own filesystem, they behave the same regardless of where, when, and alongside what they run.</li> |
|
| 80 |
- </ul> |
|
| 81 |
- </section> |
|
| 82 |
- </div> |
|
| 83 |
- |
|
| 84 |
- <div class="span3"> |
|
| 85 |
- <section class="contentblock"> |
|
| 86 |
- <h4>Docker will be open source soon</h4> |
|
| 87 |
- <br> |
|
| 88 |
- <div id="wufoo-z7x3p3"> |
|
| 89 |
- Fill out my <a href="http://dotclouddocker.wufoo.com/forms/z7x3p3">online form</a>. |
|
| 90 |
- </div> |
|
| 91 |
- <script type="text/javascript">var z7x3p3;(function(d, t) {
|
|
| 92 |
- var s = d.createElement(t), options = {
|
|
| 93 |
- 'userName':'dotclouddocker', |
|
| 94 |
- 'formHash':'z7x3p3', |
|
| 95 |
- 'autoResize':true, |
|
| 96 |
- 'height':'577', |
|
| 97 |
- 'async':true, |
|
| 98 |
- 'header':'show'}; |
|
| 99 |
- s.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + 'wufoo.com/scripts/embed/form.js';
|
|
| 100 |
- s.onload = s.onreadystatechange = function() {
|
|
| 101 |
- var rs = this.readyState; if (rs) if (rs != 'complete') if (rs != 'loaded') return; |
|
| 102 |
- try { z7x3p3 = new WufooForm();z7x3p3.initialize(options);z7x3p3.display(); } catch (e) {}};
|
|
| 103 |
- var scr = d.getElementsByTagName(t)[0], par = scr.parentNode; par.insertBefore(s, scr); |
|
| 104 |
- })(document, 'script');</script> |
|
| 105 |
- |
|
| 106 |
- <a href="#twitter"><img src="_static/img/twitter.png"> Follow us on Twitter</a> |
|
| 107 |
- </section> |
|
| 108 |
- </div> |
|
| 109 |
- |
|
| 110 |
- |
|
| 111 |
- <div class="span12"> |
|
| 112 |
- |
|
| 113 |
- <section class="contentblock"> |
|
| 114 |
- |
|
| 115 |
- <img src="_static/lego_docker.jpg" width="600px" style="float:right; margin-left: 10px"> |
|
| 116 |
- <h2>Notable features</h2> |
|
| 117 |
- |
|
| 118 |
- <ul> |
|
| 119 |
- <li>Filesystem isolation: each process container runs in a completely separate root filesystem.</li> |
|
| 120 |
- <li>Resource isolation: system resources like cpu and memory can be allocated differently to each process container, using cgroups.</li> |
|
| 121 |
- <li>Network isolation: each process container runs in its own network namespace, with a virtual interface and IP address of its own.</li> |
|
| 122 |
- <li>Copy-on-write: root filesystems are created using copy-on-write, which makes deployment extremeley fast, memory-cheap and disk-cheap.</li> |
|
| 123 |
- <li>Logging: the standard streams (stdout/stderr/stdin) of each process container is collected and logged for real-time or batch retrieval.</li> |
|
| 124 |
- <li>Change management: changes to a container's filesystem can be committed into a new image and re-used to create more containers. No templating or manual configuration required.</li> |
|
| 125 |
- <li>Interactive shell: docker can allocate a pseudo-tty and attach to the standard input of any container, for example to run a throwaway interactive shell.</li> |
|
| 126 |
- </ul> |
|
| 127 |
- |
|
| 128 |
- <h2>Under the hood</h2> |
|
| 129 |
- |
|
| 130 |
- <p>Under the hood, Docker is built on the following components:</p> |
|
| 131 |
- |
|
| 132 |
- <ul> |
|
| 133 |
- <li>The <a href="http://blog.dotcloud.com/kernel-secrets-from-the-paas-garage-part-24-c">cgroup</a> and <a href="http://blog.dotcloud.com/under-the-hood-linux-kernels-on-dotcloud-part">namespacing</a> capabilities of the Linux kernel;</li> |
|
| 134 |
- <li><a href="http://aufs.sourceforge.net/aufs.html">AUFS</a>, a powerful union filesystem with copy-on-write capabilities;</li> |
|
| 135 |
- <li>The <a href="http://golang.org">Go</a> programming language;</li> |
|
| 136 |
- <li><a href="http://lxc.sourceforge.net/">lxc</a>, a set of convenience scripts to simplify the creation of linux containers.</li> |
|
| 137 |
- </ul> |
|
| 138 |
- |
|
| 139 |
- </section> |
|
| 140 |
- </div> |
|
| 141 |
- </div> |
|
| 142 |
- |
|
| 143 |
- <div class="row"> |
|
| 144 |
- <div class="span12"> |
|
| 145 |
- <section id="container" class="contentblock"> |
|
| 146 |
- |
|
| 147 |
- |
|
| 148 |
- <h1>What is a Standard Container?</h1> |
|
| 149 |
- |
|
| 150 |
- |
|
| 151 |
- <p>Docker defines a unit of software delivery called a Standard Container. The goal of a Standard Container is to encapsulate a software component and all its dependencies in |
|
| 152 |
- a format that is self-describing and portable, so that any compliant runtime can run it without extra dependency, regardless of the underlying machine and the contents of the container.</p> |
|
| 153 |
- |
|
| 154 |
- <p>The spec for Standard Containers is currently work in progress, but it is very straightforward. It mostly defines 1) an image format, 2) a set of standard operations, and 3) an execution environment.</p> |
|
| 155 |
- |
|
| 156 |
- <p>A great analogy for this is the shipping container. Just like Standard Containers are a fundamental unit of software delivery, shipping containers (http://bricks.argz.com/ins/7823-1/12) are a fundamental unit of physical delivery.</p> |
|
| 157 |
- |
|
| 158 |
- <h3>1. STANDARD OPERATIONS</h3> |
|
| 159 |
- |
|
| 160 |
- <p>Just like shipping containers, Standard Containers define a set of STANDARD OPERATIONS. Shipping containers can be lifted, stacked, locked, loaded, unloaded and labelled. Similarly, standard containers can be started, stopped, copied, snapshotted, downloaded, uploaded and tagged.</p> |
|
| 161 |
- |
|
| 162 |
- <h3>2. CONTENT-AGNOSTIC</h3> |
|
| 163 |
- |
|
| 164 |
- <p>Just like shipping containers, Standard Containers are CONTENT-AGNOSTIC: all standard operations have the same effect regardless of the contents. A shipping container will be stacked in exactly the same way whether it contains Vietnamese powder coffe or spare Maserati parts. Similarly, Standard Containers are started or uploaded in the same way whether they contain a postgres database, a php application with its dependencies and application server, or Java build artifacts.</p> |
|
| 165 |
- |
|
| 166 |
- <h3>3. INFRASTRUCTURE-AGNOSTIC</h3> |
|
| 167 |
- |
|
| 168 |
- <p>Both types of containers are INFRASTRUCTURE-AGNOSTIC: they can be transported to thousands of facilities around the world, and manipulated by a wide variety of equipment. A shipping container can be packed in a factory in Ukraine, transported by truck to the nearest routing center, stacked onto a train, loaded into a German boat by an Australian-built crane, stored in a warehouse at a US facility, etc. Similarly, a standard container can be bundled on my laptop, uploaded to S3, downloaded, run and snapshotted by a build server at Equinix in Virginia, uploaded to 10 staging servers in a home-made Openstack cluster, then sent to 30 production instances across 3 EC2 regions.</p> |
|
| 169 |
- |
|
| 170 |
- <h3>4. DESIGNED FOR AUTOMATION</h3> |
|
| 171 |
- |
|
| 172 |
- <p>Because they offer the same standard operations regardless of content and infrastructure, Standard Containers, just like their physical counterpart, are extremely well-suited for automation. In fact, you could say automation is their secret weapon.</p> |
|
| 173 |
- |
|
| 174 |
- <p>Many things that once required time-consuming and error-prone human effort can now be programmed. Before shipping containers, a bag of powder coffee was hauled, dragged, dropped, rolled and stacked by 10 different people in 10 different locations by the time it reached its destination. 1 out of 50 disappeared. 1 out of 20 was damaged. The process was slow, inefficient and cost a fortune - and was entirely different depending on the facility and the type of goods.</p> |
|
| 175 |
- |
|
| 176 |
- <p>Similarly, before Standard Containers, by the time a software component ran in production, it had been individually built, configured, bundled, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers. Builds failed, libraries conflicted, mirrors crashed, post-it notes were lost, logs were misplaced, cluster updates were half-broken. The process was slow, inefficient and cost a fortune - and was entirely different depending on the language and infrastructure provider.</p> |
|
| 177 |
- |
|
| 178 |
- <h3>5. INDUSTRIAL-GRADE DELIVERY</h3> |
|
| 179 |
- |
|
| 180 |
- <p>There are 17 million shipping containers in existence, packed with every physical good imaginable. Every single one of them can be loaded on the same boats, by the same cranes, in the same facilities, and sent anywhere in the World with incredible efficiency. It is embarrassing to think that a 30 ton shipment of coffee can safely travel half-way across the World in <em>less time</em> than it takes a software team to deliver its code from one datacenter to another sitting 10 miles away.</p> |
|
| 181 |
- |
|
| 182 |
- <p>With Standard Containers we can put an end to that embarrassment, by making INDUSTRIAL-GRADE DELIVERY of software a reality.</p> |
|
| 183 |
- </section> |
|
| 184 |
- </div> |
|
| 185 |
- </div> |
|
| 186 |
- |
|
| 187 |
- <div class="row"> |
|
| 188 |
- <div class="span6"> |
|
| 189 |
- <section class="contentblock"> |
|
| 190 |
- <h3 id="twitter">Twitter</h3> |
|
| 191 |
- <a class="twitter-timeline" href="https://twitter.com/getdocker" data-widget-id="312730839718957056">Tweets by @getdocker</a> |
|
| 192 |
- <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
|
| 193 |
- </section> |
|
| 194 |
- </div> |
|
| 195 |
- |
|
| 196 |
- </div> <!-- end row --> |
|
| 197 |
- |
|
| 198 |
- |
|
| 199 |
- |
|
| 200 |
- |
|
| 201 |
- |
|
| 202 |
-</div> <!-- end container --> |
|
| 203 |
- |
|
| 204 |
- |
|
| 205 |
- |
|
| 206 |
- |
|
| 207 |
-<hr> |
|
| 208 |
-<footer> |
|
| 209 |
- <div class="row"> |
|
| 210 |
- <div class="text-center"> |
|
| 211 |
- Docker is a project by <a href="http://www.dotcloud.com">dotCloud</a>. When released, find us on <a href="http://github.com/dotcloud/docker/">Github</a> |
|
| 212 |
- </div> |
|
| 213 |
- </div> |
|
| 214 |
- |
|
| 215 |
- <div class="row"> |
|
| 216 |
- <div class="emptyspace" style="height: 40px"> |
|
| 217 |
- |
|
| 218 |
- </div> |
|
| 219 |
- </div> |
|
| 220 |
- |
|
| 221 |
-</footer> |
|
| 222 |
- |
|
| 223 |
-<!-- bootstrap javascipts --> |
|
| 224 |
-<script src="js/vendor/bootstrap.min.js" type="text/javascript"></script> |
|
| 225 |
- |
|
| 226 |
-<!-- Google analytics --> |
|
| 227 |
-<script type="text/javascript"> |
|
| 228 |
- |
|
| 229 |
- var _gaq = _gaq || []; |
|
| 230 |
- _gaq.push(['_setAccount', 'UA-6096819-11']); |
|
| 231 |
- _gaq.push(['_setDomainName', 'docker.io']); |
|
| 232 |
- _gaq.push(['_setAllowLinker', true]); |
|
| 233 |
- _gaq.push(['_trackPageview']); |
|
| 234 |
- |
|
| 235 |
- (function() {
|
|
| 236 |
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
|
| 237 |
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
|
| 238 |
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
|
| 239 |
- })(); |
|
| 240 |
- |
|
| 241 |
-</script> |
|
| 242 |
- |
|
| 243 |
- |
|
| 244 |
-</body> |
|
| 245 |
-</html> |
| 246 | 1 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,87 @@ |
| 0 |
+Amazon EC2 |
|
| 1 |
+========== |
|
| 2 |
+ |
|
| 3 |
+ Please note this is a community contributed installation path. The only 'official' installation is using the :ref:`ubuntu_linux` installation path. This version |
|
| 4 |
+ may be out of date because it depends on some binaries to be updated and published |
|
| 5 |
+ |
|
| 6 |
+Installation |
|
| 7 |
+------------ |
|
| 8 |
+ |
|
| 9 |
+Docker can now be installed on Amazon EC2 with a single vagrant command. Vagrant 1.1 or higher is required. |
|
| 10 |
+ |
|
| 11 |
+1. Install vagrant from http://www.vagrantup.com/ (or use your package manager) |
|
| 12 |
+2. Install the vagrant aws plugin |
|
| 13 |
+ |
|
| 14 |
+ :: |
|
| 15 |
+ |
|
| 16 |
+ vagrant plugin install vagrant-aws |
|
| 17 |
+ |
|
| 18 |
+ |
|
| 19 |
+3. Get the docker sources, this will give you the latest Vagrantfile and puppet manifests. |
|
| 20 |
+ |
|
| 21 |
+ :: |
|
| 22 |
+ |
|
| 23 |
+ git clone https://github.com/dotcloud/docker.git |
|
| 24 |
+ |
|
| 25 |
+ |
|
| 26 |
+4. Check your AWS environment. |
|
| 27 |
+ |
|
| 28 |
+ Create a keypair specifically for EC2, give it a name and save it to your disk. *I usually store these in my ~/.ssh/ folder*. |
|
| 29 |
+ |
|
| 30 |
+ Check that your default security group has an inbound rule to accept SSH (port 22) connections. |
|
| 31 |
+ |
|
| 32 |
+ |
|
| 33 |
+ |
|
| 34 |
+5. Inform Vagrant of your settings |
|
| 35 |
+ |
|
| 36 |
+ Vagrant will read your access credentials from your environment, so we need to set them there first. Make sure |
|
| 37 |
+ you have everything on amazon aws setup so you can (manually) deploy a new image to EC2. |
|
| 38 |
+ |
|
| 39 |
+ :: |
|
| 40 |
+ |
|
| 41 |
+ export AWS_ACCESS_KEY_ID=xxx |
|
| 42 |
+ export AWS_SECRET_ACCESS_KEY=xxx |
|
| 43 |
+ export AWS_KEYPAIR_NAME=xxx |
|
| 44 |
+ export AWS_SSH_PRIVKEY=xxx |
|
| 45 |
+ |
|
| 46 |
+ The environment variables are: |
|
| 47 |
+ |
|
| 48 |
+ * ``AWS_ACCESS_KEY_ID`` - The API key used to make requests to AWS |
|
| 49 |
+ * ``AWS_SECRET_ACCESS_KEY`` - The secret key to make AWS API requests |
|
| 50 |
+ * ``AWS_KEYPAIR_NAME`` - The name of the keypair used for this EC2 instance |
|
| 51 |
+ * ``AWS_SSH_PRIVKEY`` - The path to the private key for the named keypair, for example ``~/.ssh/docker.pem`` |
|
| 52 |
+ |
|
| 53 |
+ You can check if they are set correctly by doing something like |
|
| 54 |
+ |
|
| 55 |
+ :: |
|
| 56 |
+ |
|
| 57 |
+ echo $AWS_ACCESS_KEY_ID |
|
| 58 |
+ |
|
| 59 |
+6. Do the magic! |
|
| 60 |
+ |
|
| 61 |
+ :: |
|
| 62 |
+ |
|
| 63 |
+ vagrant up --provider=aws |
|
| 64 |
+ |
|
| 65 |
+ |
|
| 66 |
+ If it stalls indefinitely on ``[default] Waiting for SSH to become available...``, Double check your default security |
|
| 67 |
+ zone on AWS includes rights to SSH (port 22) to your container. |
|
| 68 |
+ |
|
| 69 |
+ If you have an advanced AWS setup, you might want to have a look at the https://github.com/mitchellh/vagrant-aws |
|
| 70 |
+ |
|
| 71 |
+7. Connect to your machine |
|
| 72 |
+ |
|
| 73 |
+ .. code-block:: bash |
|
| 74 |
+ |
|
| 75 |
+ vagrant ssh |
|
| 76 |
+ |
|
| 77 |
+8. Your first command |
|
| 78 |
+ |
|
| 79 |
+ Now you are in the VM, run docker |
|
| 80 |
+ |
|
| 81 |
+ .. code-block:: bash |
|
| 82 |
+ |
|
| 83 |
+ docker |
|
| 84 |
+ |
|
| 85 |
+ |
|
| 86 |
+Continue with the :ref:`hello_world` example. |
|
| 0 | 87 |
\ No newline at end of file |
| 21 | 108 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,18 @@ |
| 0 |
+:title: docker documentation |
|
| 1 |
+:description: -- todo: change me |
|
| 2 |
+:keywords: todo: change me |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+Installation |
|
| 7 |
+============ |
|
| 8 |
+ |
|
| 9 |
+Contents: |
|
| 10 |
+ |
|
| 11 |
+.. toctree:: |
|
| 12 |
+ :maxdepth: 1 |
|
| 13 |
+ |
|
| 14 |
+ ubuntulinux |
|
| 15 |
+ macos |
|
| 16 |
+ windows |
|
| 17 |
+ amazon |
| 0 | 18 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,66 @@ |
| 0 |
+ |
|
| 1 |
+Mac OS X and other linux |
|
| 2 |
+======================== |
|
| 3 |
+ |
|
| 4 |
+ Please note this is a community contributed installation path. The only 'official' installation is using the :ref:`ubuntu_linux` installation path. This version |
|
| 5 |
+ may be out of date because it depends on some binaries to be updated and published |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+Requirements |
|
| 9 |
+------------ |
|
| 10 |
+ |
|
| 11 |
+We currently rely on some Ubuntu-linux specific packages, this will change in the future, but for now we provide a |
|
| 12 |
+streamlined path to install Virtualbox with a Ubuntu 12.10 image using Vagrant. |
|
| 13 |
+ |
|
| 14 |
+1. Install virtualbox from https://www.virtualbox.org/ (or use your package manager) |
|
| 15 |
+2. Install vagrant from http://www.vagrantup.com/ (or use your package manager) |
|
| 16 |
+3. Install git if you had not installed it before, check if it is installed by running |
|
| 17 |
+ ``git`` in a terminal window |
|
| 18 |
+ |
|
| 19 |
+We recommend having at least about 2Gb of free disk space and 2Gb RAM (or more). |
|
| 20 |
+ |
|
| 21 |
+Installation |
|
| 22 |
+------------ |
|
| 23 |
+ |
|
| 24 |
+1. Fetch the docker sources |
|
| 25 |
+ |
|
| 26 |
+.. code-block:: bash |
|
| 27 |
+ |
|
| 28 |
+ git clone https://github.com/dotcloud/docker.git |
|
| 29 |
+ |
|
| 30 |
+2. Run vagrant from the sources directory |
|
| 31 |
+ |
|
| 32 |
+.. code-block:: bash |
|
| 33 |
+ |
|
| 34 |
+ vagrant up |
|
| 35 |
+ |
|
| 36 |
+Vagrant will: |
|
| 37 |
+ |
|
| 38 |
+* Download the Quantal64 base ubuntu virtual machine image from get.docker.io/ |
|
| 39 |
+* Boot this image in virtualbox |
|
| 40 |
+ |
|
| 41 |
+Then it will use Puppet to perform an initial setup in this machine: |
|
| 42 |
+ |
|
| 43 |
+* Download & untar the most recent docker binary tarball to vagrant homedir. |
|
| 44 |
+* Debootstrap to /var/lib/docker/images/ubuntu. |
|
| 45 |
+* Install & run dockerd as service. |
|
| 46 |
+* Put docker in /usr/local/bin. |
|
| 47 |
+* Put latest Go toolchain in /usr/local/go. |
|
| 48 |
+ |
|
| 49 |
+You now have a Ubuntu Virtual Machine running with docker pre-installed. |
|
| 50 |
+ |
|
| 51 |
+To access the VM and use Docker, Run ``vagrant ssh`` from the same directory as where you ran |
|
| 52 |
+``vagrant up``. Vagrant will make sure to connect you to the correct VM. |
|
| 53 |
+ |
|
| 54 |
+.. code-block:: bash |
|
| 55 |
+ |
|
| 56 |
+ vagrant ssh |
|
| 57 |
+ |
|
| 58 |
+Now you are in the VM, run docker |
|
| 59 |
+ |
|
| 60 |
+.. code-block:: bash |
|
| 61 |
+ |
|
| 62 |
+ docker |
|
| 63 |
+ |
|
| 64 |
+ |
|
| 65 |
+Continue with the :ref:`hello_world` example. |
| 0 | 66 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,48 @@ |
| 0 |
+.. _ubuntu_linux: |
|
| 1 |
+ |
|
| 2 |
+Ubuntu Linux |
|
| 3 |
+============ |
|
| 4 |
+ |
|
| 5 |
+ **Please note this project is currently under heavy development. It should not be used in production.** |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+ |
|
| 9 |
+Installing on Ubuntu 12.04 and 12.10 |
|
| 10 |
+ |
|
| 11 |
+Right now, the officially supported distributions are: |
|
| 12 |
+ |
|
| 13 |
+Ubuntu 12.04 (precise LTS) |
|
| 14 |
+Ubuntu 12.10 (quantal) |
|
| 15 |
+Docker probably works on other distributions featuring a recent kernel, the AUFS patch, and up-to-date lxc. However this has not been tested. |
|
| 16 |
+ |
|
| 17 |
+Install dependencies: |
|
| 18 |
+--------------------- |
|
| 19 |
+ |
|
| 20 |
+:: |
|
| 21 |
+ |
|
| 22 |
+ sudo apt-get install lxc wget bsdtar curl |
|
| 23 |
+ sudo apt-get install linux-image-extra-`uname -r` |
|
| 24 |
+ |
|
| 25 |
+The linux-image-extra package is needed on standard Ubuntu EC2 AMIs in order to install the aufs kernel module. |
|
| 26 |
+ |
|
| 27 |
+Install the latest docker binary: |
|
| 28 |
+ |
|
| 29 |
+:: |
|
| 30 |
+ |
|
| 31 |
+ wget http://get.docker.io/builds/$(uname -s)/$(uname -m)/docker-master.tgz |
|
| 32 |
+ tar -xf docker-master.tgz |
|
| 33 |
+ |
|
| 34 |
+Run your first container! |
|
| 35 |
+ |
|
| 36 |
+:: |
|
| 37 |
+ |
|
| 38 |
+ cd docker-master |
|
| 39 |
+ |
|
| 40 |
+:: |
|
| 41 |
+ |
|
| 42 |
+ sudo ./docker run -i -t base /bin/bash |
|
| 43 |
+ |
|
| 44 |
+Consider adding docker to your PATH for simplicity. |
|
| 45 |
+ |
|
| 46 |
+ |
|
| 47 |
+Continue with the :ref:`hello_world` example. |
|
| 0 | 48 |
\ No newline at end of file |
| 1 | 49 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,167 @@ |
| 0 |
+:title: Requirements and Installation on Windows |
|
| 1 |
+:description: Docker's tutorial to run docker on Windows |
|
| 2 |
+:keywords: Docker, Docker documentation, Windows, requirements, virtualbox, vagrant, git, ssh, putty, cygwin |
|
| 3 |
+ |
|
| 4 |
+ |
|
| 5 |
+Windows |
|
| 6 |
+========= |
|
| 7 |
+ |
|
| 8 |
+ Please note this is a community contributed installation path. The only 'official' installation is using the :ref:`ubuntu_linux` installation path. This version |
|
| 9 |
+ may be out of date because it depends on some binaries to be updated and published |
|
| 10 |
+ |
|
| 11 |
+ |
|
| 12 |
+ |
|
| 13 |
+Requirements |
|
| 14 |
+------------ |
|
| 15 |
+ |
|
| 16 |
+1. Install virtualbox from https://www.virtualbox.org - or follow this tutorial__ |
|
| 17 |
+ |
|
| 18 |
+.. __: http://www.slideshare.net/julienbarbier42/install-virtualbox-on-windows-7 |
|
| 19 |
+ |
|
| 20 |
+2. Install vagrant from http://www.vagrantup.com - or follow this tutorial__ |
|
| 21 |
+ |
|
| 22 |
+.. __: http://www.slideshare.net/julienbarbier42/install-vagrant-on-windows-7 |
|
| 23 |
+ |
|
| 24 |
+3. Install git with ssh from http://git-scm.com/downloads - or follow this tutorial__ |
|
| 25 |
+ |
|
| 26 |
+.. __: http://www.slideshare.net/julienbarbier42/install-git-with-ssh-on-windows-7 |
|
| 27 |
+ |
|
| 28 |
+ |
|
| 29 |
+We recommend having at least 2Gb of free disk space and 2Gb of RAM (or more). |
|
| 30 |
+ |
|
| 31 |
+Opening a command prompt |
|
| 32 |
+------------------------ |
|
| 33 |
+ |
|
| 34 |
+First open a cmd prompt. Press Windows key and then press “R” key. This will open the RUN dialog box for you. Type “cmd” and press Enter. Or you can click on Start, type “cmd” in the “Search programs and files” field, and click on cmd.exe. |
|
| 35 |
+ |
|
| 36 |
+.. image:: images/win/_01.gif |
|
| 37 |
+ :alt: Git install |
|
| 38 |
+ :align: center |
|
| 39 |
+ |
|
| 40 |
+This should open a cmd prompt window. |
|
| 41 |
+ |
|
| 42 |
+.. image:: images/win/_02.gif |
|
| 43 |
+ :alt: run docker |
|
| 44 |
+ :align: center |
|
| 45 |
+ |
|
| 46 |
+Alternatively, you can also use a Cygwin terminal, or Git Bash (or any other command line program you are usually using). The next steps would be the same. |
|
| 47 |
+ |
|
| 48 |
+Launch an Ubuntu virtual server |
|
| 49 |
+------------------------------- |
|
| 50 |
+ |
|
| 51 |
+Let’s download and run an Ubuntu image with docker binaries already installed. |
|
| 52 |
+ |
|
| 53 |
+.. code-block:: bash |
|
| 54 |
+ |
|
| 55 |
+ git clone https://github.com/dotcloud/docker.git |
|
| 56 |
+ cd docker |
|
| 57 |
+ vagrant up |
|
| 58 |
+ |
|
| 59 |
+.. image:: images/win/run_02_.gif |
|
| 60 |
+ :alt: run docker |
|
| 61 |
+ :align: center |
|
| 62 |
+ |
|
| 63 |
+Congratulations! You are running an Ubuntu server with docker installed on it. You do not see it though, because it is running in the background. |
|
| 64 |
+ |
|
| 65 |
+Log onto your Ubuntu server |
|
| 66 |
+--------------------------- |
|
| 67 |
+ |
|
| 68 |
+Let’s log into your Ubuntu server now. To do so you have two choices: |
|
| 69 |
+ |
|
| 70 |
+- Use Vagrant on Windows command prompt OR |
|
| 71 |
+- Use SSH |
|
| 72 |
+ |
|
| 73 |
+Using Vagrant on Windows Command Prompt |
|
| 74 |
+``````````````````````````````````````` |
|
| 75 |
+ |
|
| 76 |
+Run the following command |
|
| 77 |
+ |
|
| 78 |
+.. code-block:: bash |
|
| 79 |
+ |
|
| 80 |
+ vagrant ssh |
|
| 81 |
+ |
|
| 82 |
+You may see an error message starting with “`ssh` executable not found”. In this case it means that you do not have SSH in your PATH. If you do not have SSH in your PATH you can set it up with the “set” command. For instance, if your ssh.exe is in the folder named “C:\Program Files (x86)\Git\bin”, then you can run the following command: |
|
| 83 |
+ |
|
| 84 |
+.. code-block:: bash |
|
| 85 |
+ |
|
| 86 |
+ set PATH=%PATH%;C:\Program Files (x86)\Git\bin |
|
| 87 |
+ |
|
| 88 |
+.. image:: images/win/run_03.gif |
|
| 89 |
+ :alt: run docker |
|
| 90 |
+ :align: center |
|
| 91 |
+ |
|
| 92 |
+Using SSH |
|
| 93 |
+````````` |
|
| 94 |
+ |
|
| 95 |
+First step is to get the IP and port of your Ubuntu server. Simply run: |
|
| 96 |
+ |
|
| 97 |
+.. code-block:: bash |
|
| 98 |
+ |
|
| 99 |
+ vagrant ssh-config |
|
| 100 |
+ |
|
| 101 |
+You should see an output with HostName and Port information. In this example, HostName is 127.0.0.1 and port is 2222. And the User is “vagrant”. The password is not shown, but it is also “vagrant”. |
|
| 102 |
+ |
|
| 103 |
+.. image:: images/win/ssh-config.gif |
|
| 104 |
+ :alt: run docker |
|
| 105 |
+ :align: center |
|
| 106 |
+ |
|
| 107 |
+You can now use this information for connecting via SSH to your server. To do so you can: |
|
| 108 |
+ |
|
| 109 |
+- Use putty.exe OR |
|
| 110 |
+- Use SSH from a terminal |
|
| 111 |
+ |
|
| 112 |
+Use putty.exe |
|
| 113 |
+''''''''''''' |
|
| 114 |
+ |
|
| 115 |
+You can download putty.exe from this page http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html |
|
| 116 |
+Launch putty.exe and simply enter the information you got from last step. |
|
| 117 |
+ |
|
| 118 |
+.. image:: images/win/putty.gif |
|
| 119 |
+ :alt: run docker |
|
| 120 |
+ :align: center |
|
| 121 |
+ |
|
| 122 |
+Open, and enter user = vagrant and password = vagrant. |
|
| 123 |
+ |
|
| 124 |
+.. image:: images/win/putty_2.gif |
|
| 125 |
+ :alt: run docker |
|
| 126 |
+ :align: center |
|
| 127 |
+ |
|
| 128 |
+SSH from a terminal |
|
| 129 |
+''''''''''''''''''' |
|
| 130 |
+ |
|
| 131 |
+You can also run this command on your favorite terminal (windows prompt, cygwin, git-bash, …). Make sure to adapt the IP and port from what you got from the vagrant ssh-config command. |
|
| 132 |
+ |
|
| 133 |
+.. code-block:: bash |
|
| 134 |
+ |
|
| 135 |
+ ssh vagrant@127.0.0.1 –p 2222 |
|
| 136 |
+ |
|
| 137 |
+Enter user = vagrant and password = vagrant. |
|
| 138 |
+ |
|
| 139 |
+.. image:: images/win/cygwin.gif |
|
| 140 |
+ :alt: run docker |
|
| 141 |
+ :align: center |
|
| 142 |
+ |
|
| 143 |
+Congratulations, you are now logged onto your Ubuntu Server, running on top of your Windows machine ! |
|
| 144 |
+ |
|
| 145 |
+Running Docker |
|
| 146 |
+-------------- |
|
| 147 |
+ |
|
| 148 |
+First you have to be root in order to run docker. Simply run the following command: |
|
| 149 |
+ |
|
| 150 |
+.. code-block:: bash |
|
| 151 |
+ |
|
| 152 |
+ sudo su |
|
| 153 |
+ |
|
| 154 |
+You are now ready for the docker’s “hello world” example. Run |
|
| 155 |
+ |
|
| 156 |
+.. code-block:: bash |
|
| 157 |
+ |
|
| 158 |
+ docker run busybox echo hello world |
|
| 159 |
+ |
|
| 160 |
+.. image:: images/win/run_04.gif |
|
| 161 |
+ :alt: run docker |
|
| 162 |
+ :align: center |
|
| 163 |
+ |
|
| 164 |
+All done! |
|
| 165 |
+ |
|
| 166 |
+Now you can continue with the :ref:`hello_world` example. |
| ... | ... |
@@ -61,15 +61,11 @@ |
| 61 | 61 |
<div class="navbar-dotcloud"> |
| 62 | 62 |
<div class="container" style="text-align: center;"> |
| 63 | 63 |
|
| 64 |
-{# <div class="nav-collapse collapse" style="float: left; margin-top: 12px;">#}
|
|
| 65 |
-{# <a class="btn btn-custom" href="http://github.com/dotcloud/docker"><img src="{{ pathto('_static/img/fork-us.png', 1) }}">Fork us!</a>#}
|
|
| 66 |
-{# </div>#}
|
|
| 67 |
- |
|
| 68 | 64 |
<div style="float: right" class="pull-right"> |
| 69 | 65 |
<ul class="nav"> |
| 70 |
- <li><a href="{{ pathto('./', 1) }}">Introduction</a></li>
|
|
| 71 |
- <li><a href="{{ pathto('gettingstarted.html', 1) }}">Getting started</a></li>
|
|
| 72 |
- <li class="active"><a href="{{ pathto('documentation/concepts/containers.html', 1) }}">Documentation</a></li>
|
|
| 66 |
+ <li><a href="http://www.docker.io/">Introduction</a></li> |
|
| 67 |
+ <li><a href="http://www.docker.io/gettingstarted/">Getting started</a></li> |
|
| 68 |
+ <li class="active"><a href="{{ pathto('concepts/containers/', 1) }}">Documentation</a></li>
|
|
| 73 | 69 |
</ul> |
| 74 | 70 |
<div class="social links" style="float: right; margin-top: 14px; margin-left: 12px"> |
| 75 | 71 |
<a class="twitter" href="http://twitter.com/getdocker">Twitter</a> |
| ... | ... |
@@ -77,7 +73,6 @@ |
| 77 | 77 |
</div> |
| 78 | 78 |
</div> |
| 79 | 79 |
|
| 80 |
-{# <div style="width: 200px; margin-left: auto; margin-right: auto;">#}
|
|
| 81 | 80 |
<div style="margin-left: -12px; float: left;"> |
| 82 | 81 |
<a href="{{ pathto('./', 1) }}"><img style="margin-top: 12px; height: 38px" src="{{ pathto('_static/img/docker-letters-logo.gif', 1) }}"></a>
|
| 83 | 82 |
</div> |