Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker...
Transcript of Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker...
![Page 1: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/1.jpg)
Dyalog's [Public]Docker ContainersMorten KrombergCTO, Dyalog Ltd.
![Page 2: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/2.jpg)
1
Dyalog's Docker Containers#dyalog20
Agenda What is a Container
Why should you want one?
Dyalog's Public Docker Containers Starting, Using, Stopping, Debugging
Extending Dyalog's Containers Combining Containers using
docker-compose
![Page 3: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/3.jpg)
2
Dyalog's Docker Containers#dyalog20
Agenda What is a Container
Why should you want one?
Dyalog's Public Docker Containers Starting, Using, Stopping, Debugging
Extending Dyalog's Containers Combining Containers using
docker-compose
![Page 4: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/4.jpg)
3
Dyalog's Docker Containers#dyalog20
What is a "Container"?Containers are a mechanism for partitioning a host computer so multiple applications believe they are running alone on the machine.
The effect is similar, but much more efficient than running a Virtual Machine.
![Page 5: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/5.jpg)
4
Dyalog's Docker Containers#dyalog20
Containers & Docker
http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
The most widely usedcontainer technologyare "docker" containers
![Page 6: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/6.jpg)
5
Dyalog's Docker Containers#dyalog20
Containers & Docker
http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
The most widely usedcontainer technologyare "docker" containers
![Page 7: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/7.jpg)
6
Dyalog's Docker Containers#dyalog20
FROM ubuntu:20.04
ADD ./dyalog-unicode_18.0.39491_amd64.deb /
RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/jarvis /jarvis
ENV CodeLocation="/code"
CMD dyalog /jarvis/distribution/jarvis.dws
"Dockerfile" (text) describes the Container
(Imaginary dyalog/jarvis image)
![Page 8: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/8.jpg)
7
Dyalog's Docker Containers#dyalog20
FROM ubuntu:20.04
ADD ./dyalog-unicode_18.0.39491_amd64.deb /
RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/jarvis /jarvis
ENV CodeLocation="/code"
CMD dyalog /jarvis/distribution/jarvis.dws
"Dockerfile" (text) describes the Container
Base Image
Files to Add
Run during Build
Environment Vars
Run at Startup
(Imaginary dyalog/jarvis image)
![Page 9: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/9.jpg)
8
Dyalog's Docker Containers#dyalog20
docker run ... Starts the Containerdocker run –it –p 8080:8080 dyalog/jarvis
![Page 10: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/10.jpg)
9
Dyalog's Docker Containers#dyalog20
docker run ... Starts the Containerdocker run –it –p 8080:8080 dyalog/jarvis
(don't ask …but also … don't forget!)
Switch Description
-p hhhh:cccc Map TCP port cccc in container to hhhh on host-e name=value Set environment variable inside the container-v /hfolder:/cfolder Mount hosts /hfolder as containers /cfolder-t Allocate a pseudo-TTY-i Keep stdin open even if not attached--rm Discard changes when container terminates
docker run cheat sheet
![Page 11: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/11.jpg)
10
Dyalog's Docker Containers#dyalog20
docker run ... map TCP portsdocker run -it –p 8080:8080 dyalog/jarvis
Maps port 8080 in containerto 8080 in the host
By default, the containernetwork is completely isolated
Switch Description
-p hhhh:cccc Map TCP port cccc in container to hhhh on host-e name=value Set environment variable inside the container-v /hfolder:/cfolder Mount hosts /hfolder as containers /cfolder-t Allocate a pseudo-TTY-i Keep stdin open even if not attached--rm Discard changes when container terminates
docker run cheat sheet
![Page 12: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/12.jpg)
11
Dyalog's Docker Containers#dyalog20
docker run ... mount volumesdocker run -it -v /my/app/folder:/code –p 8080:8080 dyalog/jarvis
Mount the host folder/my/app/folder to /codeinside the container.
Switch Description
-p hhhh:cccc Map TCP port cccc in container to hhhh on host-e name=value Set environment variable inside the container-v /hfolder:/cfolder Mount hosts /hfolder as containers /cfolder-t Allocate a pseudo-TTY-i Keep stdin open even if not attached--rm Discard changes when container terminates
docker run cheat sheet
![Page 13: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/13.jpg)
12
Dyalog's Docker Containers#dyalog20
docker run ... set environment varsdocker run -it -v /my/app/folder:/code –p 8080:8080 -e RIDE_INIT=SERVE:*:4502 –p 4502:4502 dyalog/jarvis
Set environment variableRIDE_INIT inside the container
NB: Don't forget to openthe additional port
Switch Description
-p hhhh:cccc Map TCP port cccc in container to hhhh on host-e name=value Set environment variable inside the container-v /hfolder:/cfolder Mount hosts /hfolder as containers /cfolder-t Allocate a pseudo-TTY-i Keep stdin open even if not attached--rm Discard changes when container terminates
docker run cheat sheet
![Page 14: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/14.jpg)
13
Dyalog's Docker Containers#dyalog20
![Page 15: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/15.jpg)
14
Dyalog's Docker Containers#dyalog20
![Page 16: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/16.jpg)
15
Dyalog's Docker Containers#dyalog20
![Page 17: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/17.jpg)
16
Dyalog's Docker Containers#dyalog20
![Page 18: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/18.jpg)
17
Dyalog's Docker Containers#dyalog20
![Page 19: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/19.jpg)
18
Dyalog's Docker Containers#dyalog20
Jarvis - Sample JSON ApplicationBy default, Jarvis serves a built-in demo application
![Page 20: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/20.jpg)
19
Dyalog's Docker Containers#dyalog20
Call Jarvis service from APL
![Page 21: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/21.jpg)
20
Dyalog's Docker Containers#dyalog20
More details on Docker and APL
Dyalog'18 (Belfast): Cloud Computing with APLhttps://dyalog.tv/Dyalog18/?v=LkXKUm9ffKA
Webinar: Microservices in Dyalog APLhttps://dyalog.tv/Webinar/?v=KKJMeGAWGaE
![Page 22: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/22.jpg)
21
Dyalog's Docker Containers#dyalog20
![Page 23: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/23.jpg)
22
Dyalog's Docker Containers#dyalog20
![Page 24: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/24.jpg)
23
Dyalog's Docker Containers#dyalog20
Dyalog's Public ContainersAt https://hub.docker.com/u/dyalog
Image Name Description
dyalog/dyalog Minimal Linux with Dyalog APL (currently debian:buster-slim)dyalog/jarvis dyalog/dyalog with Jarvis installeddyalog/jsonserver Use dyalog/jarvis instead
dyalog/miserver ... with MiServer installed
dyalog/jupyter For Dyalog-backed Jupyter notebooks
![Page 25: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/25.jpg)
24
Dyalog's Docker Containers#dyalog20
![Page 26: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/26.jpg)
25
Dyalog's Docker Containers#dyalog20
![Page 27: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/27.jpg)
26
Dyalog's Docker Containers#dyalog20
![Page 28: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/28.jpg)
27
Dyalog's Docker Containers#dyalog20
![Page 29: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/29.jpg)
28
Dyalog's Docker Containers#dyalog20
![Page 30: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/30.jpg)
29
Dyalog's Docker Containers#dyalog20
Boot FoldersEach of our public containers has a default folder which it will look for:
Image Name Description Boot Folder
dyalog/dyalog Minimal Linux with Dyalog APL /appdyalog/jarvis dyalog/dyalog with Jarvis installed /codedyalog/jsonserver Use dyalog/jarvis instead /code
dyalog/miserver ... with MiServer installed /misite
dyalog/jupyter For Dyalog-backed Jupyter notebooks /app
docker run -it -v /my/app/folder:/code dyalog/jarvis
![Page 31: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/31.jpg)
30
Dyalog's Docker Containers#dyalog20
Stopping a Container Implement some kind of ShutDown
method in your service The container will shut down when the
launched process terminates Connect RIDE if you can and type )OFF or ...
![Page 32: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/32.jpg)
31
Dyalog's Docker Containers#dyalog20
![Page 33: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/33.jpg)
32
Dyalog's Docker Containers#dyalog20
(hits CTRL+BREAK)
![Page 34: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/34.jpg)
33
Dyalog's Docker Containers#dyalog20
(hits CTRL+BREAK)
![Page 35: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/35.jpg)
34
Dyalog's Docker Containers#dyalog20
(hits CTRL+BREAK)
![Page 36: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/36.jpg)
35
Dyalog's Docker Containers#dyalog20
(hits CTRL+C)
![Page 37: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/37.jpg)
36
Dyalog's Docker Containers#dyalog20
Tags Containers may have several tags, identifying variants dyalog/dyalog has the following tags
latest 18.0 17.1 dotnetcore
Will probably become 18.0-dotnetcore, 19.0-dotnetcore
docker run –it –e RIDE_INIT=HTTP:*:4502 –p 4502:4502 dyalog/dyalog:17.1
![Page 38: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/38.jpg)
37
Dyalog's Docker Containers#dyalog20
![Page 39: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/39.jpg)
38
Dyalog's Docker Containers#dyalog20
Debugging – One More Time To be able to use RIDE for debugging, add
-e RIDE_INIT=SERVE:*:4502 –p 4502:4502
To use "Zero Footprint" RIDE via a browser, use HTTP mode:-e RIDE_INIT=HTTP:*:4502 –p 4502:4502
Live demo time...
![Page 40: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/40.jpg)
39
Dyalog's Docker Containers#dyalog20
Everything is the same under Linux In fact, Docker Desktop for Windows got
a huge makeover since last year Now uses "WSL"
(WindowsSubsystem forLinux)
![Page 41: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/41.jpg)
40
Dyalog's Docker Containers#dyalog20
![Page 42: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/42.jpg)
41
Dyalog's Docker Containers#dyalog20
![Page 43: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/43.jpg)
42
Dyalog's Docker Containers#dyalog20
Extending Dyalog's ContainersYou can extend Dyalog's containers with Your code Data, except it usually makes more
sense to map data in at runtime
![Page 44: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/44.jpg)
43
Dyalog's Docker Containers#dyalog20
![Page 45: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/45.jpg)
44
Dyalog's Docker Containers#dyalog20
![Page 46: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/46.jpg)
45
Dyalog's Docker Containers#dyalog20
![Page 47: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/47.jpg)
46
Dyalog's Docker Containers#dyalog20
![Page 48: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/48.jpg)
47
Dyalog's Docker Containers#dyalog20
![Page 49: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/49.jpg)
48
Dyalog's Docker Containers#dyalog20
![Page 50: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/50.jpg)
49
Dyalog's Docker Containers#dyalog20
![Page 51: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/51.jpg)
50
Dyalog's Docker Containers#dyalog20
![Page 52: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/52.jpg)
51
Dyalog's Docker Containers#dyalog20
Distributing Containers
![Page 53: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/53.jpg)
52
Dyalog's Docker Containers#dyalog20
Distributing Containers
![Page 54: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/54.jpg)
53
Dyalog's Docker Containers#dyalog20
Distributing Containers
![Page 55: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/55.jpg)
54
Dyalog's Docker Containers#dyalog20
Distributing Containers
![Page 56: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/56.jpg)
55
Dyalog's Docker Containers#dyalog20
Distributing Containers
![Page 57: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/57.jpg)
56
Dyalog's Docker Containers#dyalog20
Collaborating Containers We will use qWC to put a frontend on the
myzodiac server
![Page 58: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/58.jpg)
57
Dyalog's Docker Containers#dyalog20
Communicating Containers We will use qWC to put a frontend on
the myzodiac server
![Page 59: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/59.jpg)
58
Dyalog's Docker Containers#dyalog20
![Page 60: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/60.jpg)
59
Dyalog's Docker Containers#dyalog20
![Page 61: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/61.jpg)
60
Dyalog's Docker Containers#dyalog20
![Page 62: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/62.jpg)
61
Dyalog's Docker Containers#dyalog20
Let's build a qWC Container
docker build . –t mkromberg/qwc
Dyalog APL plus some QWC folders:
Maybe someday this will just be
mjhsoftware/qwc
![Page 63: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/63.jpg)
62
Dyalog's Docker Containers#dyalog20
To start it Start Jarvis "backend"
docker run –it –p 8080:8080 mkromberg/myzodiac
![Page 64: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/64.jpg)
63
Dyalog's Docker Containers#dyalog20
To start it Start Jarvis "backend"
docker run –it –p 8080:8080 mkromberg/myzodiac
... or use "docker-compose" ...
Start QWC frontenddocker run –it –v qwcuser:/qwc/User –v qwcconfig:/qwc/Config –p 1234:1234 –p 12345:12345mkromberg/qwc
![Page 65: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/65.jpg)
64
Dyalog's Docker Containers#dyalog20
![Page 66: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/66.jpg)
65
Dyalog's Docker Containers#dyalog20
docker-compose up
![Page 67: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/67.jpg)
66
Dyalog's Docker Containers#dyalog20
![Page 68: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/68.jpg)
67
Dyalog's Docker Containers#dyalog20
Let's test it ...
![Page 69: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/69.jpg)
68
Dyalog's Docker Containers#dyalog20
But instead we will use docker-composeContainers restarted if they "fail"
![Page 70: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/70.jpg)
69
Dyalog's Docker Containers#dyalog20
But instead we will use docker-compose
![Page 71: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/71.jpg)
70
Dyalog's Docker Containers#dyalog20
But instead we will use docker-compose
Only if myzodiac should beavailable from outside
![Page 72: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/72.jpg)
71
Dyalog's Docker Containers#dyalog20
![Page 73: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/73.jpg)
72
Dyalog's Docker Containers#dyalog20
![Page 74: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/74.jpg)
73
Dyalog's Docker Containers#dyalog20
docker-compose can also do Load balancing by starting multiple
copies of the same image and multiplexing between them
Help with continuous integration by pulling new versions of the images
and much more that I have not learned about yet
![Page 75: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/75.jpg)
74
Dyalog's Docker Containers#dyalog20
![Page 76: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/76.jpg)
75
Dyalog's Docker Containers#dyalog20
![Page 77: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/77.jpg)
76
Dyalog's Docker Containers#dyalog20
Relevant v19.0 Goals Completely rework I/O handling to allow
Support RIDE without -it RIDE improvements in multi-threaded
server environments Documentation for all the public dyalog
containers Open-source demo apps showing how to
build secure, load balanced apps in APL
![Page 78: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/78.jpg)
77
Dyalog's Docker Containers#dyalog20
We will publish our Dockerfiles on GitHub
![Page 79: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/79.jpg)
78
Dyalog's Docker Containers#dyalog20
Recap: Dyalog's Public ContainersAt https://hub.docker.com/u/dyalog
Image Name Description Boot Folder
dyalog/dyalog Minimal Linux with Dyalog APL /appdyalog/jarvis dyalog/dyalog with Jarvis installed /codedyalog/jsonserver Use dyalog/jarvis instead /code
dyalog/miserver ... with MiServer installed /misite
dyalog/jupyter For Dyalog-backed Jupyter notebooks /app
![Page 80: Dyalog's [Public] Docker Containers · 2020. 11. 11. · #dyalog20 Dyalog'sDocker Containers docker run ... map TCP ports docker run -it –p 8080:8080 dyalog/jarvis Maps port 8080](https://reader034.fdocuments.fr/reader034/viewer/2022052616/60a16358bbfc10318c0191e0/html5/thumbnails/80.jpg)
79
Dyalog's Docker Containers#dyalog20
Should we run a half-day workshop? Write to me if you would attend