1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00
moby--moby/docs/sources/contributing/devenvironment.rst

168 lines
5.3 KiB
ReStructuredText
Raw Normal View History

2013-06-02 01:03:12 -04:00
:title: Setting Up a Dev Environment
:description: Guides on how to contribute to docker
:keywords: Docker, documentation, developers, contributing, dev environment
2013-06-02 01:03:12 -04:00
Setting Up a Dev Environment
2013-09-17 22:41:12 -04:00
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To make it easier to contribute to Docker, we provide a standard
development environment. It is important that the same environment be
used for all tests, builds and releases. The standard development
environment defines all build dependencies: system libraries and
binaries, go environment, go dependencies, etc.
2013-06-06 08:36:28 -04:00
2013-09-17 05:29:13 -04:00
Step 1: Install Docker
----------------------
2013-06-06 08:36:28 -04:00
Docker's build environment itself is a Docker container, so the first
step is to install Docker on your system.
2013-06-06 08:36:28 -04:00
You can follow the `install instructions most relevant to your system
<https://docs.docker.io/en/latest/installation/>`_. Make sure you have
a working, up-to-date docker installation, then continue to the next
step.
2013-06-06 08:36:28 -04:00
Step 2: Install tools used for this tutorial
--------------------------------------------
Install ``git``; honest, it's very good. You can use other ways to get the Docker
source, but they're not anywhere near as easy.
Install ``make``. This tutorial uses our base Makefile to kick off the docker
containers in a repeatable and consistent way. Again, you can do it in other ways
but you need to do more work.
Step 3: Check out the Source
----------------------------
2013-06-06 08:36:28 -04:00
2013-09-17 22:41:12 -04:00
.. code-block:: bash
2013-06-06 08:36:28 -04:00
git clone http://git@github.com/dotcloud/docker
cd docker
2013-06-06 08:36:28 -04:00
2013-09-17 05:29:13 -04:00
To checkout a different revision just use ``git checkout`` with the name of branch or revision number.
2013-06-06 08:36:28 -04:00
2013-09-17 05:29:13 -04:00
Step 4: Build the Environment
2013-09-17 22:41:12 -04:00
-----------------------------
2013-09-17 22:41:12 -04:00
This following command will build a development environment using the Dockerfile in the current directory. Essentially, it will install all the build and runtime dependencies necessary to build and test Docker. This command will take some time to complete when you first execute it.
2013-09-17 22:41:12 -04:00
.. code-block:: bash
sudo make build
2013-09-17 05:29:13 -04:00
If the build is successful, congratulations! You have produced a clean build of
docker, neatly encapsulated in a standard build environment.
Step 5: Build the Docker Binary
2013-09-17 22:41:12 -04:00
-------------------------------
2013-09-17 22:41:12 -04:00
To create the Docker binary, run this command:
2013-09-17 22:41:12 -04:00
.. code-block:: bash
sudo make binary
2013-09-17 22:41:12 -04:00
This will create the Docker binary in ``./bundles/<version>-dev/binary/``
Using your built Docker binary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The binary is available outside the container in the directory
``./bundles/<version>-dev/binary/``. You can swap your host docker executable
with this binary for live testing - for example, on ubuntu:
.. code-block:: bash
sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/<version>-dev/binary/docker-<version>-dev $(which docker);sudo service docker start
.. note:: Its safer to run the tests below before swapping your hosts docker binary.
2013-09-17 22:41:12 -04:00
Step 5: Run the Tests
---------------------
To execute the test cases, run this command:
.. code-block:: bash
sudo make test
2013-09-17 22:41:12 -04:00
If the test are successful then the tail of the output should look something like this
.. code-block:: bash
2013-09-17 22:41:12 -04:00
--- PASS: TestWriteBroadcaster (0.00 seconds)
=== RUN TestRaceWriteBroadcaster
--- PASS: TestRaceWriteBroadcaster (0.00 seconds)
=== RUN TestTruncIndex
--- PASS: TestTruncIndex (0.00 seconds)
=== RUN TestCompareKernelVersion
--- PASS: TestCompareKernelVersion (0.00 seconds)
=== RUN TestHumanSize
--- PASS: TestHumanSize (0.00 seconds)
=== RUN TestParseHost
--- PASS: TestParseHost (0.00 seconds)
=== RUN TestParseRepositoryTag
--- PASS: TestParseRepositoryTag (0.00 seconds)
=== RUN TestGetResolvConf
--- PASS: TestGetResolvConf (0.00 seconds)
=== RUN TestCheckLocalDns
--- PASS: TestCheckLocalDns (0.00 seconds)
=== RUN TestParseRelease
--- PASS: TestParseRelease (0.00 seconds)
=== RUN TestDependencyGraphCircular
--- PASS: TestDependencyGraphCircular (0.00 seconds)
=== RUN TestDependencyGraph
--- PASS: TestDependencyGraph (0.00 seconds)
PASS
ok github.com/dotcloud/docker/utils 0.017s
If $TESTFLAGS is set in the environment, it is passed as extra arguments to 'go test'.
You can use this to select certain tests to run, eg.
2013-09-17 22:41:12 -04:00
TESTFLAGS='-run ^TestBuild$' make test
2013-09-17 22:41:12 -04:00
If the output indicates "FAIL" and you see errors like this:
.. code-block:: text
server.go:1302 Error: Insertion failed because database is full: database or disk is full
utils_test.go:179: Error copy: exit status 1 (cp: writing '/tmp/docker-testd5c9-[...]': No space left on device
Then you likely don't have enough memory available the test suite. 2GB is recommended.
2013-09-17 22:41:12 -04:00
Step 6: Use Docker
2013-09-17 05:29:13 -04:00
-------------------
You can run an interactive session in the newly built container:
2013-09-17 22:41:12 -04:00
.. code-block:: bash
2013-07-20 21:27:55 -04:00
sudo make shell
2013-09-17 05:29:13 -04:00
# type 'exit' or Ctrl-D to exit
2013-12-12 04:23:16 -05:00
Extra Step: Build and view the Documentation
2013-12-17 12:38:55 -05:00
--------------------------------------------
If you want to read the documentation from a local website, or are making changes
to it, you can build the documentation and then serve it by:
.. code-block:: bash
2013-09-17 22:41:12 -04:00
2013-12-10 19:14:56 -05:00
sudo make docs
# when its done, you can point your browser to http://yourdockerhost:8000
# type Ctrl-C to exit
2013-09-17 22:41:12 -04:00
**Need More Help?**
2013-12-12 04:23:16 -05:00
If you need more help then hop on to the `#docker-dev IRC channel <irc://chat.freenode.net#docker-dev>`_ or post a message on the `Docker developer mailing list <https://groups.google.com/d/forum/docker-dev>`_.