Get Started. It's Free
or sign up with your email address
Docker by Mind Map: Docker

1. Java baseline

1.1. use deterministic image

1.2. handle events

1.2.1. dumb-init

1.2.2. tini

1.2.3. docker run --init

1.2.4. https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

1.3. multi-stage build

1.4. shutdown hook

1.5. container-aware Java version

1.5.1. Java 10+

1.5.2. Java 8 update 191+

1.6. .dockerignore

1.7. base-images

1.7.1. Fabric8 JBoss OpenJDK

1.7.2. Open JDK

1.7.3. Red Hat OpenShift

1.7.4. use your enterprise standard

2. look for

2.1. small image size

2.1.1. multi stage build

2.1.2. cleanup in the same step (immutable layers)

2.1.3. apt-get install with **no-install-recommends**

2.2. fast startup time

2.2.1. CDS (class data sharing)

3. Monitoring and observability

3.1. **Jolokia**: export JMS over HTTP

3.2. **Hawtio**

3.2.1. as Spring Boot actuator

3.3. Prometheus

4. frameworks

4.1. Spring Boot

4.2. Quarkus

4.3. Micronaut

5. usages

5.1. ngix

5.1.1. /usr/share/ngix/html

6. history

6.1. 1979 chroot

6.1.1. directory structure isolation

6.2. 2000 jail (FreeBSD 4.0)

6.2.1. process isolation

6.3. 2004 Solaris Zones (Solaris 10)

6.3.1. first real containerization

6.4. 2008 LXC: Linux Containers

6.4.1. kernel 2.6.24

6.4.2. very complicated to run

6.5. 2013 Docker

7. orchestration

7.1. swarm

7.1.1. automatic security

7.2. services

7.2.1. modes

7.2.1.1. replicated

7.2.1.2. global

8. build tools

8.1. Spring Boot **./gradlew :buildBootImage**

8.2. Jib

8.3. Eclipse JKube

9. app configuration

9.1. volume with config files

9.2. environment properties

9.3. configuration registry

9.4. change entry point

10. build

10.1. commands trivia

10.1.1. #syntax=docker/dockerfile:1.4

10.1.2. RUN << EOF

10.1.2.1. multiple lines without '\'

10.1.3. COPY << EOF

10.1.3.1. provide file content in place

10.2. commands

10.2.1. runtime

10.2.2. build

10.2.3. metadata

10.3. avoid using root

10.3.1. group add -r app && useradd -r -g app appuser