5416: Merge branch 'master' into 5416-arv-git-httpd
[arvados.git] / doc / install / install-docker.html.textile.liquid
1 ---
2 layout: default
3 navsection: installguide
4 title: Build and install docker images
5 ...
6
7 This installation method is appropriate for testing, evaluation and development on one computer. *For production use, this installation method is not recommended*.
8
9 h2. Prerequisites
10
11 # A GNU/Linux (virtual) machine
12 # A working Docker installation (see "Installing Docker":https://docs.docker.com/installation/)
13 # A working Go installation (see "Install the Go tools":https://golang.org/doc/install)
14
15 h2. Download the source tree
16
17 <notextile>
18 <pre><code>~$ <span class="userinput">cd $HOME</span> # (or wherever you want to install)
19 ~$ <span class="userinput">git clone https://github.com/curoverse/arvados.git</span>
20 </code></pre></notextile>
21
22 See also: "Downloading the source code":https://arvados.org/projects/arvados/wiki/Download on the Arvados wiki.
23
24 h2. Building the Arvados Docker containers
25
26 First of all, a suitable @config.yml@ file is needed. The easiest way to generate one based on the provided @config.yml.example@ file is to run the @build.sh@ script. If no @config.yml@ file exists, it will will prompt for a few inputs, write the @config.yml@ file, and then proceed to build all the Docker containers. If @config.yml@ exists, invoking @build.sh@ will simply build all Docker containers or update those that need to be updated.
27
28 Run @build.sh@ without arguments to generate @config.yml@ and build all Docker containers (this will take a while!):
29
30 <notextile>
31 <pre><code>
32 ~$ <span class="userinput">./build.sh</span>
33 Generating config.yml.
34 Arvados needs to know the email address of the administrative user,
35 so that when that user logs in they are automatically made an admin.
36 This should be an email address associated with a Google account.
37
38 Enter your Google ID email address here:
39
40 ...
41
42 Step 7 : ADD generated/setup.sh /usr/local/bin/setup.sh
43  ---> d7c0e7fdf7ab
44 Removing intermediate container f3d81180795d
45 Step 8 : CMD ["/usr/bin/supervisord", "-n"]
46  ---> Running in 84c64cb9f0d5
47  ---> d6cbb5002604
48 Removing intermediate container 84c64cb9f0d5
49 Successfully built d6cbb5002604
50 date >shell-image
51 </code></pre></notextile>
52
53 If all goes well, you should now have a number of docker images built:
54
55 <notextile>
56 <pre><code>~$ <span class="userinput">docker.io images</span>
57 REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
58 arvados/shell           latest              d6cbb5002604        10 minutes ago      1.613 GB
59 arvados/sso             latest              377f1fa0108e        11 minutes ago      1.807 GB
60 arvados/keep            latest              ade0e0d2dd00        12 minutes ago      210.8 MB
61 arvados/workbench       latest              b0e4fb6da385        12 minutes ago      2.218 GB
62 arvados/doc             latest              4b64daec9454        12 minutes ago      1.524 GB
63 arvados/compute         latest              7f1f5f7faf54        13 minutes ago      1.862 GB
64 arvados/slurm           latest              f5bfd1008e6b        17 minutes ago      1.573 GB
65 arvados/api             latest              6b93c5f5fc42        17 minutes ago      2.274 GB
66 arvados/passenger       latest              add2d11fdf24        18 minutes ago      1.738 GB
67 arvados/base            latest              81eaadd0c6f5        22 minutes ago      1.463 GB
68 arvados/debian          7.6                 f339ce275c01        6 days ago          116.8 MB
69 arvados/debian          latest              f339ce275c01        6 days ago          116.8 MB
70 arvados/debian          wheezy              f339ce275c01        6 days ago          116.8 MB
71 crosbymichael/skydock   latest              e985023521f6        3 months ago        510.7 MB
72 crosbymichael/skydns    next                79c99a4608ed        3 months ago        525 MB
73 crosbymichael/skydns    latest              1923ce648d4c        5 months ago        137.5 MB
74 </code></pre></notextile>
75
76 h2. Updating the Arvados Docker containers
77
78 @build.sh@ takes a few optional arguments:
79
80 <notextile>
81 <pre><code>
82 ~$ <span class="userinput"> ./build.sh --help</span>
83
84 usage: ./build.sh [options]
85
86 Calling ./build.sh without arguments will build all Arvados docker images
87
88 ./build.sh options:
89   -h, --help   Print this help text
90   clean        Clear all build information
91   realclean    clean and remove all Arvados Docker images except arvados/debian
92   deepclean    realclean and remove arvados/debian, crosbymichael/skydns and
93                crosbymichael/skydns Docker images
94 </code></pre></notextile>
95
96 If there has been an update to the Arvados Docker building code, it is safest to rebuild the Arvados Docker images from scratch. All build information can be cleared with the 'clean' option to build.sh:
97
98 <notextile>
99 <pre><code>~$ <span class="userinput">./build.sh clean</span></code></pre>
100 </notextile>
101
102 You can also use 'realclean', which does what 'clean' does and in addition removes all Arvados Docker containers and images from your system, with the exception of the arvados/debian image.
103
104 <notextile>
105 <pre><code>~$ <span class="userinput">./build.sh realclean</span></code></pre>
106 </notextile>
107
108 Finally, the 'deepclean' option does what 'realclean' does, and also removes the arvados/debian, crosbymichael/skydns and crosbymichael/skydock images.
109
110 <notextile>
111 <pre><code>~$ <span class="userinput">./build.sh deepclean</span></code></pre>
112 </notextile>
113
114 h2. Running the Arvados Docker containers
115
116 The @arvdock@ command can be used to start and stop the docker containers. It has a number of options:
117
118 <notextile>
119 <pre><code>
120 ~$ <span class="userinput">./arvdock -h</span>
121
122 usage: ./arvdock (start|stop|restart|test) [options]
123
124 ./arvdock start/stop/restart options:
125   -d[port], --doc[=port]        Documentation server (default port 9898)
126   -w[port], --workbench[=port]  Workbench server (default port 9899)
127   -s[port], --sso[=port]        SSO server (default port 9901)
128   -a[port], --api[=port]        API server (default port 9900)
129   -c, --compute                 Compute nodes (starts 2)
130   -v, --vm                      Shell server
131   -n, --nameserver              Nameserver
132   -k, --keep                    Keep servers
133   --ssh                         Enable SSH access to server containers
134   -h, --help                    Display this help and exit
135
136   If no options are given, the action is applied to all servers.
137
138 ./arvdock test [testname] [testname] ...
139   By default, all tests are run.
140 </code>
141 </pre>
142 </notextile>
143
144 The @--ssh@ option can be useful to debug issues with the Docker containers; it allows you to ssh into the running containers as the @root@ user, provided you have access to the private key that matches the public key specified in @config.yml@'s PUBLIC_KEY_PATH variable.
145
146 Start the docker containers:
147
148 <notextile>
149 <pre><code>
150 ~$ <span class="userinput">./arvdock start</span>
151 sso_server
152 Starting container:
153   /usr/bin/docker.io run -d -i -t -p 9901:443 --name sso_server arvados/sso
154 api_server
155 Starting container:
156   /usr/bin/docker.io run -d -i -t -p 9900:443 --name api_server --link sso_server:sso arvados/api
157 keep_server_0
158 Starting container:
159   /usr/bin/docker.io run -d -i -t -p 25107:25107 --name keep_server_0 -v /tmp/tmp.aCSx8Pq6Wb:/dev/keep-0 --link api_server:api arvados/keep
160 keep_server_1
161 Starting container:
162   /usr/bin/docker.io run -d -i -t -p 25108:25107 --name keep_server_1 -v /tmp/tmp.m4OQ9WB73G:/dev/keep-0 --link api_server:api arvados/keep
163 doc_server
164 Starting container:
165   /usr/bin/docker.io run -d -i -t -p 9898:80 --name doc_server arvados/doc
166
167 *****************************************************************
168 You can access the Arvados documentation at http://localhost:9898
169 *****************************************************************
170
171 workbench_server
172 Starting container:
173   /usr/bin/docker.io run -d -i -t -p 9899:80 --name workbench_server --link api_server:api arvados/workbench
174
175 *****************************************************************
176 You can access the Arvados workbench at http://localhost:9899
177 *****************************************************************
178 </code></pre></notextile>
179
180 h2. Accessing workbench
181
182 Point your browser to the Dockerized workbench:
183
184 <notextile>
185 <pre><code><span class="userinput">https://localhost:9899</span>
186 </code></pre>
187 </notextile>
188
189 Now use the google account you specified as @API_AUTO_ADMIN_USER@ in @config.yml@ to log in.
190
191 You will be prompted by your browser that you are accessing a site with an untrusted SSL certificate. This is normal; by default the Arvados Docker installation uses self-signed SSL certificates for the SSO and API servers, respectively. If you use a local SSO server in a Docker container, you will be prompted *twice*. The default is to use the Curoverse SSO server.
192
193