Merge pull request #12313 from mesosphere/mesos-docker-guide

Clarify build instructions in mesos/docker guide
This commit is contained in:
Alex Robinson 2015-08-10 13:28:06 -07:00
commit 91b0787f8a

View File

@ -84,6 +84,10 @@ Required:
Optional: Optional:
- [Virtual Box](https://www.virtualbox.org/wiki/Downloads) - x86 hardware virtualizer - [Virtual Box](https://www.virtualbox.org/wiki/Downloads) - x86 hardware virtualizer
- Required by Boot2Docker and Docker Machine - Required by Boot2Docker and Docker Machine
- [Golang](https://golang.org/doc/install) - Go programming language
- Required to build Kubernetes locally
- [Make](https://en.wikipedia.org/wiki/Make_(software)) - Utility for building executables from source
- Required to build Kubernetes locally with make
#### Install on Mac (Homebrew) #### Install on Mac (Homebrew)
@ -110,6 +114,9 @@ means to get the latest versions.
It is recommended to use Ubuntu, simply because it best supports AUFS, used by docker to mount volumes. Alternate file It is recommended to use Ubuntu, simply because it best supports AUFS, used by docker to mount volumes. Alternate file
systems may not fully support docker-in-docker. systems may not fully support docker-in-docker.
In order to build Kubernetes, the current user must be in a docker group with sudo privileges.
See the docker docs for [instructions](https://docs.docker.com/installation/ubuntulinux/#create-a-docker-group).
#### Boot2Docker Config (Mac) #### Boot2Docker Config (Mac)
@ -154,40 +161,35 @@ host machine (mac).
1. Build binaries 1. Build binaries
``` You'll need to build kubectl (CLI) for your local architecture and operating system and the rest of the server binaries for linux/amd64.
KUBERNETES_CONTRIB=mesos hack/build-go.sh
```
Alternatively, you can use `make`, if make is installed. Building a new release covers both cases:
Unless you're on linux, you'll also need to build the binaries for linux/amd64 (for the docker containers):
``` ```
KUBERNETES_CONTRIB=mesos build/run.sh hack/build-go.sh KUBERNETES_CONTRIB=mesos build/release.sh
``` ```
Breakdown: For developers, it may be faster to [build locally](#build-locally).
- `KUBERNETES_CONTRIB=mesos` - enables building of the contrib/mesos binaries
- `build/run.sh` - executes a command in the build container
- `build-go.sh` - builds the Go binaries for the current architecture (linux/amd64 when in a docker container)
1. [Optional] Build docker images 1. [Optional] Build docker images
The following docker images are built as part of `./cluster/kube-up.sh`, but it may make sense to build them manually The following docker images are built as part of `./cluster/kube-up.sh`, but it may make sense to build them manually the first time because it may take a while.
the first time because it may take a while. In the future some of these may be hosted publicly, but you will always
need to at least rebuild the Kubernetes-Mesos image when using locally built binaries.
Test image includes all the dependencies required for running e2e tests. 1. Test image includes all the dependencies required for running e2e tests.
``` ```
./cluster/mesos/docker/test/build.sh ./cluster/mesos/docker/test/build.sh
``` ```
Kubernetes-Mesos image includes the compiled linux binaries. In the future, this image may be available to download. It doesn't contain anything specific to the current release, except its build dependencies.
``` 1. Kubernetes-Mesos image includes the compiled linux binaries.
./cluster/mesos/docker/km/build.sh
``` ```
./cluster/mesos/docker/km/build.sh
```
This image needs to be built every time you recompile the server binaries.
1. [Optional] Configure Mesos resources 1. [Optional] Configure Mesos resources
@ -297,6 +299,30 @@ ex: `./cluster/kubectl.sh get pods`
docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes
``` ```
### Build Locally
The steps above tell you how to build in a container, for minimal local dependencies. But if you have Go and Make installed you can build locally much faster:
```
KUBERNETES_CONTRIB=mesos make
```
However, if you're not on linux, you'll still need to compile the linux/amd64 server binaries:
```
KUBERNETES_CONTRIB=mesos build/run.sh hack/build-go.sh
```
The above two steps should be significantly faster than cross-compiling a whole new release for every supported platform (which is what `./build/release.sh` does).
Breakdown:
- `KUBERNETES_CONTRIB=mesos` - enables building of the contrib/mesos binaries
- `hack/build-go.sh` - builds the Go binaries for the current architecture (linux/amd64 when in a docker container)
- `make` - delegates to `hack/build-go.sh`
- `build/run.sh` - executes a command in the build container
- `build/release.sh` - cross compiles Kubernetes for all supported architectures and operating systems (slow)
<!-- BEGIN MUNGE: GENERATED_ANALYTICS --> <!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/getting-started-guides/mesos-docker.md?pixel)]() [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/getting-started-guides/mesos-docker.md?pixel)]()