Package Java EE applications using Docker
-
Upload
indicthreads -
Category
Software
-
view
380 -
download
1
Transcript of Package Java EE applications using Docker
![Page 1: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/1.jpg)
Package your Java EE applications
usingDocker and Kubernetes
Arun Gupta, @arungupta Red Hat
![Page 3: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/3.jpg)
What is Docker?
![Page 4: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/4.jpg)
What is Docker?• Open source project and company
![Page 5: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/5.jpg)
What is Docker?• Open source project and company
• Used to create containers for software applications
![Page 6: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/6.jpg)
What is Docker?• Open source project and company
• Used to create containers for software applications
• Package Once Deploy Anywhere (PODA)
![Page 7: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/7.jpg)
Advantages
![Page 8: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/8.jpg)
Advantages• Faster deployments
![Page 9: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/9.jpg)
Advantages• Faster deployments
• Isolation
![Page 10: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/10.jpg)
Advantages• Faster deployments
• Isolation
• Portability - “it works on my machine”
![Page 11: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/11.jpg)
Advantages• Faster deployments
• Isolation
• Portability - “it works on my machine”
• Snapshotting
![Page 12: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/12.jpg)
Advantages• Faster deployments
• Isolation
• Portability - “it works on my machine”
• Snapshotting
• Security sandbox
![Page 13: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/13.jpg)
Advantages• Faster deployments
• Isolation
• Portability - “it works on my machine”
• Snapshotting
• Security sandbox
• Limit resource usage
![Page 14: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/14.jpg)
Advantages• Faster deployments
• Isolation
• Portability - “it works on my machine”
• Snapshotting
• Security sandbox
• Limit resource usage
• Simplified dependency
![Page 15: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/15.jpg)
Advantages• Faster deployments
• Isolation
• Portability - “it works on my machine”
• Snapshotting
• Security sandbox
• Limit resource usage
• Simplified dependency
• Sharing
![Page 16: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/16.jpg)
Underlying Technology
![Page 17: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/17.jpg)
Underlying Technology• Written in Go
![Page 18: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/18.jpg)
Underlying Technology• Written in Go
• Uses several Linux features
![Page 19: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/19.jpg)
Underlying Technology• Written in Go
• Uses several Linux features
• Namespaces to provide isolation
![Page 20: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/20.jpg)
Underlying Technology• Written in Go
• Uses several Linux features
• Namespaces to provide isolation
• Control groups to share/limit hardware resources
![Page 21: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/21.jpg)
Underlying Technology• Written in Go
• Uses several Linux features
• Namespaces to provide isolation
• Control groups to share/limit hardware resources
• Union File System makes it light and fast
![Page 22: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/22.jpg)
Underlying Technology• Written in Go
• Uses several Linux features
• Namespaces to provide isolation
• Control groups to share/limit hardware resources
• Union File System makes it light and fast
• libcontainer defines container format
![Page 23: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/23.jpg)
Is it only Linux?
![Page 24: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/24.jpg)
Is it only Linux?• Natively supported in Linux
![Page 25: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/25.jpg)
Is it only Linux?• Natively supported in Linux
• Can be installed on Mac or Windows using boot2docker
![Page 26: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/26.jpg)
Is it only Linux?• Natively supported in Linux
• Can be installed on Mac or Windows using boot2docker
• Tiny Core Linux VM
![Page 27: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/27.jpg)
![Page 28: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/28.jpg)
![Page 29: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/29.jpg)
![Page 30: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/30.jpg)
• Image defined in text-based Dockerfile
![Page 31: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/31.jpg)
• Image defined in text-based Dockerfile
• List of commands to build the image FROM fedora:latest CMD echo “Hello world”
![Page 32: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/32.jpg)
• Image defined in text-based Dockerfile
• List of commands to build the image
• docker build or pull
FROM fedora:latest CMD echo “Hello world”
![Page 33: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/33.jpg)
![Page 34: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/34.jpg)
• Images shared using registry
![Page 35: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/35.jpg)
• Images shared using registry
• Docker Hub is public SaaS
![Page 36: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/36.jpg)
• Images shared using registry
• Docker Hub is public SaaS
• Private registries can be setup inside firewall
![Page 37: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/37.jpg)
• Images shared using registry
• Docker Hub is public SaaS
• Private registries can be setup inside firewall
• docker push or pull <IMAGE_ID>
![Page 38: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/38.jpg)
![Page 39: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/39.jpg)
• Container built from the image
![Page 40: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/40.jpg)
• Container built from the image
• Runtime representation of the image
![Page 41: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/41.jpg)
• Container built from the image
• Runtime representation of the image
• Self contained execution environment
![Page 42: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/42.jpg)
• Container built from the image
• Runtime representation of the image
• Self contained execution environment
• docker run <IMAGE_ID>
![Page 43: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/43.jpg)
Docker commands• docker ps: List running containers
• docker stop: Stop a running container
• docker rm: Remove a running container
• docker rmi: Remove an image
• …
https://docs.docker.com/reference/commandline/cli/
![Page 44: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/44.jpg)
Docker Hub
Docker Host DaemonDocker
Client
Docker Workflow
![Page 45: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/45.jpg)
Docker Hub
Docker Host DaemonDocker
Client
docker run <image> docker …
Docker Workflow
![Page 46: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/46.jpg)
Docker Hub
Docker Host DaemonDocker
Client
docker run <image> docker …
Docker Workflow
![Page 47: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/47.jpg)
Docker Hub
Image 1
Image 2
Image 3
Image M
Docker Host DaemonDocker
Client
docker run <image> docker …
Docker Workflow
![Page 48: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/48.jpg)
Docker Hub
Image 1
Image 2
Image 3
Image M
Docker Host
Image 1
Image 2
Image 3
Image N
DaemonDocker Client
docker run <image> docker …
Docker Workflow
![Page 49: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/49.jpg)
Docker Hub
Image 1
Image 2
Image 3
Image M
Docker Host
Image 1
Image 2
Image 3
Image N
Daemon
Container 1
Container 2
Container O
Docker Client
docker run <image> docker …
Docker Workflow
![Page 50: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/50.jpg)
![Page 51: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/51.jpg)
Recipe #1.1
FROM jboss/wildfly
RUN curl -L https://github.com/javaee-samples/javaee7-hol/raw/master/solution/movieplex7-1.0-SNAPSHOT.war -o /opt/jboss/wildfly/standalone/deployments/movieplex7-1.0-SNAPSHOT.war
docker run -it -p 8080:8080 arungupta/javaee7-hol
Host
Application Server
Database
![Page 52: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/52.jpg)
Recipe #1.2Host
Application Server Database
http://blog.arungupta.me/wildfly-javaee7-mysql-link-two-docker-container-techtip65/
data-source add --name=mysqlDS --driver-name=mysql --jndi-name=java:jboss/datasources/ExampleMySQLDS --connection-url=jdbc:mysql://$DB_PORT_3306_TCP_ADDR:
$DB_PORT_3306_TCP_PORT/sample?useUnicode=true&characterEncoding=UTF-8 --user-name=mysql --password=mysql --use-ccm=false --max-pool-size=25 --blocking-
timeout-wait-millis=5000 --enabled=true
![Page 53: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/53.jpg)
Recipe #1.3Host
Application Server Database
http://blog.arungupta.me/docker-orchestration-fig-techtip67/
![Page 54: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/54.jpg)
Recipe #1.4Host
Application Server
http://blog.arungupta.me/docker-container-linking-across-multiple-hosts-techtip69/
Host
Database
![Page 55: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/55.jpg)
Recipe #1.4Host
Application Server
http://blog.arungupta.me/docker-container-linking-across-multiple-hosts-techtip69/
Host
Database
![Page 56: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/56.jpg)
Recipe #1.4Host
Application Server
http://blog.arungupta.me/docker-container-linking-across-multiple-hosts-techtip69/
Host
Database
![Page 57: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/57.jpg)
Recipe #1.4Host
Application Server
http://blog.arungupta.me/docker-container-linking-across-multiple-hosts-techtip69/
Host
Database
![Page 58: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/58.jpg)
Arquillian Cube• Controls the lifecycle of Docker images as part of
test cycle - automatically or manually
• Uses Docker REST API to talk to container
• Talk using WildFly remote adapter (in container)
• Try it out
http://blog.arungupta.me/run-javaee-tests-wildfly-docker-arquillian-cube/
![Page 59: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/59.jpg)
Docker: Pros and Cons
![Page 60: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/60.jpg)
Docker: Pros and Cons• PROS
• Extreme application portability
• Very easy to create and work with derivative
• Fast boot on containers
![Page 61: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/61.jpg)
Docker: Pros and Cons• PROS
• Extreme application portability
• Very easy to create and work with derivative
• Fast boot on containers
• CONS
• Host-centric solution
• No higher-level provisioning
• No usage tracking/reporting
![Page 62: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/62.jpg)
Application Operating Environment
![Page 63: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/63.jpg)
Kubernetes
![Page 64: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/64.jpg)
Kubernetes• Open source orchestration system for Docker
containers
![Page 65: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/65.jpg)
Kubernetes• Open source orchestration system for Docker
containers
• Provide declarative primitives for the “desired state”
• Self-healing
• Auto-restarting
• Schedule across hosts
• Replicating
![Page 66: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/66.jpg)
![Page 67: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/67.jpg)
Concepts
![Page 68: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/68.jpg)
Concepts• Pods: collocated group of
Docker containers that share an IP and storage volume Docker
Pod 1 Pod 2
C1 C2 C3
![Page 69: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/69.jpg)
Concepts• Pods: collocated group of
Docker containers that share an IP and storage volume
• Service: Single, stable name for a set of pods, also acts as LB
DockerPod 1 Pod 2
C1 C2 C3
Pod 1
JBoss
Pod 2
JBoss
Service “web”
port 8080 port 8080
![Page 70: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/70.jpg)
Concepts• Pods: collocated group of
Docker containers that share an IP and storage volume
• Service: Single, stable name for a set of pods, also acts as LB
• Replication Controller: manages the lifecycle of pods and ensures specified number are running
DockerPod 1 Pod 2
C1 C2 C3
Pod 1
JBoss
Pod 2
JBoss
Service “web”
port 8080 port 8080
![Page 71: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/71.jpg)
Concepts• Pods: collocated group of
Docker containers that share an IP and storage volume
• Service: Single, stable name for a set of pods, also acts as LB
• Replication Controller: manages the lifecycle of pods and ensures specified number are running
• Label: used to organize and select group of objects
DockerPod 1 Pod 2
C1 C2 C3
Pod 1
JBoss
Pod 2
JBoss
Service “web”
port 8080 port 8080
![Page 72: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/72.jpg)
kubectl
![Page 73: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/73.jpg)
kubectl• Controls the Kubernetes cluster manager
![Page 74: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/74.jpg)
kubectl• Controls the Kubernetes cluster manager
• kubectl get pods or minions
![Page 75: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/75.jpg)
kubectl• Controls the Kubernetes cluster manager
• kubectl get pods or minions
• kubectl create -f <filename>
![Page 76: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/76.jpg)
kubectl• Controls the Kubernetes cluster manager
• kubectl get pods or minions
• kubectl create -f <filename>
• kubectl update or delete
![Page 77: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/77.jpg)
kubectl• Controls the Kubernetes cluster manager
• kubectl get pods or minions
• kubectl create -f <filename>
• kubectl update or delete
• kubectl resize —replicas=3 replicationcontrollers <name>
![Page 78: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/78.jpg)
export KUBERNETES_PROVIDER=vagrant./cluster/kube-up.sh
Mac OS X
Kubernetes (Vagrant)
Master Minion
![Page 79: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/79.jpg)
Recipe #2.1Mac OS X
Kubernetes (Vagrant)
Master
Minion
PodDocker
(WildFly)
http://blog.arungupta.me/javaee7-wildfly-kubernetes-mac-vagrant/
![Page 80: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/80.jpg)
Services• Abstract a set of pods as a single IP and port
• Simple TCP/UDP load balancing
• Creates environment variables in other pods
• Like “Docker links” but across hosts
• Stable endpoint for pods to reference
• Allows list of pods to change dynamically
![Page 81: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/81.jpg)
Recipe #2.2Minion
PodDocker
(WildFly)
PodDocker
(MySQL)MySQL Service
http://blog.arungupta.me/mysql-kubernetes-service-access-wildfly-pod-techtip72/
![Page 82: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/82.jpg)
Minion 2
Recipe #2.3Minion 1
PodDocker
(WildFly)
PodDocker
(MySQL)MySQL Service
![Page 83: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/83.jpg)
Replication Controller
![Page 84: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/84.jpg)
Replication Controller• Ensures specified number of pod “replicas” are
running
![Page 85: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/85.jpg)
Replication Controller• Ensures specified number of pod “replicas” are
running
• Pod templates are cookie cutters
![Page 86: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/86.jpg)
Replication Controller• Ensures specified number of pod “replicas” are
running
• Pod templates are cookie cutters
• Rescheduling
![Page 87: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/87.jpg)
Replication Controller• Ensures specified number of pod “replicas” are
running
• Pod templates are cookie cutters
• Rescheduling
• Manual or auto-scale replicas
![Page 88: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/88.jpg)
Replication Controller• Ensures specified number of pod “replicas” are
running
• Pod templates are cookie cutters
• Rescheduling
• Manual or auto-scale replicas
• Rolling updates
![Page 89: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/89.jpg)
Recipe #2.4
![Page 90: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/90.jpg)
Recipe #2.4
![Page 91: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/91.jpg)
Recipe #2.4
Minion 2
Minion 1Pod
Docker (WildFly)
PodDocker
(MySQL)MySQL Service
PodDocker
(WildFly)
WildFly Service
![Page 92: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/92.jpg)
Recipe #2.4
Minion 2
Minion 1Pod
Docker (WildFly)
PodDocker
(MySQL)MySQL Service
PodDocker
(WildFly)
WildFly Service
![Page 93: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/93.jpg)
Kubernetes: Pros and Cons• PROS
• Manage related Docker containers as a unit
• Container communication across hosts
• Availability and scalability through automated deployment and monitoring of pods and their replicas, across hosts
![Page 94: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/94.jpg)
Kubernetes: Pros and Cons• CONS
• Lifecycle of applications - build, deploy, manage, promote
• Port existing source code to run in Kubernetes
• DevOps: Dev -> Test -> Production
• No multi-tenancy
• On-premise (available on GCE)
• Assumes inter-pod networking as part of infrastructure
• Requires explicit load balancer
![Page 95: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/95.jpg)
Pod 7
ActiveMQ
Pod 8
ActiveMQ
“mq”
port 8161 port 8161
Pod 1
Apache
Pod 2
Apache
“web”
port 80 port 80
Pod 5
MySQL
Pod 6
MySQL
“db”
port 3306 port 3306
Pod 3
JBoss
Pod 4
JBoss
“javaee”
port 8080 port 8080
![Page 96: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/96.jpg)
Pod 7
ActiveMQ
Pod 8
ActiveMQ
“mq”
port 8161 port 8161
Pod 1
Apache
Pod 2
Apache
“web”
port 80 port 80
Pod 5
MySQL
Pod 6
MySQL
“db”
port 3306 port 3306
Pod 3
JBoss
Pod 4
JBoss
“javaee”
port 8080 port 8080
![Page 97: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/97.jpg)
Container Host
Container
Cluster Management
User Experience
![Page 98: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/98.jpg)
OpenShift 3 Features
![Page 99: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/99.jpg)
OpenShift 3 Features• Push to production - full DevOps
![Page 100: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/100.jpg)
OpenShift 3 Features• Push to production - full DevOps
• Client tools for building web applications
![Page 101: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/101.jpg)
OpenShift 3 Features• Push to production - full DevOps
• Client tools for building web applications
• Centralized administration and management of application component libraries
![Page 102: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/102.jpg)
OpenShift 3 Features• Push to production - full DevOps
• Client tools for building web applications
• Centralized administration and management of application component libraries
• Team and user isolation of containers, builds, and network communication in an easy multi-tenancy system
![Page 103: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/103.jpg)
Recipe #3.1
• Start OpenShift as Docker container
• Or run natively
• Use osc (OpenShift Client) instead of kubectl with Kubernetes configuration file
![Page 104: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/104.jpg)
Recipe #3.2• (Alpha) tools generate project JSON configuration
file that provide build/deployment
![Page 105: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/105.jpg)
40
![Page 106: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/106.jpg)
Recipe #3.3• Integration with JBoss Developer Studio (cooking)
![Page 107: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/107.jpg)
Summary• Container runtime and image distribution
• Roll your own solutions for everything
• Runtime and operational management of containers
• Lifecycle of applications - build, deploy, manage, promote
• Manage tens of thousands of applications with teams
![Page 108: Package Java EE applications using Docker](https://reader034.fdocuments.net/reader034/viewer/2022042817/55a5fea41a28abd9738b48ba/html5/thumbnails/108.jpg)
References
• blog.arungupta.me/topics/containers/
• github.com/openshift/origin