SlideShare a Scribd company logo
Debugging Java Apps in Containers:
No Heavy Welding Gear Required
Daniel Bryant
@danielbryantuk
Steve Poole
@spoole167
Agenda
• Assuming Java and Docker basic knowledge
• You can still use standard Java tooling
• Docker is not as ‘contained’ as we think
• Containers do change some things (a lot)
• Case studies
• Monitoring and logging FTW
• Docker debug tool
• OS debug tools
Who Are We?
Steve Poole
IBM Developer
@spoole167
Daniel Bryant
Principal Consultant,
OpenCredo
@danielbryantuk
Making Java Real Since Version 0.9
Open Source Advocate
DevOps Practitioner (whatever that means!)
Driving Change
“Biz-dev-QA-ops”
Leading change in organisations
All over Docker, Mesos, k8s, Go, Java
InfoQ, DZone, Voxxed contributor
Do We Need the Welding Gear?
Part 1
Simple and even simpler…
Simple example (using spark java, maven and docker)
…
public class App {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<mainClass>App</mainClass>
</configuration>
</plugin>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.3</version>
</dependency>
Dockerfiles
FROM maven:3.3.3-jdk-8
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN mvn compile
CMD mvn exec:java
FROM dukeserver
CMD /usr/share/maven/bin/mvnDebug exec:java
$ docker build -t dukeserver .
$ docker build -t dukeserver-debug -f Dockerfile-debug .
Simple
• Treat Docker image as a remote server
– Enable debugging port in Docker at launch
• -p 8000:8000
– Point debugger to image host
• 192.168.99.100
• And you’re done
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
Even simpler
docker ps
CONTAINER ID IMAGE COMMAND PORTS
ce98c30288c0 dukeserver-debug "/bin/sh -c '/usr/sha” 0.0.0.0:8000->8000/tcp,
0.0.0.0:8081->4567/tcp
95043b8003ac dukeserver "/bin/sh -c '/usr/sha” 0.0.0.0:8080->4567/tcp
root@ce98c30288c0:/usr/src/app#
root@ce98c30288c0:/usr/src/app# ps -A
PID TTY TIME CMD
1 ? 00:00:00 sh
6 ? 00:00:00 mvnDebug
8 ? 00:00:00 java
40 ? 00:00:00 bash
47 ? 00:00:00 ps
docker exec –it <<container>> /bin/bash
Even, even simpler
For Mac and Windows
Even, even simpler
Remote Debugging
• Working with JMX and Docker
– Remote debugging
– Jconsole / VisualVM
• Great Instructions
– ptmccarthy.github.io/2014/07/24/remote-jmx-
with-docker/
Gotchas
java -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9010 
-Dcom.sun.management.jmxremote.rmi.port=9010 
-Dcom.sun.management.jmxremote.local.only=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-jar MyApp.jar
• Ports must be mapped at ‘docker run’
– docker run –d -p 8080:8080 -p 9010:9010
Java Debug Tooling
• docker exec –it <<container>> /bin/bash
• jps
– Local VM id (lvmid)
• jstat
– JVM Statistics
– -class
– -compiler
– -gcutil
• jstack
– Stack trace
Interlude: some simple truths about Docker
https://www.flickr.com/photos/45131642@N00/
Is this your view of a container?
Do you equate one with this?
https://www.flickr.com/photos/don-stewart/
Or this?
Sorry – it’s more like:
https://www.flickr.com/photos/smoovey/
Your container
The reality of containers
Welcome to the World of Containers
• Restrictions (typically)
– Minimal OS
– Limited resources
– JRE vs JDK (with Java 9, minimal JDK?)
• JVM doesn’t always respect resource limits
– cgroup/namespace awareness
• Clustering/autoscaling/microscaling
– Constant restarts and reallocation
…and the World of ‘Cloud’
• Everything is on the network
– Seriously, everything…
• Noisy neighbours
– Containers and VMs
• No writing to ‘local’ disk
– Typically emphemeral
The Hardest Part of Debugging
• Finding the problem is difficult…
• A distributed system only makes this harder!
• Cloud and containers embrace transient
• …yep, we’ve got a challenge on our hands!
Case Studies
Case Study: The Perfect Crime
• Symptom
– Container crashing spectularly trashing filesystem
• Diagnostics
– Err…
• Problem
– No logs to debug
• Resolution
– Write logs to mounted directory
– Ship logs via logstash
Case Study: The Slow Consumer
• Symptom
– Suddenly realised we had loads of “consumers”
• Diagnostics
– Examine container (docker stats)
– Docker exec (top, vmstat, df –h)
– docker exec with jstat
• Problem
– GC issues (easy fix)
• Resolution
– Ship metrics to InfluxDB (with Telegraf and Grafana)
– Alerting and information radiators
Aggregation: Sick Cattle, Not Sick Pets
Case Study: App Crashing
• Symptom
– Spring Boot app slow to respond/crashing
• Diagnostics
– Examine host (top, vmstat, df –h)
– Examine container (docker stats)
– Docker exec (top, vmstat, df –h)
• Problem
– No disk space for docker logging
• Resolution
– Increase disk space (move logs to mount)
Case Study: Container Builds Failing
• Symptom
– Jenkins builds sporadically failing – insufficient space
• Diagnostics
– Examine host (df –h)
– Inodes! (df –i)
• Problem
– Old containers taking lots of inodes
• Resolution
– Clear old containers
– docker run --rm
Case Study: Application Dieing
• Symptom
– Application boots, then crashes, container killed
• Diagnostics
– Examine app logs
– Examine host (top, vmstat, df –h)
– Examine container (docker stats)
– dmesg | egrep -i 'killed process'
• Problem
– Only allowed Xmx memory limit (no overhead)
• Resolution
– Set memory limit = Heap (Xmx) + Metaspace + JVM
Case Study: App Not Starting
• Symptom
– Spring boot application not starting (or slow)
• Diagnostics
– The usual suspects
– jstack – blocked on SecureRandom
• Problem
– /dev/random not so good on containers
• Resolution
– -Djava.security.egd=file:/dev/urandom
$ jstack 2616
2014-09-04 07:33:30
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode):
"Attach Listener" #14 daemon prio=9 os_prio=0 tid=0x00007fb678001000 nid=0xaae waiting on condition
[0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"localhost-startStop-1" #13 daemon prio=5 os_prio=0 tid=0x00007fb65000d000 nid=0xa46 runnable
[0x00007fb662fec000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:246)
at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:539)
at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:192)
at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:210)
- locked <0x00000000f15173a0> (a sun.security.provider.SecureRandom)
at java.security.SecureRandom.nextBytes(SecureRandom.java:457)
- locked <0x00000000f15176c0> (a java.security.SecureRandom)
at java.security.SecureRandom.next(SecureRandom.java:480)
at java.util.Random.nextInt(Random.java:329)
at org.apache.catalina.util.SessionIdGenerator.createSecureRandom(SessionIdGenerator.java:246)
Case Study: Rollouts Broke Comms
• Symptom
– New app deployed with new IP added to ELB
– Existing apps couldn’t talk to it
• Diagnostics
– dig service.qa.mystore.com (looks good)
– Create simple Java service that echoes IPs
• Problem
– Java’s wonky caching of DNS
– Pre Java 7 caches indefinitely
– Post Java 7 ‘implementation specific’ unless SM installed
• Resolution
– -Dsun.net.inetaddr.ttl=0
Case Study: Slow Communications
• Symptom
– Some apps would drip feed data onto the wire
– Existing apps couldn’t talk to it
• Diagnostics
– Vmstat
– Saw high cpu ‘wa’
• Problem
– Packed high contention containers on same host
• Resolution
– Spread containers out
$vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
......
0 0 169936 545976 119436 2414452 0 0 980 272 2578 3342 0 1 73 26
1 3 169936 544036 119436 2416012 0 0 696 890 2528 3778 1 3 72 24
0 3 169936 544308 119436 2416012 0 0 68 2342 2833 2143 0 1 61 37
0 3 169936 544160 119436 2416012 0 0 60 2806 2924 2276 0 1 65 34
0 1 169936 544288 119436 2416272 0 0 24 3356 1816 2009 0 1 63 36
0 1 169936 543692 119488 2416480 0 0 218 926 2031 2441 0 1 67 32
Our Learnings
Why Instrument?
• Post Mortem
– Containers are gone and so is all their state…
• Aggregation (or not)
– coherent view of your application behaviour
when it’s distributed (microservices or not)
– lots of containers running
• Looking for hints and smoking guns..
What to Instrument
Instrumentation
• Instrument the code/application
– codehale-metrics, Spring Boot Actuator etc
• Instrument the OS
– Collectd, munin, SAR
• Instrument the system
– Zipkin, App Dynamics etc
The Value of System Monitoring
github.com/openzipkin/zipkin github.com/openzipkin/docker-zipkin
Monitoring
• In-situ monitoring
– Curl docker stats endpoint
– CRaSH shell
• Use monitoring tools
– InfluxDB, Telegraf, Prometheus
– Datadog, AWS CloudWatch, Grafana
Graphing
Graphing
Logging
• docker logs are your friend
• Rotate app log files to mounted dir
– Otherwise they disappear!
• The ElasticSearch-Logstash-Kibana stack
– github.com/deviantony/docker-elk
• Log like an operator
Quick summary of docker/OS debug tooling
Looking Inside the Container
Docker Debug Tools
• docker stats
– Live stream of CPU and memory
• docker info
– Displays system-wide information
• docker inspect
– Detailed information on a container
– $ docker inspect --format='{{.NetworkSettings.IPAddress}}'
$INSTANCE_ID
– $ docker inspect --format='{{.LogPath}}' $INSTANCE_ID
– $ docker inspect --format='{{range $p, $conf :=
.NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}'
$INSTANCE_ID
OS Debugging Tools
www.joyent.com/blog/linux-performance-analysis-and-tools-brendan-gregg-s-talk-at-scale-11x
OS Debugging Tools
• Top, htop,
• ps,
• mpstat,
• free, df -h
• vmstat,
• iostat
• /proc filesystem
– meminfo and vmstat not cgroup aware!
Networking Rulez
• tcpdump,
• netstat, ntop
• dig (not nslookup)
• ping, tracert
• Lsof –u <<username>>
Let’s wrap this up…
Summary
• Debugging is still an essential skill
– rebooting containers doesn’t cut it
• Isolating (targeting) the issue is vital
– Distributing tracing (Zipkin etc)
• Build your debugging toolbox
– Java + docker + OS debugging
• Monitoring and logging FTW
Books
Thanks! Questions?
@danielbryantuk - @spoole167
Disclaimer: We’ve made best efforts with this
advice, but this is a rapidly developing space

More Related Content

What's hot

Leveraging Open Source for Database Development: Database Version Control wit...
Leveraging Open Source for Database Development: Database Version Control wit...Leveraging Open Source for Database Development: Database Version Control wit...
Leveraging Open Source for Database Development: Database Version Control wit...
All Things Open
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
Matthew Groves
 
Apache Lucene for Java EE Developers
Apache Lucene for Java EE DevelopersApache Lucene for Java EE Developers
Apache Lucene for Java EE Developers
Virtual JBoss User Group
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
0xdaryl
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
Ryan Cuprak
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)
Hendrik Ebbers
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
All Things Open
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
Pavel Bucek
 
Java 11 OMG
Java 11 OMGJava 11 OMG
Java 11 OMG
Hendrik Ebbers
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
Shekhar Gulati
 
Angular beans
Angular beansAngular beans
Angular beans
Bessem Hmidi
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
Antoine Sabot-Durand
 
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java GuyGoogle AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Max Völkel
 
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKitAtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
Wojciech Seliga
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
Ryan Cuprak
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Max Andersen
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
Yevgeniy Brikman
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)
Yevgeniy Brikman
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
Yevgeniy Brikman
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
Matt Raible
 

What's hot (20)

Leveraging Open Source for Database Development: Database Version Control wit...
Leveraging Open Source for Database Development: Database Version Control wit...Leveraging Open Source for Database Development: Database Version Control wit...
Leveraging Open Source for Database Development: Database Version Control wit...
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
Apache Lucene for Java EE Developers
Apache Lucene for Java EE DevelopersApache Lucene for Java EE Developers
Apache Lucene for Java EE Developers
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
Java 11 OMG
Java 11 OMGJava 11 OMG
Java 11 OMG
 
Modern web application development with java ee 7
Modern web application development with java ee 7Modern web application development with java ee 7
Modern web application development with java ee 7
 
Angular beans
Angular beansAngular beans
Angular beans
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java GuyGoogle AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
 
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKitAtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
 

Viewers also liked

Docker and jvm. A good idea?
Docker and jvm. A good idea?Docker and jvm. A good idea?
Docker and jvm. A good idea?
Christopher Batey
 
Docker Tooling for Java EE Developers
Docker Tooling for Java EE  DevelopersDocker Tooling for Java EE  Developers
Docker Tooling for Java EE Developers
Xavier Coulon
 
Eclipse Neon Webinar - Docker Tooling for Developers
Eclipse Neon Webinar - Docker Tooling for DevelopersEclipse Neon Webinar - Docker Tooling for Developers
Eclipse Neon Webinar - Docker Tooling for Developers
Xavier Coulon
 
Running and Scaling Docker Containers with Kontena
Running and Scaling Docker Containers with KontenaRunning and Scaling Docker Containers with Kontena
Running and Scaling Docker Containers with Kontena
Jussi Nummelin
 
No one puts java in the container
No one puts java in the containerNo one puts java in the container
No one puts java in the container
kensipe
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM
kensipe
 
Invoice Capture in the Nuxeo Platform Using Ephesoft and CMIS
Invoice Capture in the Nuxeo Platform Using Ephesoft and CMISInvoice Capture in the Nuxeo Platform Using Ephesoft and CMIS
Invoice Capture in the Nuxeo Platform Using Ephesoft and CMIS
Nuxeo
 
Connecting Content Management Applications with CMIS
Connecting Content Management Applications with CMISConnecting Content Management Applications with CMIS
Connecting Content Management Applications with CMIS
Nuxeo
 
CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016
CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016 CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016
CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016
MHM (Mayer Hoffman McCann P.C.)
 
Accelerate [XLR8] your agile transformation
Accelerate [XLR8] your agile transformationAccelerate [XLR8] your agile transformation
Accelerate [XLR8] your agile transformation
Emiliano Soldi
 
Agile in 1,5 hours : brief introduction
Agile in 1,5 hours : brief introductionAgile in 1,5 hours : brief introduction
Agile in 1,5 hours : brief introduction
Kostetska Galyna
 
The harder you push, the harder the system pushes you back
The harder you push, the harder the system pushes you backThe harder you push, the harder the system pushes you back
The harder you push, the harder the system pushes you back
Emiliano Soldi
 
Devops counselling
Devops counsellingDevops counselling
Distributed product owner team for an agile medical development xp2013 Vienna
Distributed product owner team for an agile medical development xp2013 ViennaDistributed product owner team for an agile medical development xp2013 Vienna
Distributed product owner team for an agile medical development xp2013 Vienna
Andrea Heck
 
Business Triathlon #BizTriathlon
Business Triathlon #BizTriathlonBusiness Triathlon #BizTriathlon
Business Triathlon #BizTriathlon
Emiliano Soldi
 
Be Agile. Scale Up. Stay Lean. And Have More Fun by Dean Leffingwell
Be Agile. Scale Up. Stay Lean. And Have More Fun by Dean LeffingwellBe Agile. Scale Up. Stay Lean. And Have More Fun by Dean Leffingwell
Be Agile. Scale Up. Stay Lean. And Have More Fun by Dean Leffingwell
Agile Software Community of India
 
The Agile Scaling Model (ASM): Be as Agile as You Need to Be
The Agile Scaling Model (ASM): Be as Agile as You Need to BeThe Agile Scaling Model (ASM): Be as Agile as You Need to Be
The Agile Scaling Model (ASM): Be as Agile as You Need to Be
Agile Software Community of India
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
RightScale
 
Agile testing for agile sparks kanban clients
Agile testing for agile sparks kanban clientsAgile testing for agile sparks kanban clients
Agile testing for agile sparks kanban clients
Yuval Yeret
 
Driving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile TeamsDriving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile Teams
LitheSpeed
 

Viewers also liked (20)

Docker and jvm. A good idea?
Docker and jvm. A good idea?Docker and jvm. A good idea?
Docker and jvm. A good idea?
 
Docker Tooling for Java EE Developers
Docker Tooling for Java EE  DevelopersDocker Tooling for Java EE  Developers
Docker Tooling for Java EE Developers
 
Eclipse Neon Webinar - Docker Tooling for Developers
Eclipse Neon Webinar - Docker Tooling for DevelopersEclipse Neon Webinar - Docker Tooling for Developers
Eclipse Neon Webinar - Docker Tooling for Developers
 
Running and Scaling Docker Containers with Kontena
Running and Scaling Docker Containers with KontenaRunning and Scaling Docker Containers with Kontena
Running and Scaling Docker Containers with Kontena
 
No one puts java in the container
No one puts java in the containerNo one puts java in the container
No one puts java in the container
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM
 
Invoice Capture in the Nuxeo Platform Using Ephesoft and CMIS
Invoice Capture in the Nuxeo Platform Using Ephesoft and CMISInvoice Capture in the Nuxeo Platform Using Ephesoft and CMIS
Invoice Capture in the Nuxeo Platform Using Ephesoft and CMIS
 
Connecting Content Management Applications with CMIS
Connecting Content Management Applications with CMISConnecting Content Management Applications with CMIS
Connecting Content Management Applications with CMIS
 
CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016
CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016 CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016
CBIZ & MHM Executive Education Series Webinar Courses for Q2 2016
 
Accelerate [XLR8] your agile transformation
Accelerate [XLR8] your agile transformationAccelerate [XLR8] your agile transformation
Accelerate [XLR8] your agile transformation
 
Agile in 1,5 hours : brief introduction
Agile in 1,5 hours : brief introductionAgile in 1,5 hours : brief introduction
Agile in 1,5 hours : brief introduction
 
The harder you push, the harder the system pushes you back
The harder you push, the harder the system pushes you backThe harder you push, the harder the system pushes you back
The harder you push, the harder the system pushes you back
 
Devops counselling
Devops counsellingDevops counselling
Devops counselling
 
Distributed product owner team for an agile medical development xp2013 Vienna
Distributed product owner team for an agile medical development xp2013 ViennaDistributed product owner team for an agile medical development xp2013 Vienna
Distributed product owner team for an agile medical development xp2013 Vienna
 
Business Triathlon #BizTriathlon
Business Triathlon #BizTriathlonBusiness Triathlon #BizTriathlon
Business Triathlon #BizTriathlon
 
Be Agile. Scale Up. Stay Lean. And Have More Fun by Dean Leffingwell
Be Agile. Scale Up. Stay Lean. And Have More Fun by Dean LeffingwellBe Agile. Scale Up. Stay Lean. And Have More Fun by Dean Leffingwell
Be Agile. Scale Up. Stay Lean. And Have More Fun by Dean Leffingwell
 
The Agile Scaling Model (ASM): Be as Agile as You Need to Be
The Agile Scaling Model (ASM): Be as Agile as You Need to BeThe Agile Scaling Model (ASM): Be as Agile as You Need to Be
The Agile Scaling Model (ASM): Be as Agile as You Need to Be
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Agile testing for agile sparks kanban clients
Agile testing for agile sparks kanban clientsAgile testing for agile sparks kanban clients
Agile testing for agile sparks kanban clients
 
Driving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile TeamsDriving Lean Innovation on Agile Teams
Driving Lean Innovation on Agile Teams
 

Similar to J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"

Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on Heroku
Joe Kutner
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Sysdig
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
Olve Hansen
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
Docker, Inc.
 
Continuous delivery workflow with Docker
Continuous delivery workflow with DockerContinuous delivery workflow with Docker
Continuous delivery workflow with Docker
Igor Moochnick
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
Ben Hall
 
Dock ir incident response in a containerized, immutable, continually deploy...
Dock ir   incident response in a containerized, immutable, continually deploy...Dock ir   incident response in a containerized, immutable, continually deploy...
Dock ir incident response in a containerized, immutable, continually deploy...
Shakacon
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
Appsembler
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
Dimitar Damyanov
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
Anthony Dahanne
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with Chaperone
Gary Wisniewski
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize Django
Hannes Hapke
 
The Usual Suspects - Red Hat Developer Day 2012-11-01
The Usual Suspects - Red Hat Developer Day 2012-11-01The Usual Suspects - Red Hat Developer Day 2012-11-01
The Usual Suspects - Red Hat Developer Day 2012-11-01
Jorge Hidalgo
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
Nuxeo
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoops
Gianluca Varisco
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
Giacomo Vacca
 
.NET Debugging Workshop
.NET Debugging Workshop.NET Debugging Workshop
.NET Debugging Workshop
Sasha Goldshtein
 
Continuous delivery w projekcie open source - Marcin Stachniuk
Continuous delivery w projekcie open source - Marcin StachniukContinuous delivery w projekcie open source - Marcin Stachniuk
Continuous delivery w projekcie open source - Marcin Stachniuk
MarcinStachniuk
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Patrick Chanezon
 
Docker and-daily-devops
Docker and-daily-devopsDocker and-daily-devops
Docker and-daily-devops
Satria Ady Pradana
 

Similar to J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required" (20)

Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on Heroku
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Continuous delivery workflow with Docker
Continuous delivery workflow with DockerContinuous delivery workflow with Docker
Continuous delivery workflow with Docker
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 
Dock ir incident response in a containerized, immutable, continually deploy...
Dock ir   incident response in a containerized, immutable, continually deploy...Dock ir   incident response in a containerized, immutable, continually deploy...
Dock ir incident response in a containerized, immutable, continually deploy...
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
 
No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!No more Dockerfiles? Buildpacks to help you ship your image!
No more Dockerfiles? Buildpacks to help you ship your image!
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with Chaperone
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize Django
 
The Usual Suspects - Red Hat Developer Day 2012-11-01
The Usual Suspects - Red Hat Developer Day 2012-11-01The Usual Suspects - Red Hat Developer Day 2012-11-01
The Usual Suspects - Red Hat Developer Day 2012-11-01
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoops
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
 
.NET Debugging Workshop
.NET Debugging Workshop.NET Debugging Workshop
.NET Debugging Workshop
 
Continuous delivery w projekcie open source - Marcin Stachniuk
Continuous delivery w projekcie open source - Marcin StachniukContinuous delivery w projekcie open source - Marcin Stachniuk
Continuous delivery w projekcie open source - Marcin Stachniuk
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
 
Docker and-daily-devops
Docker and-daily-devopsDocker and-daily-devops
Docker and-daily-devops
 

More from Daniel Bryant

ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
Daniel Bryant
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
Daniel Bryant
 
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
Daniel Bryant
 
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Daniel Bryant
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
Daniel Bryant
 
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Daniel Bryant
 
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Daniel Bryant
 
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
Daniel Bryant
 
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
Daniel Bryant
 
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
Daniel Bryant
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
Daniel Bryant
 
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Daniel Bryant
 
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
Daniel Bryant
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
Daniel Bryant
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Daniel Bryant
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Daniel Bryant
 
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
Daniel Bryant
 
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
Daniel Bryant
 
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
Daniel Bryant
 
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
Daniel Bryant
 

More from Daniel Bryant (20)

ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
 
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
 
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
 
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"
 
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
 
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
 
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
 
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
 
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
 
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
 
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
 
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
 
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
 
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
 

Recently uploaded

Sonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdfSonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdf
SubhamMandal40
 
The importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT StandardizationThe importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT Standardization
Axel Rennoch
 
The Role of IoT in Australian Mobile App Development - PDF Guide
The Role of IoT in Australian Mobile App Development - PDF GuideThe Role of IoT in Australian Mobile App Development - PDF Guide
The Role of IoT in Australian Mobile App Development - PDF Guide
Shiv Technolabs
 
Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10
ankush9927
 
Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
Brian Pichman
 
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
Torry Harris
 
Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
aakash malhotra
 
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptxIntroduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
313mohammedarshad
 
Acumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdf
Acumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdfAcumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdf
Acumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdf
BrainSell Technologies
 
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
Priyanka Aash
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...
Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...
Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...
bellared2
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
Steven Carlson
 
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptxUse Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
SynapseIndia
 
WhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring AppsWhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring Apps
HackersList
 
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Muhammad Ali
 
Google I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged SlidesGoogle I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged Slides
Google Developer Group - Harare
 
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
Priyanka Aash
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
shyamraj55
 
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
shanihomely
 

Recently uploaded (20)

Sonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdfSonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdf
 
The importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT StandardizationThe importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT Standardization
 
The Role of IoT in Australian Mobile App Development - PDF Guide
The Role of IoT in Australian Mobile App Development - PDF GuideThe Role of IoT in Australian Mobile App Development - PDF Guide
The Role of IoT in Australian Mobile App Development - PDF Guide
 
Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10
 
Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
 
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
 
Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
 
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptxIntroduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
 
Acumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdf
Acumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdfAcumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdf
Acumatica vs. Sage Intacct vs. NetSuite _ NOW CFO.pdf
 
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
(CISOPlatform Summit & SACON 2024) Digital Personal Data Protection Act.pdf
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...
Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...
Russian Girls Call Navi Mumbai 🎈🔥9920725232 🔥💋🎈 Provide Best And Top Girl Ser...
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
 
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptxUse Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
 
WhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring AppsWhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring Apps
 
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
 
Google I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged SlidesGoogle I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged Slides
 
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
 
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
 

J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"

  • 1. Debugging Java Apps in Containers: No Heavy Welding Gear Required Daniel Bryant @danielbryantuk Steve Poole @spoole167
  • 2. Agenda • Assuming Java and Docker basic knowledge • You can still use standard Java tooling • Docker is not as ‘contained’ as we think • Containers do change some things (a lot) • Case studies • Monitoring and logging FTW • Docker debug tool • OS debug tools
  • 3. Who Are We? Steve Poole IBM Developer @spoole167 Daniel Bryant Principal Consultant, OpenCredo @danielbryantuk Making Java Real Since Version 0.9 Open Source Advocate DevOps Practitioner (whatever that means!) Driving Change “Biz-dev-QA-ops” Leading change in organisations All over Docker, Mesos, k8s, Go, Java InfoQ, DZone, Voxxed contributor
  • 4. Do We Need the Welding Gear?
  • 5. Part 1 Simple and even simpler…
  • 6. Simple example (using spark java, maven and docker) … public class App { public static void main(String[] args) { get("/hello", (req, res) -> "Hello World"); } } <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.4.0</version> <configuration> <mainClass>App</mainClass> </configuration> </plugin> <dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core</artifactId> <version>2.3</version> </dependency>
  • 7. Dockerfiles FROM maven:3.3.3-jdk-8 COPY . /usr/src/app WORKDIR /usr/src/app RUN mvn compile CMD mvn exec:java FROM dukeserver CMD /usr/share/maven/bin/mvnDebug exec:java $ docker build -t dukeserver . $ docker build -t dukeserver-debug -f Dockerfile-debug .
  • 8. Simple • Treat Docker image as a remote server – Enable debugging port in Docker at launch • -p 8000:8000 – Point debugger to image host • 192.168.99.100 • And you’re done
  • 10. Even simpler docker ps CONTAINER ID IMAGE COMMAND PORTS ce98c30288c0 dukeserver-debug "/bin/sh -c '/usr/sha” 0.0.0.0:8000->8000/tcp, 0.0.0.0:8081->4567/tcp 95043b8003ac dukeserver "/bin/sh -c '/usr/sha” 0.0.0.0:8080->4567/tcp root@ce98c30288c0:/usr/src/app# root@ce98c30288c0:/usr/src/app# ps -A PID TTY TIME CMD 1 ? 00:00:00 sh 6 ? 00:00:00 mvnDebug 8 ? 00:00:00 java 40 ? 00:00:00 bash 47 ? 00:00:00 ps docker exec –it <<container>> /bin/bash
  • 11. Even, even simpler For Mac and Windows
  • 13. Remote Debugging • Working with JMX and Docker – Remote debugging – Jconsole / VisualVM • Great Instructions – ptmccarthy.github.io/2014/07/24/remote-jmx- with-docker/
  • 14. Gotchas java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.rmi.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar MyApp.jar • Ports must be mapped at ‘docker run’ – docker run –d -p 8080:8080 -p 9010:9010
  • 15. Java Debug Tooling • docker exec –it <<container>> /bin/bash • jps – Local VM id (lvmid) • jstat – JVM Statistics – -class – -compiler – -gcutil • jstack – Stack trace
  • 16. Interlude: some simple truths about Docker
  • 18. Do you equate one with this? https://www.flickr.com/photos/don-stewart/
  • 20. Sorry – it’s more like:
  • 22. The reality of containers
  • 23. Welcome to the World of Containers • Restrictions (typically) – Minimal OS – Limited resources – JRE vs JDK (with Java 9, minimal JDK?) • JVM doesn’t always respect resource limits – cgroup/namespace awareness • Clustering/autoscaling/microscaling – Constant restarts and reallocation
  • 24. …and the World of ‘Cloud’ • Everything is on the network – Seriously, everything… • Noisy neighbours – Containers and VMs • No writing to ‘local’ disk – Typically emphemeral
  • 25. The Hardest Part of Debugging • Finding the problem is difficult… • A distributed system only makes this harder! • Cloud and containers embrace transient • …yep, we’ve got a challenge on our hands!
  • 27. Case Study: The Perfect Crime • Symptom – Container crashing spectularly trashing filesystem • Diagnostics – Err… • Problem – No logs to debug • Resolution – Write logs to mounted directory – Ship logs via logstash
  • 28. Case Study: The Slow Consumer • Symptom – Suddenly realised we had loads of “consumers” • Diagnostics – Examine container (docker stats) – Docker exec (top, vmstat, df –h) – docker exec with jstat • Problem – GC issues (easy fix) • Resolution – Ship metrics to InfluxDB (with Telegraf and Grafana) – Alerting and information radiators
  • 29. Aggregation: Sick Cattle, Not Sick Pets
  • 30. Case Study: App Crashing • Symptom – Spring Boot app slow to respond/crashing • Diagnostics – Examine host (top, vmstat, df –h) – Examine container (docker stats) – Docker exec (top, vmstat, df –h) • Problem – No disk space for docker logging • Resolution – Increase disk space (move logs to mount)
  • 31. Case Study: Container Builds Failing • Symptom – Jenkins builds sporadically failing – insufficient space • Diagnostics – Examine host (df –h) – Inodes! (df –i) • Problem – Old containers taking lots of inodes • Resolution – Clear old containers – docker run --rm
  • 32. Case Study: Application Dieing • Symptom – Application boots, then crashes, container killed • Diagnostics – Examine app logs – Examine host (top, vmstat, df –h) – Examine container (docker stats) – dmesg | egrep -i 'killed process' • Problem – Only allowed Xmx memory limit (no overhead) • Resolution – Set memory limit = Heap (Xmx) + Metaspace + JVM
  • 33. Case Study: App Not Starting • Symptom – Spring boot application not starting (or slow) • Diagnostics – The usual suspects – jstack – blocked on SecureRandom • Problem – /dev/random not so good on containers • Resolution – -Djava.security.egd=file:/dev/urandom
  • 34. $ jstack 2616 2014-09-04 07:33:30 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode): "Attach Listener" #14 daemon prio=9 os_prio=0 tid=0x00007fb678001000 nid=0xaae waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "localhost-startStop-1" #13 daemon prio=5 os_prio=0 tid=0x00007fb65000d000 nid=0xa46 runnable [0x00007fb662fec000] java.lang.Thread.State: RUNNABLE at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:246) at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:539) at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144) at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:192) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:210) - locked <0x00000000f15173a0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:457) - locked <0x00000000f15176c0> (a java.security.SecureRandom) at java.security.SecureRandom.next(SecureRandom.java:480) at java.util.Random.nextInt(Random.java:329) at org.apache.catalina.util.SessionIdGenerator.createSecureRandom(SessionIdGenerator.java:246)
  • 35. Case Study: Rollouts Broke Comms • Symptom – New app deployed with new IP added to ELB – Existing apps couldn’t talk to it • Diagnostics – dig service.qa.mystore.com (looks good) – Create simple Java service that echoes IPs • Problem – Java’s wonky caching of DNS – Pre Java 7 caches indefinitely – Post Java 7 ‘implementation specific’ unless SM installed • Resolution – -Dsun.net.inetaddr.ttl=0
  • 36. Case Study: Slow Communications • Symptom – Some apps would drip feed data onto the wire – Existing apps couldn’t talk to it • Diagnostics – Vmstat – Saw high cpu ‘wa’ • Problem – Packed high contention containers on same host • Resolution – Spread containers out
  • 37. $vmstat procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa ...... 0 0 169936 545976 119436 2414452 0 0 980 272 2578 3342 0 1 73 26 1 3 169936 544036 119436 2416012 0 0 696 890 2528 3778 1 3 72 24 0 3 169936 544308 119436 2416012 0 0 68 2342 2833 2143 0 1 61 37 0 3 169936 544160 119436 2416012 0 0 60 2806 2924 2276 0 1 65 34 0 1 169936 544288 119436 2416272 0 0 24 3356 1816 2009 0 1 63 36 0 1 169936 543692 119488 2416480 0 0 218 926 2031 2441 0 1 67 32
  • 39. Why Instrument? • Post Mortem – Containers are gone and so is all their state… • Aggregation (or not) – coherent view of your application behaviour when it’s distributed (microservices or not) – lots of containers running • Looking for hints and smoking guns..
  • 41. Instrumentation • Instrument the code/application – codehale-metrics, Spring Boot Actuator etc • Instrument the OS – Collectd, munin, SAR • Instrument the system – Zipkin, App Dynamics etc
  • 42. The Value of System Monitoring github.com/openzipkin/zipkin github.com/openzipkin/docker-zipkin
  • 43. Monitoring • In-situ monitoring – Curl docker stats endpoint – CRaSH shell • Use monitoring tools – InfluxDB, Telegraf, Prometheus – Datadog, AWS CloudWatch, Grafana
  • 46. Logging • docker logs are your friend • Rotate app log files to mounted dir – Otherwise they disappear! • The ElasticSearch-Logstash-Kibana stack – github.com/deviantony/docker-elk • Log like an operator
  • 47. Quick summary of docker/OS debug tooling
  • 48. Looking Inside the Container
  • 49. Docker Debug Tools • docker stats – Live stream of CPU and memory • docker info – Displays system-wide information • docker inspect – Detailed information on a container – $ docker inspect --format='{{.NetworkSettings.IPAddress}}' $INSTANCE_ID – $ docker inspect --format='{{.LogPath}}' $INSTANCE_ID – $ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID
  • 51. OS Debugging Tools • Top, htop, • ps, • mpstat, • free, df -h • vmstat, • iostat • /proc filesystem – meminfo and vmstat not cgroup aware!
  • 52. Networking Rulez • tcpdump, • netstat, ntop • dig (not nslookup) • ping, tracert • Lsof –u <<username>>
  • 54. Summary • Debugging is still an essential skill – rebooting containers doesn’t cut it • Isolating (targeting) the issue is vital – Distributing tracing (Zipkin etc) • Build your debugging toolbox – Java + docker + OS debugging • Monitoring and logging FTW
  • 55. Books
  • 56. Thanks! Questions? @danielbryantuk - @spoole167 Disclaimer: We’ve made best efforts with this advice, but this is a rapidly developing space

Editor's Notes

  1. Connect to a running container from the command line
  2. Pressing the exec button gets me a terminal connected to the running container..
  3. http://www.thegeekstuff.com/2011/03/sar-examples/
  4. http://www.sysdig.org/ Docker ps –lq # id of last container export CONTAINER_ID=$(docker ps -lq) ~ $ docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID docker inspect --format='{{.LogPath}}' $INSTANCE_ID Docker-machine ssh dev
  5. https://speakerdeck.com/garethr/containers-and-microservices-make-performance-worse Setting term for top Installing iostat/vmstat in container Blocked on I/O Blocked on CPU Steal time