Mercurial > hg > orthanc-book
annotate Sphinx/source/users/docker.rst @ 1102:4f3709b36f8a
clarifying docker
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 16 Aug 2024 10:50:55 +0200 |
parents | 567de375e89f |
children | 689c27b34bd6 |
rev | line source |
---|---|
54 | 1 .. _docker: |
2 .. highlight:: bash | |
3 | |
4 | |
882
815f70009ec2
highlight osimis/orthanc docker images since jodogne/orthanc images are currently not up-to-date
Alain Mazy <am@osimis.io>
parents:
866
diff
changeset
|
5 jodogne/orthanc Docker images |
815f70009ec2
highlight osimis/orthanc docker images since jodogne/orthanc images are currently not up-to-date
Alain Mazy <am@osimis.io>
parents:
866
diff
changeset
|
6 ============================= |
54 | 7 |
481
4f076a3b9934
unanswered-forum.rst
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
461
diff
changeset
|
8 .. toctree:: |
4f076a3b9934
unanswered-forum.rst
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
461
diff
changeset
|
9 :hidden: |
4f076a3b9934
unanswered-forum.rst
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
461
diff
changeset
|
10 |
1023
5d4701d8fe28
replaced osimis/orthanc by orthancteam/orthanc
Alain Mazy <am@osimis.io>
parents:
1021
diff
changeset
|
11 docker-orthancteam.rst |
481
4f076a3b9934
unanswered-forum.rst
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
461
diff
changeset
|
12 |
4f076a3b9934
unanswered-forum.rst
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
461
diff
changeset
|
13 |
54 | 14 .. contents:: |
15 :depth: 3 | |
16 | |
17 | |
18 Introduction | |
19 ------------ | |
20 | |
21 `Docker images <https://en.wikipedia.org/wiki/Docker_(software)>`__ | |
22 for the Orthanc core and its official plugins are freely available on | |
23 the `DockerHub platform <https://hub.docker.com/u/jodogne/>`__. The | |
24 source code of the corresponding Docker images is available on `GitHub | |
25 <https://github.com/jodogne/OrthancDocker>`__. | |
26 | |
1102 | 27 |
28 .. _docker-jodogne-vs-orthanc-team: | |
29 | |
30 Orthanc vs. Orthanc Team Docker images | |
31 -------------------------------------- | |
32 | |
33 Two different flavors of Docker images for Orthanc are available: | |
229 | 34 |
35 * The ``jodogne/orthanc`` and ``jodogne/orthanc-plugins`` Docker | |
36 images that are described on this page are always kept in sync with | |
37 the latest releases of the Orthanc project, with a basic | |
38 configuration system that is inherited from the Debian packages | |
1099
567de375e89f
note about jodogne/orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1075
diff
changeset
|
39 (i.e., manual edition of the configuration files). This is also |
567de375e89f
note about jodogne/orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1075
diff
changeset
|
40 where the new experimental features from `Sébastien Jodogne's |
567de375e89f
note about jodogne/orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1075
diff
changeset
|
41 research team at UCLouvain <https://orthanc.uclouvain.be/>`__ are |
1102 | 42 initially released. The binaries used in these images correspond to |
43 the Linux Standard Base binaries. The default user interface is the | |
44 built-in **Orthanc Explorer**. These images are most useful to | |
45 **software developers and researchers**. | |
229 | 46 |
1027
60b0b7ea409b
migration to orthancteam
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1023
diff
changeset
|
47 * Our commercial partner `Orthanc Team <https://orthanc.team/>`__ also |
1102 | 48 `publishes separate Docker images |
1023
5d4701d8fe28
replaced osimis/orthanc by orthancteam/orthanc
Alain Mazy <am@osimis.io>
parents:
1021
diff
changeset
|
49 <https://hub.docker.com/r/orthancteam/orthanc>`__. These |
1102 | 50 ``orthancteam/orthanc`` images are used by the technical team of the |
51 Orthanc Team company in order to provide professional support to | |
52 their customers, with a configuration system that can be tuned using | |
53 **environment variables** (which is very handy if using Docker | |
54 Compose or Kubernetes). The binaries used in these images are | |
55 compiled from scratch. The default user interface is the **Orthanc | |
56 Explorer 2** :ref:`plugin <orthanc-explorer-2>`. A :ref:`specific | |
57 page <docker-orthancteam>` is available to describe how these images | |
58 should be used. These images are targeted at **ops teams**. | |
229 | 59 |
60 **Note for CentOS users:** The Docker environment might be difficult to | |
54 | 61 configure on your platform. Hints are available on the `Orthanc Users |
62 discussion group | |
63 <https://groups.google.com/d/msg/orthanc-users/w-uPAknnRQc/-XhzBGSCAwAJ>`__. | |
64 | |
65 | |
66 Running the Orthanc core | |
67 ------------------------ | |
68 | |
69 The following command will start the core of Orthanc, with all the | |
70 plugins disabled:: | |
71 | |
363
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
72 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc |
54 | 73 |
74 Once Orthanc is running, use Mozilla Firefox at URL | |
75 http://localhost:8042/ to interact with Orthanc. The default username | |
76 is ``orthanc`` and its password is ``orthanc``. | |
77 | |
78 The command above starts the mainline version of Orthanc, whose | |
69 | 79 development is in continuous progress. Do not forget to regularly |
80 update the Docker image to benefit from the latest features:: | |
81 | |
363
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
82 $ docker pull jodogne/orthanc |
69 | 83 |
84 If more stability is required, you can select the official release of | |
85 Orthanc to be run:: | |
54 | 86 |
1075 | 87 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.4 |
54 | 88 |
89 Passing additional command-line options (e.g. to make Orthanc verbose) | |
90 can be done as follows (note the ``/etc/orthanc`` option that is | |
91 required for Orthanc to find its configuration files):: | |
92 | |
1075 | 93 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.4 /etc/orthanc --verbose |
54 | 94 |
95 | |
96 Usage, with plugins enabled | |
97 --------------------------- | |
98 | |
99 The following command will run the mainline version of the Orthanc | |
100 core, together with its :ref:`Web viewer <webviewer>`, its | |
101 :ref:`PostgreSQL support <postgresql>`, its :ref:`DICOMweb | |
102 implementation <dicomweb>`, and its :ref:`whole-slide imaging viewer | |
103 <wsi>`:: | |
104 | |
363
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
105 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins |
54 | 106 |
365 | 107 Or you can also start a specific version of Orthanc for more stability:: |
108 | |
1075 | 109 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.12.4 |
365 | 110 |
364
234de55ed125
usage of the python plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
111 If you have an interest in the :ref:`Python plugin <python-plugin>`, |
234de55ed125
usage of the python plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
112 you can use the ``orthanc-python`` image. The latter image is a |
234de55ed125
usage of the python plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
113 heavier version of the ``orthanc-plugins`` image, as it embeds the |
234de55ed125
usage of the python plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
114 Python 3.7 interpreter. Here is how to start this image:: |
234de55ed125
usage of the python plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
115 |
365 | 116 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python |
1075 | 117 $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.12.4 |
364
234de55ed125
usage of the python plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
363
diff
changeset
|
118 |
54 | 119 |
120 Fine-tuning the configuration | |
121 ----------------------------- | |
122 | |
123 For security reasons, you should at least protect your instance of | |
124 Orthanc by changing this default user, in the ``RegisteredUsers`` | |
125 :ref:`configuration option <configuration>`. You will also probably | |
126 need to fine-tune other parameters, notably the list of the DICOM | |
127 modalities Orthanc knows about. | |
128 | |
129 You can generate a custom configuration file for Orthanc as follows:: | |
130 | |
1075 | 131 $ docker run --rm --entrypoint=cat jodogne/orthanc:1.12.4 /etc/orthanc/orthanc.json > /tmp/orthanc.json |
54 | 132 |
133 Then, edit the just-generated file ``/tmp/orthanc.json`` and restart | |
134 Orthanc with your updated configuration:: | |
135 | |
1075 | 136 $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc:1.12.4 |
54 | 137 |
384
e4b0a4d69f42
note about memory usage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
382
diff
changeset
|
138 *Remark:* These Docker images automatically set the environment |
e4b0a4d69f42
note about memory usage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
382
diff
changeset
|
139 variable ``MALLOC_ARENA_MAX`` to ``5`` in order to :ref:`control |
e4b0a4d69f42
note about memory usage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
382
diff
changeset
|
140 memory usage <scalability-memory>`. This default setting can be |
e4b0a4d69f42
note about memory usage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
382
diff
changeset
|
141 overriden by providing the option ``-e MALLOC_ARENA_MAX=1`` when |
386 | 142 invoking ``docker run`` (the value ``0`` corresponds to the default |
143 value). | |
384
e4b0a4d69f42
note about memory usage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
382
diff
changeset
|
144 |
54 | 145 |
382 | 146 .. _docker-compose: |
147 | |
148 Configuration management using Docker Compose | |
149 --------------------------------------------- | |
150 | |
151 Depending on the context, the `Docker Compose tool | |
152 <https://docs.docker.com/compose/>`__ might be easier to use than the | |
153 plain Docker tool, as it allows replacing long command lines as above, | |
154 by plain configuration files. The trick here is to provide the JSON | |
155 configuration files to Orthanc as `secrets | |
156 <https://docs.docker.com/compose/compose-file/#secrets>`__ (note that | |
157 the related option ``configs`` could in theory be better, | |
158 unfortunately it is only available to `Docker Swarm | |
159 <https://github.com/docker/compose/issues/5110>`__). | |
160 | |
673
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
161 .. highlight:: yaml |
382 | 162 |
163 First create the ``docker-compose.yml`` file as follows (this one uses | |
164 the `YAML file format <https://en.wikipedia.org/wiki/YAML>`__):: | |
165 | |
166 version: '3.1' # Secrets are only available since this version of Docker Compose | |
167 services: | |
168 orthanc: | |
1075 | 169 image: jodogne/orthanc-plugins:1.12.4 |
382 | 170 command: /run/secrets/ # Path to the configuration files (stored as secrets) |
171 ports: | |
402 | 172 - 4242:4242 |
382 | 173 - 8042:8042 |
174 secrets: | |
673
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
175 - orthanc.json |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
176 environment: |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
177 - ORTHANC_NAME=HelloWorld |
382 | 178 secrets: |
179 orthanc.json: | |
180 file: orthanc.json | |
181 | |
182 .. highlight:: json | |
183 | |
184 Then, place the configuration file ``orthanc.json`` next to the | |
185 ``docker-compose.yml`` file. Here is a minimalist ``orthanc.json``:: | |
186 | |
187 { | |
673
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
188 "Name" : "${ORTHANC_NAME} in Docker Compose", |
382 | 189 "RemoteAccessAllowed" : true |
190 } | |
191 | |
192 .. highlight:: bash | |
193 | |
194 This single configuration file should contain all the required | |
195 configuration options for Orthanc and all its plugins. The container | |
196 can then be started as follows:: | |
197 | |
198 $ docker-compose up | |
199 | |
673
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
200 Note how the `environment variable |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
201 <https://docs.docker.com/compose/environment-variables/>`__ |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
202 ``ORTHANC_NAME`` has been used in order to easily adapt the |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
203 configuration of Orthanc. This results from the fact that Orthanc |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
204 injects :ref:`environment variables <orthanc-environment-variables>` |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
205 once reading the content of its configuration files (since Orthanc |
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
206 1.5.0). |
382 | 207 |
673
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
208 |
54 | 209 Making the Orthanc database persistent |
210 -------------------------------------- | |
211 | |
212 The filesystem of Docker containers is volatile (its content is | |
213 deleted once the container stops). You can make the Orthanc database | |
214 persistent by mapping the ``/var/lib/orthanc/db`` folder of the | |
215 container to some path in the filesystem of your Linux host, e.g.:: | |
216 | |
217 $ mkdir /tmp/orthanc-db | |
1075 | 218 $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.12.4 |
54 | 219 |
220 | |
221 Whole-slide imaging support | |
222 --------------------------- | |
223 | |
224 The ``orthanc-plugins`` image includes support for :ref:`microscopic | |
225 whole-slide imaging (WSI) <wsi>`. For instance, the following command | |
226 will start the WSI viewer plugin transparently together with Orthanc:: | |
227 | |
1075 | 228 $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins:1.12.4 |
54 | 229 |
230 Note that we gave the name ``orthanc-wsi`` to this new Docker | |
231 container. Then, the Dicomizer command-line tool can be invoked as | |
232 follows:: | |
233 | |
1075 | 234 $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins:1.12.4 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif |
54 | 235 |
236 This command needs a few explanations: | |
237 | |
238 * ``--link=orthanc-wsi:orthanc`` links the container running the | |
239 Dicomizer, to the Docker container running Orthanc that we started | |
240 just before. | |
241 * ``--entrypoint=OrthancWSIDicomizer`` specifies that the Dicomizer | |
242 must be run instead of the Orthanc server. | |
243 * ``-v /tmp/Source.tif:/tmp/Source.tif:ro`` maps the source image | |
244 ``/tmp/Source.tif`` on the host computer into the Orthanc container | |
245 as read-only file ``/tmp/Source.tif``. | |
246 * ``--orthanc=http://orthanc:8042/`` instructs the Dicomizer to push | |
247 images through the ``--link`` created above. | |
248 * ``--username=orthanc --password=orthanc`` correspond to the default | |
249 credentials of the ``orthanc-plugins`` image. | |
250 | |
251 Obviously, you are free to add all the options you wish (check out the | |
252 ``--help`` flag to list these options). In particular, the | |
253 ``--dataset`` option allows to specify DICOM tags, in the JSON file | |
254 format, so as to include them in the resulting DICOM series (the | |
255 option ``--sample-dataset`` prints a sample JSON file that has the | |
256 expected format). | |
257 | |
258 If you have a source image that is not a hierarchical TIFF, you must | |
358
011b01ccf52d
fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
336
diff
changeset
|
259 instruct the Dicomizer to use `OpenSlide <https://openslide.org/>`__ |
011b01ccf52d
fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
336
diff
changeset
|
260 to decode it by adding the ``--openslide`` option:: |
54 | 261 |
1075 | 262 $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins:1.12.4 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs |
54 | 263 |
264 | |
265 PostgreSQL and Orthanc inside Docker | |
266 ------------------------------------ | |
267 | |
268 It is possible to run both Orthanc and PostgreSQL inside Docker. First, start the official PostgreSQL container:: | |
269 | |
363
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
270 $ docker run --name some-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=pgpassword --rm postgres |
54 | 271 |
272 Open another shell, and create a database to host the Orthanc database:: | |
273 | |
363
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
274 $ docker run -it --link some-postgres:postgres --rm postgres sh -c 'echo "CREATE DATABASE orthanc;" | exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres' |
54 | 275 |
276 You will have to type the password (cf. the environment variable | |
277 ``POSTGRES_PASSWORD`` above that it set to ``pgpassword``). Then, | |
278 retrieve the IP and the port of the PostgreSQL container, together | |
279 with the default Orthanc configuration file:: | |
280 | |
363
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
281 $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres |
9c28eeab2db6
removed sudo from docker
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
358
diff
changeset
|
282 $ docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres |
1075 | 283 $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins:1.12.4 /etc/orthanc/orthanc.json > /tmp/orthanc.json |
54 | 284 |
673
767c2550fa00
environment variable in docker compose
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
638
diff
changeset
|
285 .. highlight:: text |
54 | 286 |
287 Add the following section to ``/tmp/orthanc.json`` (adapting the | |
288 values Host and Port to what docker inspect said above):: | |
289 | |
290 "PostgreSQL" : { | |
291 "EnableIndex" : true, | |
292 "EnableStorage" : true, | |
293 "Host" : "172.17.0.38", | |
294 "Port" : 5432, | |
295 "Database" : "orthanc", | |
296 "Username" : "postgres", | |
297 "Password" : "pgpassword" | |
298 } | |
299 | |
300 .. highlight:: bash | |
301 | |
302 Finally, you can start Orthanc:: | |
303 | |
1075 | 304 $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins:1.12.4 |
54 | 305 |
306 | |
307 Debugging | |
308 --------- | |
309 | |
176 | 310 .. highlight:: text |
311 | |
54 | 312 For debugging purpose, you can start an interactive bash session as |
313 follows:: | |
314 | |
1075 | 315 $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc:1.12.4 |
316 $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins:1.12.4 |