Installing troubleshooting tools in a Container Apps ‘hello-world’ image

4 minute read | By Anthony Salemo

This post will cover installing networking troubleshooting tools into the Container Apps ‘hello-world’ quickstart image


Currently, the ‘hello-world’ quickstart image used when creating a new Container App via the Azure Portal and enabling the “Quickstart” image option does not container typical troubleshooting tools.

Quickstart image

The image used is This can be pulled locally and tested with, regarding the package installation below, as well.

This image uses CBL-mariner 2.x - which subsequentially uses the tdnf package manager. yum and rpm is available as a package manager as well.

CBL-mariner’s package manager is based off of dnf which is based off of yum - and also has RPM repository usage. There is commonality here given that RHEL/Fedora or others use this as well.

For more information on CBL-mariner’s package managers and other general information, see here.

If needed, update the package repository with tdnf update -yy prior to installation of below packages.

Installing tools like these in a “test” container can be useful in scenarios where you’re trying to troubleshoot network connectivity issues between hosts - and/or if the “main” application is currently not accessible or down.

Troubleshooting tools


To install nc (netcat), run the following:

tdnf install nc -yy

You can check the version to ensure it’s installed

sh-5.1# nc -v
Ncat: Version 7.93 ( )
Ncat: You must specify a host to connect to. QUITTING.

nslookup and dig

To install nslookup and dig, you need the bind-utils package:

tdnf install bind-utils -yy

nslookup and dig should now be installed:

sh-5.1# nslookup                                                                                                                                          

Non-authoritative answer:
sh-5.1# dig -v                                                                                                                                                       
DiG 9.16.44


You can install netstat by installing net-tools:

tdnf install net-tools -yy

Check the version to ensure it’s now installed:

sh-5.1# netstat --version
net-tools 2.10
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others


To install wget, install the wget package:

tdnf install wget -yy

Validate this is now installed:

sh-5.1# wget --version
GNU Wget 1.21.2 built on linux-gnu.


To install traceroute, use the traceroute package:

tdnf install traceroute -yy

Check the version for installation confirmation:

sh-5.1# traceroute --version
Modern traceroute for Linux, version 2.1.3
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later


You can install tcptraceroute with the following packages:

tdnf install traceroute util-linux

NOTE: Without util-linux you’ll get /usr/bin/tcptraceroute: line 29: getopt: command not found when trying to invoke the tcptraceroute command


tcpping has a few prerequisites for proper usage.

  • Install bc with tdnf install bc -yy
  • Install the awk command - tdnf install gawk -yy
  • Install the traceroute package. See the tcptraceroute section
  • Install the wget package. See the wget section

Install tcpping with the following:

cd /usr/bin
chmod 755 tcpping

Confirm this is now installed:

sh-5.1# tcpping
traceroute to (, 255 hops max, 52 byte packets
seq 0: tcp response from ( <syn,ack>  2.850 ms
traceroute to (, 255 hops max, 52 byte packets
seq 1: tcp response from ( <syn,ack>  2.165 ms


tcpdump can be installed with the following:

tdnf install -y tcpdump

You can confirm installation by checking the version:

sh-5.1# tcpdump --version
tcpdump version 4.99.1
libpcap version 1.10.1 (with TPACKET_V3)
OpenSSL 1.1.1k  FIPS 25 Mar 2021


You can install an openssh client in replacement of telnet (which ideally shouldn’t be used over other better tools nowadays) with the following:

tdnf install openssh-clients

Validate that the command can now be used:

sh-5.1# ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command [argument ...]]