From ad97260d93a7b99489baf0a5dd4402a5d6ea3ab9 Mon Sep 17 00:00:00 2001 From: Mary Anthony Date: Thu, 21 Apr 2016 14:07:25 -0700 Subject: [PATCH] Updating the development process Update with Michael's comments Updated with Seb's comments Signed-off-by: Mary Anthony --- docs/project/images/list_example.png | Bin 28729 -> 78439 bytes docs/project/set-up-dev-env.md | 461 ++++++++++----------------- docs/project/set-up-git.md | 158 +++++---- docs/project/software-req-win.md | 12 +- docs/project/software-required.md | 45 ++- docs/project/test-and-docs.md | 129 ++++---- docs/project/who-written-for.md | 14 +- 7 files changed, 383 insertions(+), 436 deletions(-) diff --git a/docs/project/images/list_example.png b/docs/project/images/list_example.png index a306e6e7dde21a6609694b28343f9a2d689001e8..c7a4d227cc10ea547af6a5ccc69932631b3b0af9 100644 GIT binary patch literal 78439 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 z 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 J-lE8#8RM#y!4hM@TM9Me=m&&%*k1lV&xqkSxtz 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 diff --git a/docs/project/set-up-dev-env.md b/docs/project/set-up-dev-env.md index 8c8b87d..420c4c5 100644 --- a/docs/project/set-up-dev-env.md +++ b/docs/project/set-up-dev-env.md @@ -11,9 +11,9 @@ weight=5 # Work with a development container -In this section, you learn to develop like a member of Docker's core team. +In this section, you learn to develop like the Docker Engine core team. The `docker` repository includes a `Dockerfile` at its root. This file defines -Docker's development environment. The `Dockerfile` lists the environment's +Docker's development environment. The `Dockerfile` lists the environment's dependencies: system libraries and binaries, Go environment, Go dependencies, etc. @@ -27,59 +27,60 @@ set up Git for contributing, you should have a fork of the `docker/docker` repository. You also created a branch called `dry-run-test`. In this section, you continue working with your fork on this branch. -## Clean your host of Docker artifacts +## Task 1. Remove images and containers -Docker developers run the latest stable release of the Docker software (with Docker Machine if their machine is Mac OS X). They clean their local -hosts of unnecessary Docker artifacts such as stopped containers or unused -images. Cleaning unnecessary artifacts isn't strictly necessary, but it is -good practice, so it is included here. +Docker developers run the latest stable release of the Docker software (with +Docker Machine if their machine is Mac OS X). They clean their local hosts of +unnecessary Docker artifacts such as stopped containers or unused images. +Cleaning unnecessary artifacts isn't strictly necessary, but it is good +practice, so it is included here. To remove unnecessary artifacts: 1. Verify that you have no unnecessary containers running on your host. - $ docker ps + ```bash + $ docker ps -a + ``` You should see something similar to the following: - - - - - - - - - - -
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
- - There are no running containers on this host. If you have running but unused - containers, stop and then remove them with the `docker stop` and `docker rm` - commands. + ```bash + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + ``` + + There are no running or stopped containers on this host. A fast way to + remove old containers is the following: + + ```bash + $ docker rm $(docker ps -a -q) + ``` + + This command uses `docker ps` to list all containers (`-a` flag) by numeric + IDs (`-q` flag). Then, the `docker fm` command removes the resulting list. + If you have running but unused containers, stop and then remove them with + the `docker stop` and `docker rm` commands. 2. Verify that your host has no dangling images. - $ docker images + ```bash + $ docker images + ``` You should see something similar to the following: - - - - - - - - -
REPOSITORYTAGIMAGE IDCREATEDVIRTUAL SIZE
+ ```bash + REPOSITORY TAG IMAGE ID CREATED SIZE + ``` This host has no images. You may have one or more _dangling_ images. A dangling image is not used by a running container and is not an ancestor of - another image on your system. A fast way to remove dangling containers is + another image on your system. A fast way to remove dangling image is the following: - $ docker rmi -f $(docker images -q -a -f dangling=true) + ```bash + $ docker rmi -f $(docker images -q -a -f dangling=true) + ``` This command uses `docker images` to list all images (`-a` flag) by numeric IDs (`-q` flag) and filter them to find dangling images (`-f dangling=true`). @@ -88,11 +89,13 @@ To remove unnecessary artifacts: message, that means there were no dangling images. To remove just one image, use the `docker rmi ID` command. -## Build an image +## Task 2. Start a development container -If you followed the last procedure, your host is clean of unnecessary images -and containers. In this section, you build an image from the Docker development -environment. +If you followed the last procedure, your host is clean of unnecessary images and +containers. In this section, you build an image from the Engine development +environment and run it in the container. Both steps are automated for you by the +Makefile in the Engine code repository. The first time you build an image, it +can take over 15 minutes to complete. 1. Open a terminal. @@ -100,327 +103,205 @@ environment. may need to run `eval "$(docker-machine env your_vm_name)"` to initialize your shell environment. -3. Change into the root of your forked repository. +2. Change into the root of the `docker-fork` repository. - $ cd ~/repos/docker-fork + ```bash + $ cd ~/repos/docker-fork + ``` - If you are following along with this guide, you created a `dry-run-test` - branch when you set up Git for - contributing. + If you are following along with this guide, you created a `dry-run-test` + branch when you set up Git for + contributing. -4. Ensure you are on your `dry-run-test` branch. +3. Ensure you are on your `dry-run-test` branch. - $ git checkout dry-run-test + ```bash + $ git checkout dry-run-test + ``` - If you get a message that the branch doesn't exist, add the `-b` flag (git checkout -b dry-run-test) so the + If you get a message that the branch doesn't exist, add the `-b` flag (`git checkout -b dry-run-test`) so the command both creates the branch and checks it out. -5. Compile your development environment container into an image. +4. Use `make` to build a development environment image and run it in a container. - $ docker build -t dry-run-test . - - The `docker build` command returns informational message as it runs. The - first build may take a few minutes to create an image. Using the - instructions in the `Dockerfile`, the build may need to download source and - other images. A successful build returns a final status message similar to - the following: + ```bash + $ make shell + ``` - Successfully built 676815d59283 - -6. List your Docker images again. - - $ docker images - - You should see something similar to this: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REPOSTITORYTAGIMAGE IDCREATEDVIRTUAL SIZE
dry-run-testlatest663fbee70028About a minute ago
ubuntutrusty2d24f826cb162 days ago188.3 MB
ubuntutrusty-20150218.12d24f826cb162 days ago188.3 MB
ubuntu14.042d24f826cb162 days ago188.3 MB
ubuntu14.04.22d24f826cb162 days ago188.3 MB
ubuntulatest2d24f826cb162 days ago188.3 MB
- - Locate your new `dry-run-test` image in the list. You should also see a - number of `ubuntu` images. The build process creates these. They are the - ancestors of your new Docker development image. When you next rebuild your - image, the build process reuses these ancestors images if they exist. - - Keeping the ancestor images improves the build performance. When you rebuild - the child image, the build process uses the local ancestors rather than - retrieving them from the Hub. The build process gets new ancestors only if - Docker Hub has updated versions. - -## Start a container and run a test - -At this point, you have created a new Docker development environment image. Now, -you'll use this image to create a Docker container to develop in. Then, you'll -build and run a `docker` binary in your container. - -1. Open two additional terminals on your host. - - At this point, you'll have about three terminals open. - - ![Multiple terminals](images/three_terms.png) - - Mac OS X users, make sure you run `eval "$(docker-machine env your_vm_name)"` in - any new terminals. - -2. In a terminal, create a new container from your `dry-run-test` image. - - $ docker run --privileged --rm -ti dry-run-test /bin/bash - root@5f8630b873fe:/go/src/github.com/docker/docker# - - The command creates a container from your `dry-run-test` image. It opens an - interactive terminal (`-ti`) running a `/bin/bash` shell. The - `--privileged` flag gives the container access to kernel features and device - access. This flag allows you to run a container in a container. - Finally, the `-rm` flag instructs Docker to remove the container when you - exit the `/bin/bash` shell. - - The container includes the source of your image repository in the - `/go/src/github.com/docker/docker` directory. Try listing the contents to - verify they are the same as that of your `docker-fork` repo. - - ![List example](images/list_example.png) - - -3. Investigate your container bit. - - If you do a `go version` you'll find the `go` language is part of the + The command returns informational messages as it runs. The first build may + take a few minutes to create an image. Using the instructions in the + `Dockerfile`, the build may need to download source and other images. A + successful build returns a final message and opens a Bash shell into the container. - root@31ed86e9ddcf:/go/src/github.com/docker/docker# go version - go version go1.4.2 linux/amd64 + ```bash + Successfully built 3d872560918e + docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "home/ubuntu/repos/docker/bundles:/go/src/github.com/docker/docker/bundles" -t "docker-dev:dry-run-test" bash + root@f31fa223770f:/go/src/github.com/docker/docker# + ``` - Similarly, if you do a `docker version` you find the container - has no `docker` binary. + At this point, your prompt reflects the container's BASH shell. - root@31ed86e9ddcf:/go/src/github.com/docker/docker# docker version - bash: docker: command not found +5. List the contents of the current directory (`/go/src/github.com/docker/docker`). - You will create one in the next steps. + You should see the image's source from the `/go/src/github.com/docker/docker` + directory. -4. From the `/go/src/github.com/docker/docker` directory make a `docker` binary -with the `make.sh` script. + ![List example](images/list_example.png) - root@5f8630b873fe:/go/src/github.com/docker/docker# hack/make.sh binary +6. Make a `docker` binary. - You only call `hack/make.sh` to build a binary _inside_ a Docker - development container as you are now. On your host, you'll use `make` - commands (more about this later). + ```bash + root@a8b2885ab900:/go/src/github.com/docker/docker# hack/make.sh binary + ...output snipped... + bundles/1.12.0-dev already exists. Removing. - As it makes the binary, the `make.sh` script reports the build's progress. - When the command completes successfully, you should see the following - output: + ---> Making bundle: binary (in bundles/1.12.0-dev/binary) + Building: bundles/1.12.0-dev/binary/docker-1.12.0-dev + Created binary: bundles/1.12.0-dev/binary/docker-1.12.0-dev + Copying nested executables into bundles/1.12.0-dev/binary + ``` - ---> Making bundle: binary (in bundles/1.5.0-dev/binary) - Created binary: /go/src/github.com/docker/docker/bundles/1.5.0-dev/binary/docker-1.5.0-dev +7. Copy the binary to the container's `/usr/bin` directory. -5. List all the contents of the `binary` directory. + ```bash + root@a8b2885ab900:/go/src/github.com/docker/docker# cp bundles/1.12.0-dev/binary/docker* /usr/bin + ``` - root@5f8630b873fe:/go/src/github.com/docker/docker# ls bundles/1.5.0-dev/binary/ - docker docker-1.5.0-dev docker-1.5.0-dev.md5 docker-1.5.0-dev.sha256 +8. Start the Engine daemon running in the background. - You should see that `binary` directory, just as it sounds, contains the - made binaries. + ```bash + root@a8b2885ab900:/go/src/github.com/docker/docker# docker daemon -D& + ...output snipped... + DEBU[0001] Registering POST, /networks/{id:.*}/connect + DEBU[0001] Registering POST, /networks/{id:.*}/disconnect + DEBU[0001] Registering DELETE, /networks/{id:.*} + INFO[0001] API listen on /var/run/docker.sock + DEBU[0003] containerd connection state change: READY + ``` + The `-D` flag starts the daemon in debug mode. The `&` starts it as a + background process. You'll find these options useful when debugging code + development. -6. Copy the `docker` binary to the `/usr/bin` of your container. +9. Inside your container, check your Docker version. - root@5f8630b873fe:/go/src/github.com/docker/docker# cp bundles/1.5.0-dev/binary/docker /usr/bin - -7. Inside your container, check your Docker version. - - root@5f8630b873fe:/go/src/github.com/docker/docker# docker --version - Docker version 1.5.0-dev, build 6e728fb + ```bash + root@5f8630b873fe:/go/src/github.com/docker/docker# docker --version + Docker version 1.12.0-dev, build 6e728fb + ``` Inside the container you are running a development version. This is the version on the current branch. It reflects the value of the `VERSION` file at the root of your `docker-fork` repository. -8. Start a `docker` daemon running inside your container. - - root@5f8630b873fe:/go/src/github.com/docker/docker# docker daemon -D - - The `-D` flag starts the daemon in debug mode. You'll find this useful - when debugging your code. +10. Run the `hello-world` image. -9. Bring up one of the terminals on your local host. + ```bash + root@5f8630b873fe:/go/src/github.com/docker/docker# docker run hello-world + ``` +11. List the image you just downloaded. -10. List your containers and look for the container running the `dry-run-test` image. + ```bash + root@5f8630b873fe:/go/src/github.com/docker/docker# docker images + ``` - $ docker ps +12. Open another terminal on your local host. - - - - - - - - - - - - - - - - - - - -
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
474f07652525dry-run-test:latest"hack/dind /bin/bash14 minutes agoUp 14 minutestender_shockley
+13. List the container runninng your development container. - In this example, the container's name is `tender_shockley`; yours will be - different. - -11. From the terminal, start another shell on your Docker development container. - - $ docker exec -it tender_shockley bash - - At this point, you have two terminals both with a shell open into your - development container. One terminal is running a debug session. The other - terminal is displaying a `bash` prompt. - -12. At the prompt, test the Docker client by running the `hello-world` container. + ```bash + ubuntu@ubuntu1404:~$ docker ps + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + a8b2885ab900 docker-dev:dry-run-test "hack/dind bash" 43 minutes ago Up 43 minutes hungry_payne + ``` - root@9337c96e017a:/go/src/github.com/docker/docker# docker run hello-world + Notice that the tag on the container is marked with the `dry-run-branch` name. - You should see the image load and return. Meanwhile, you - can see the calls made via the debug session in your other terminal. - ![List example](images/three_running.png) - - -## Restart a container with your source +## Task 3. Make a code change At this point, you have experienced the "Docker inception" technique. That is, you have: -* built a Docker image from the Docker repository -* created and started a Docker development container from that image +* forked and cloned the Docker Engine code repository +* created a feature branch for development +* created and started a Engine development container from your branch * built a Docker binary inside of your Docker development container * launched a `docker` daemon using your newly compiled binary * called the `docker` client to run a `hello-world` container inside your development container -When you really get to developing code though, you'll want to iterate code -changes and builds inside the container. For that you need to mount your local -Docker repository source into your Docker container. Try that now. - -1. If you haven't already, exit out of BASH shells in your running Docker +Running the `make shell` command mounted your local Docker repository source into +your Docker container. When you start to developing code though, you'll +want to iterate code changes and builds inside the container. If you have +followed this guide exactly, you have a BASH shell running a development container. - If you have followed this guide exactly, exiting out your BASH shells stops - the running container. You can use the `docker ps` command to verify the - development container is stopped. All of your terminals should be at the - local host prompt. +Try a simple code change and see it reflected in your container. For this +example, you'll edit the help for the `attach` subcommand. -2. Choose a terminal and make sure you are in your `docker-fork` repository. +1. If you don't have one, open a terminal in your local host. - $ pwd - /Users/mary/go/src/github.com/moxiegirl/docker-fork +2. Make sure you are in your `docker-fork` repository. - Your location will be different because it reflects your environment. + ```bash + $ pwd + /Users/mary/go/src/github.com/moxiegirl/docker-fork + ``` -3. Create a container using `dry-run-test`, but this time, mount your repository -onto the `/go` directory inside the container. + Your location should be different because, at least, your username is + different. - $ docker run --privileged --rm -ti -v `pwd`:/go/src/github.com/docker/docker dry-run-test /bin/bash +3. Open the `api/client/attach.go` file. - When you pass `pwd`, `docker` resolves it to your current directory. +4. Edit the command's help message. -4. From inside the container, list your `binary` directory. + For example, you can edit this line: - root@074626fc4b43:/go/src/github.com/docker/docker# ls bundles/1.5.0-dev/binary - ls: cannot access binary: No such file or directory + ```go + noStdin := cmd.Bool([]string{"-no-stdin"}, false, "Do not attach STDIN") + ``` - Your `dry-run-test` image does not retain any of the changes you made inside - the container. This is the expected behavior for a container. + And change it to this: -5. In a fresh terminal on your local host, change to the `docker-fork` root. + ```go + noStdin := cmd.Bool([]string{"-no-stdin"}, false, "Do not attach STDIN (standard in)") + ``` - $ cd ~/repos/docker-fork/ +5. Save and close the `api/client/attach.go` file. -6. Create a fresh binary, but this time, use the `make` command. +6. Go to your running development container. - $ make BINDDIR=. binary +7. Remake the binary and copy it to `usr/bin` - The `BINDDIR` flag is only necessary on Mac OS X but it won't hurt to pass - it on Linux command line. The `make` command, like the `make.sh` script - inside the container, reports its progress. When the make succeeds, it - returns the location of the new binary. +8. Restart the Docker daemon with the new binary. +9. View your change by display the `attach` help. -7. Back in the terminal running the container, list your `binary` directory. + ```bash + root@b0cb4f22715d:/go/src/github.com/docker/docker# docker attach --help - root@074626fc4b43:/go/src/github.com/docker/docker# ls bundles/1.5.0-dev/binary - docker docker-1.5.0-dev docker-1.5.0-dev.md5 docker-1.5.0-dev.sha256 + Usage: docker attach [OPTIONS] CONTAINER - The compiled binaries created from your repository on your local host are - now available inside your running Docker development container. + Attach to a running container -8. Repeat the steps you ran in the previous procedure. + --detach-keys Override the key sequence for detaching a container + --help Print usage + --no-stdin Do not attach to STDIN (standard in) + --sig-proxy=true Proxy all received signals to the process + ``` - * copy the binary inside the development container using - `cp bundles/1.5.0-dev/binary/docker /usr/bin` - * start `docker daemon -D` to launch the Docker daemon inside the container - * run `docker ps` on local host to get the development container's name - * connect to your running container `docker exec -it container_name bash` - * use the `docker run hello-world` command to create and run a container - inside your development container +You've just done the basic workflow for changing the Engine code base. You made +your code changes in your feature branch. Then, you updated the binary in your +development container and tried your change out. If you were making a bigger +change, you might repeat or iterate through this flow several times. ## Where to go next -Congratulations, you have successfully achieved Docker inception. At this point, -you've set up your development environment and verified almost all the essential -processes you need to contribute. Of course, before you start contributing, -[you'll need to learn one more piece of the development environment, the test -framework](test-and-docs.md). +Congratulations, you have successfully achieved Docker inception. You've had a +small experience of the develpment process. You've set up your development +environment and verified almost all the essential processes you need to +contribute. Of course, before you start contributing, [you'll need to learn one +more piece of the development process, the test framework](test-and-docs.md). diff --git a/docs/project/set-up-git.md b/docs/project/set-up-git.md index a263294..3545123 100644 --- a/docs/project/set-up-git.md +++ b/docs/project/set-up-git.md @@ -15,7 +15,7 @@ Work through this page to configure Git and a repository you'll use throughout the Contributor Guide. The work you do further in the guide, depends on the work you do here. -## Fork and clone the Docker code +## Task 1. Fork and clone the Docker code Before contributing, you first fork the Docker code repository. A fork copies a repository at a particular point in time. GitHub tracks for you where a fork @@ -55,40 +55,52 @@ target="_blank">docker/docker repository. 5. Open a terminal window on your local host and change to your home directory. - $ cd ~ + ```bash + $ cd ~ + ``` In Windows, you'll work in your Docker Quickstart Terminal window instead of Powershell or a `cmd` window. 6. Create a `repos` directory. - $ mkdir repos + ```bash + $ mkdir repos + ``` 7. Change into your `repos` directory. - $ cd repos + ```bash + $ cd repos + ``` 8. Clone the fork to your local host into a repository called `docker-fork`. - $ git clone https://github.com/moxiegirl/docker.git docker-fork + ```bash + $ git clone https://github.com/moxiegirl/docker.git docker-fork + ``` Naming your local repo `docker-fork` should help make these instructions easier to follow; experienced coders don't typically change the name. 9. Change directory into your new `docker-fork` directory. - $ cd docker-fork + ```bash + $ cd docker-fork + ``` Take a moment to familiarize yourself with the repository's contents. List the contents. -## Set your signature and an upstream remote +## Task 2. Set your signature and an upstream remote When you contribute to Docker, you must certify you agree with the Developer Certificate of Origin. You indicate your agreement by signing your `git` commits like this: - Signed-off-by: Pat Smith +``` +Signed-off-by: Pat Smith +``` To create a signature, you configure your username and email address in Git. You can set these globally or locally on just your `docker-fork` repository. @@ -105,45 +117,57 @@ To configure your username, email, and add a remote: 1. Change to the root of your `docker-fork` repository. - $ cd docker-fork + ```bash + $ cd docker-fork + ``` 2. Set your `user.name` for the repository. - $ git config --local user.name "FirstName LastName" + ```bash + $ git config --local user.name "FirstName LastName" + ``` 3. Set your `user.email` for the repository. - $ git config --local user.email "emailname@mycompany.com" + ```bash + $ git config --local user.email "emailname@mycompany.com" + ``` 4. Set your local repo to track changes upstream, on the `docker` repository. - $ git remote add upstream https://github.com/docker/docker.git + ```bash + $ git remote add upstream https://github.com/docker/docker.git + ``` 5. Check the result in your `git` configuration. - $ git config --local -l - core.repositoryformatversion=0 - core.filemode=true - core.bare=false - core.logallrefupdates=true - remote.origin.url=https://github.com/moxiegirl/docker.git - remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* - branch.master.remote=origin - branch.master.merge=refs/heads/master - user.name=Mary Anthony - user.email=mary@docker.com - remote.upstream.url=https://github.com/docker/docker.git - remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/* + ```bash + $ git config --local -l + core.repositoryformatversion=0 + core.filemode=true + core.bare=false + core.logallrefupdates=true + remote.origin.url=https://github.com/moxiegirl/docker.git + remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* + branch.master.remote=origin + branch.master.merge=refs/heads/master + user.name=Mary Anthony + user.email=mary@docker.com + remote.upstream.url=https://github.com/docker/docker.git + remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/* + ``` To list just the remotes use: - $ git remote -v - origin https://github.com/moxiegirl/docker.git (fetch) - origin https://github.com/moxiegirl/docker.git (push) - upstream https://github.com/docker/docker.git (fetch) - upstream https://github.com/docker/docker.git (push) + ```bash + $ git remote -v + origin https://github.com/moxiegirl/docker.git (fetch) + origin https://github.com/moxiegirl/docker.git (push) + upstream https://github.com/docker/docker.git (fetch) + upstream https://github.com/docker/docker.git (push) + ``` -## Create and push a branch +## Task 3. Create and push a branch As you change code in your fork, make your changes on a repository branch. The branch name should reflect what you are working on. In this section, you @@ -155,26 +179,34 @@ the branch to your fork on GitHub: 1. Open a terminal and go to the root of your `docker-fork`. - $ cd docker-fork + ```bash + $ cd docker-fork + ``` 2. Create a `dry-run-test` branch. - $ git checkout -b dry-run-test + ```bash + $ git checkout -b dry-run-test + ``` This command creates the branch and switches the repository to it. 3. Verify you are in your new branch. - $ git branch - * dry-run-test - master + ```bash + $ git branch + * dry-run-test + master + ``` The current branch has an * (asterisk) marker. So, these results shows you are on the right branch. 4. Create a `TEST.md` file in the repository's root. - $ touch TEST.md + ```bash + $ touch TEST.md + ``` 5. Edit the file and add your email and location. @@ -186,30 +218,36 @@ the branch to your fork on GitHub: 7. Check the status of your branch. - $ git status - On branch dry-run-test - Untracked files: - (use "git add ..." to include in what will be committed) + ```bash + $ git status + On branch dry-run-test + Untracked files: + (use "git add ..." to include in what will be committed) - TEST.md + TEST.md - nothing added to commit but untracked files present (use "git add" to track) + nothing added to commit but untracked files present (use "git add" to track) + ``` You've only changed the one file. It is untracked so far by git. 8. Add your file. - $ git add TEST.md + ```bash + $ git add TEST.md + ``` That is the only _staged_ file. Stage is fancy word for work that Git is tracking. 9. Sign and commit your change. - $ git commit -s -m "Making a dry run test." - [dry-run-test 6e728fb] Making a dry run test - 1 file changed, 1 insertion(+) - create mode 100644 TEST.md + ``` + $ git commit -s -m "Making a dry run test." + [dry-run-test 6e728fb] Making a dry run test + 1 file changed, 1 insertion(+) + create mode 100644 TEST.md + ``` Commit messages should have a short summary sentence of no more than 50 characters. Optionally, you can also include a more detailed explanation @@ -218,20 +256,24 @@ the branch to your fork on GitHub: 8. Push your changes to GitHub. - $ git push --set-upstream origin dry-run-test - Username for 'https://github.com': moxiegirl - Password for 'https://moxiegirl@github.com': + ```bash + $ git push --set-upstream origin dry-run-test + Username for 'https://github.com': moxiegirl + Password for 'https://moxiegirl@github.com': + ``` Git prompts you for your GitHub username and password. Then, the command returns a result. - Counting objects: 13, done. - Compressing objects: 100% (2/2), done. - Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done. - Total 3 (delta 1), reused 0 (delta 0) - To https://github.com/moxiegirl/docker.git - * [new branch] dry-run-test -> dry-run-test - Branch dry-run-test set up to track remote branch dry-run-test from origin. + ```bash + Counting objects: 13, done. + Compressing objects: 100% (2/2), done. + Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done. + Total 3 (delta 1), reused 0 (delta 0) + To https://github.com/moxiegirl/docker.git + * [new branch] dry-run-test -> dry-run-test + Branch dry-run-test set up to track remote branch dry-run-test from origin. + ``` 9. Open your browser to GitHub. diff --git a/docs/project/software-req-win.md b/docs/project/software-req-win.md index 9887292..2f3d2bb 100644 --- a/docs/project/software-req-win.md +++ b/docs/project/software-req-win.md @@ -26,7 +26,7 @@ you must have: is `D:\` you'll need to substitute that in where appropriate in these instructions. -### Get a GitHub account +## Task 1. Get a GitHub account To contribute to the Docker project, you will need a GitHub account. A free account is @@ -35,7 +35,7 @@ fine. All the Docker project repositories are public and visible to everyone. You should also have some experience using both the GitHub application and `git` on the command line. -## Install Git for Windows +## Task 2. Install Git for Windows Git for Windows includes several tools including msysGit, which is a build environment. The environment contains the tools you need for development such as @@ -55,7 +55,7 @@ Git and a Git Bash shell. 5. Click **Finish** when you are done. -## Installing TDM-GCC +## Task 3. Install TDM-GCC TDM-GCC is a compiler suite for Windows. You'll use this suite to compile the Docker Go code as you develop. @@ -78,7 +78,7 @@ Docker Go code as you develop. 6. Click **Finish** when you are done. -## Installing MinGW (tar and xz) +## Task 4. Install MinGW (tar and xz) MinGW is a minimalist port of the GNU Compiler Collection (GCC). In this procedure, you first download and install the MinGW installation manager. Then, @@ -124,7 +124,7 @@ you use the manager to install the `tar` and `xz` tools from the collection. 12. Close the dialog and the MinGW Installation Manager. -## Set up your environment variables +## Task 5. Set up your environment variables You'll need to add the compiler to your `Path` environment variable. @@ -196,7 +196,7 @@ In this section, you install the Go language. Then, you build the source so that Compiling the source also adds a number of variables to your Windows environment. -## Get the Docker repository +## Task 6. Get the Docker repository In this step, you start a Git `bash` terminal and get the Docker source code from GitHub. diff --git a/docs/project/software-required.md b/docs/project/software-required.md index cb18057..e1774c9 100644 --- a/docs/project/software-required.md +++ b/docs/project/software-required.md @@ -23,7 +23,7 @@ You'll notice that `go`, the language that Docker is written in, is not listed. That's because you don't need it installed; Docker's development environment provides it for you. You'll learn more about the development environment later. -### Get a GitHub account +## Task 1. Get a GitHub account To contribute to the Docker project, you will need a GitHub account. A free account is @@ -32,28 +32,31 @@ fine. All the Docker project repositories are public and visible to everyone. You should also have some experience using both the GitHub application and `git` on the command line. -### Install git +## Task 2. Install git Install `git` on your local system. You can check if `git` is on already on your system and properly installed with the following command: - $ git --version - +```bash +$ git --version +``` This documentation is written using `git` version 2.2.2. Your version may be different depending on your OS. -### Install make +## Task 3. Install make Install `make`. You can check if `make` is on your system with the following command: - $ make -v +```bash +$ make -v +``` This documentation is written using GNU Make 3.81. Your version may be different depending on your OS. -### Install or upgrade Docker +## Task 4. Install or upgrade Docker If you haven't already, install the Docker software using the instructions for your operating system. @@ -62,32 +65,40 @@ the latest Docker. To check if `docker` is already installed on Linux: - $ docker --version - Docker version 1.5.0, build a8a31ef +```bash +docker --version +Docker version 1.11.0, build 4dc5990 +``` On Mac OS X or Windows, you should have installed Docker Toolbox which includes Docker. You'll need to verify both Docker Machine and Docker. This documentation was written on OS X using the following versions. - $ docker-machine --version - docker-machine version 0.3.0 (0a251fe) +```bash +$ docker-machine --version +docker-machine version 0.7.0, build a650a40 - $ docker --version - Docker version 1.7.0, build a8a31ef +$ docker --version +Docker version 1.11.0, build 4dc5990 +``` -## Linux users and sudo +## Tip for Linux users This guide assumes you have added your user to the `docker` group on your system. To check, list the group's contents: - $ getent group docker - docker:x:999:ubuntu +``` +$ getent group docker +docker:x:999:ubuntu +``` If the command returns no matches, you have two choices. You can preface this guide's `docker` commands with `sudo` as you work. Alternatively, you can add your user to the `docker` group as follows: - $ sudo usermod -aG docker ubuntu +```bash +$ sudo usermod -aG docker ubuntu +``` You must log out and log back in for this modification to take effect. diff --git a/docs/project/test-and-docs.md b/docs/project/test-and-docs.md index d727b14..25a4bd6 100644 --- a/docs/project/test-and-docs.md +++ b/docs/project/test-and-docs.md @@ -21,7 +21,7 @@ contribution that changes how Docker behaves and that change needs documentation. For these reasons, you also need to know how to build, view, and test the Docker documentation. -In this section, you run tests in the `dry-run-test` branch of your Docker +This section describes tests you can run in the `dry-run-test` branch of your Docker fork. If you have followed along in this guide, you already have this branch. If you don't have this branch, you can create it or simply use another of your branches. @@ -52,11 +52,12 @@ there is a lot of information available to you on the Web. For now, you should understand that, the Docker maintainers may ask you to write a new test or change an existing one. -### Run tests on your local host +## Run tests on your local host -Before submitting any code change, you should run the entire Docker test suite. -The `Makefile` contains a target for the entire test suite. The target's name -is simply `test`. The `Makefile` contains several targets for testing: +Before submitting a pull request with a code change, you should run the entire +Docker Engine test suite. The `Makefile` contains a target for the entire test suite. +The target's name is simply `test`. The `Makefile` contains several targets for +testing: