In the first article in our SystemTap series, we learned how to install the powerful diagnostic tool, SystemTap, on an AWS EC2 instance and then wrote our very first “Hello World” script. We now need to explore some of the interesting (and more useful) scripts that come with SystemTap.
Building a SystemTap target environment
To make this article easier to read, we will split it into two parts. In this post, we will provide a Red Hat Enterprise Linux 7 platform container image with Docker on an AWS EC2 instance. After the SystemTap target environment is properly built, the final part will show how to run some serious scripts on a Docker container from its EC2 host to illustrate just how useful SystemTap can be.
Installing Docker on your AWS EC2 instance
To install Docker on an AWS EC2 instance, we’ll enable the “Red Hat Enterprise Linux Server 7 Extra(RPMs)” yum repository that, by default, is disabled.
$ sudo yum repolist disabled Loaded plugins: amazon-id, rhui-lb repo id repo name rhui-REGION-rhel-server-debug-extras/7Server/x86_64 Red Hat Enterprise Linux Server 7 Extra Debug (Debug RPMs) rhui-REGION-rhel-server-debug-optional/7Server/x86_64 Red Hat Enterprise Linux Server 7 Optional Debug (Debug RPMs) rhui-REGION-rhel-server-debug-rh-common/7Server/x86_64 Red Hat Enterprise Linux Server 7 RH Common Debug (Debug RPMs) rhui-REGION-rhel-server-debug-rhscl/7Server/x86_64 Red Hat Enterprise Linux Server 7 RHSCL Debug (Debug RPMs) rhui-REGION-rhel-server-debug-supplementary/7Server/x86_64 Red Hat Enterprise Linux Server 7 Supplementary Debug (Debug RPMs) rhui-REGION-rhel-server-extras/7Server/x86_64 Red Hat Enterprise Linux Server 7 Extra(RPMs) rhui-REGION-rhel-server-optional/7Server/x86_64 Red Hat Enterprise Linux Server 7 Optional (RPMs) rhui-REGION-rhel-server-releases-source/7Server/x86_64 Red Hat Enterprise Linux Server 7 (SRPMs) rhui-REGION-rhel-server-rhscl/7Server/x86_64 Red Hat Enterprise Linux Server 7 RHSCL (RPMs) rhui-REGION-rhel-server-source-extras/7Server/x86_64 Red Hat Enterprise Linux Server 7 Extra (SRPMs) rhui-REGION-rhel-server-source-optional/7Server/x86_64 Red Hat Enterprise Linux Server 7 Optional (SRPMs) rhui-REGION-rhel-server-source-rh-common/7Server/x86_64 Red Hat Enterprise Linux Server 7 RH Common (SRPMs) rhui-REGION-rhel-server-source-rhscl/7Server/x86_64 Red Hat Enterprise Linux Server 7 RHSCL (SRPMs) rhui-REGION-rhel-server-source-supplementary/7Server/x86_64 Red Hat Enterprise Linux Server 7 Supplementary (SRPMs) rhui-REGION-rhel-server-supplementary/7Server/x86_64 Red Hat Enterprise Linux Server 7 Supplementary (RPMs) repolist: 0
We’ll use the yum-config-manager to enable the repo:
$ sudo yum-config-manager --enable "Red Hat Enterprise Linux Server 7 Extra(RPMs)"
Next, you should search for the Docker package and install it. Yum will take care of its dependencies.
$ sudo yum search docker Loaded plugins: amazon-id, rhui-lb rhui-REGION-rhel-server-extras | 2.9 kB 00:00:00 rhui-REGION-rhel-server-releases | 3.7 kB 00:00:00 rhui-REGION-rhel-server-releases-debug | 2.9 kB 00:00:00 rhui-REGION-rhel-server-rh-common | 3.8 kB 00:00:00 rhui-REGION-rhel-server-extras/7Server/x86_64/primary_db | 56 kB 00:00:00 rhui-REGION-rhel-server-extras/7Server/x86_64/updateinfo | 27 kB 00:00:00 ========================================================== N/S matched: docker ========================================================== docker-logrotate.x86_64 : cron job to run logrotate on docker containers docker-python.x86_64 : An API client for docker written in Python docker-registry.noarch : Registry server for Docker docker-registry.x86_64 : Registry server for Docker docker-selinux.x86_64 : SELinux policies for Docker docker.x86_64 : Automates deployment of containerized applications Name and summary matches only, use "search all" for everything. $ sudo yum -y install docker
Once the Docker-related packages are installed, you should enable and start the docker service.
$ sudo systemctl enable docker ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service' $ sudo systemctl start docker $ sudo systemctl status docker docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) Active: active (running) since Wed 2015-09-16 02:02:26 EDT; 20ms ago Docs: http://docs.docker.com Main PID: 10738 (docker) CGroup: /system.slice/docker.service └─10738 /usr/bin/docker -d --selinux-enabled --add-registry registry.access.redhat.com Sep 16 02:02:00 ip-172-30-0-123.ap-southeast-1.compute.internal systemd: Starting Docker Application Container Engine... Sep 16 02:02:00 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:00.179717121-04:00" level=inf...k)" Sep 16 02:02:00 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:00.447391712-04:00" level=err...se" Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:26.342873074-04:00" level=war....10 Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:26.360314551-04:00" level=inf...se" Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:26.798683604-04:00" level=inf...t." Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:26.798853557-04:00" level=inf...e." Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:26.798869375-04:00" level=inf...on" Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal docker: time="2015-09-16T02:02:26.798882151-04:00" level=inf...7.1 Sep 16 02:02:26 ip-172-30-0-123.ap-southeast-1.compute.internal systemd: Started Docker Application Container Engine. Hint: Some lines were ellipsized, use -l to show in full.
In order to use Docker with the ec2-user normal user, we need to create a docker group and add ourselves in it.
$ sudo groupadd docker $ sudo usermod -aG docker ec2-user $ grep ^docker /etc/group dockerroot:x:995: docker:x:1001:ec2-user
Provisioning Red Hat Enterprise Linux 7 container with Docker
To provision our container with Docker, pull down the Red Hat Enterprise Linux 7 platform container image from Red Hat.
$ docker pull rhel7 Trying to pull repository registry.access.redhat.com/rhel7 ... 82ad5fa11820: Download complete Status: Downloaded newer image for registry.access.redhat.com/rhel7:latest
Run docker images to list the container we have downloaded.
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.access.redhat.com/rhel7 latest 82ad5fa11820 6 days ago 158.3 MB
Let’s do a quick test to see if everything is working.
$ docker run -ti rhel7 /bin/bash Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning. [root@35f99cabc19a /]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.1 (Maipo) [root@c8a8740808c0 bin]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-202:2-51421425-c8a8740808c0d41b7294f6f2906543740b7a9b54791b6f5bed6a150616b18dd5 9.8G 213M 9.0G 3% / tmpfs 497M 0 497M 0% /dev shm 64M 0 64M 0% /dev/shm tmpfs 497M 20K 497M 1% /run/secrets /dev/xvda2 10G 3.6G 6.5G 36% /etc/hosts [root@c8a8740808c0 bin]#
So far so good! We are now ready to run some real troubleshooting scripts against our VMs…which we’ll describe in the final installment of this series.
If you want to learn more on Docker, this is your go-to course Introduction to Docker.
New Content: Azure DP-100 Certification, Alibaba Cloud Certified Associate Prep, 13 Security Labs, and Much More
This past month our Content Team served up a heaping spoonful of new and updated content. Not only did our experts release the brand new Azure DP-100 Certification Learning Path, but they also created 18 new hands-on labs — and so much more! New content on Cloud Academy At any time, y...
AWS Certification Practice Exam: What to Expect from Test Questions
If you’re building applications on the AWS cloud or looking to get started in cloud computing, certification is a way to build deep knowledge in key services unique to the AWS platform. AWS currently offers 12 certifications that cover major cloud roles including Solutions Architect, De...
Overcoming Unprecedented Business Challenges with AWS
From auto-scaling applications with high availability to video conferencing that’s used by everyone, every day — cloud technology has never been more popular or in-demand. But what does this mean for experienced cloud professionals and the challenges they face as they carve out a new p...
Constant Content: Cloud Academy’s Q3 2020 Roadmap
Hello — Andy Larkin here, VP of Content at Cloud Academy. I am pleased to release our roadmap for the next three months of 2020 — August through October. Let me walk you through the content we have planned for you and how this content can help you gain skills, get certified, and...
New Content: Alibaba, Azure AZ-303 and AZ-304, Site Reliability Engineering (SRE) Foundation, Python 3 Programming, 16 Hands-on Labs, and Much More
This month our Content Team did an amazing job at publishing and updating a ton of new content. Not only did our experts release the brand new AZ-303 and AZ-304 Certification Learning Paths, but they also created 16 new hands-on labs — and so much more! New content on Cloud Academy At...
Blog Digest: Which Certifications Should I Get?, The 12 Microsoft Azure Certifications, 6 Ways to Prevent a Data Breach, and More
This month, we were excited to announce that Cloud Academy was recognized in the G2 Summer 2020 reports! These reports highlight the top-rated solutions in the industry, as chosen by the source that matters most: customers. We're grateful to have been nominated as a High Performer in se...
Which Certifications Should I Get?
The old AWS slogan, “Cloud is the new normal” is indeed a reality today. Really, cloud has been the new normal for a while now and getting credentials has become an increasingly effective way to quickly showcase your abilities to recruiters and companies. With all that in mind, the s...
New Content: AWS, Azure, Typescript, Java, Docker, 13 New Labs, and Much More
This month, our Content Team released a whopping 13 new labs in real cloud environments! If you haven't tried out our labs, you might not understand why we think that number is so impressive. Our labs are not “simulated” experiences — they are real cloud environments using accounts on A...
Kickstart Your Tech Training With a Free Week on Cloud Academy
Are you looking to make a jump in your technical career? Want to get trained or certified on AWS, Azure, Google Cloud Platform, DevOps, Kubernetes, Python, or another in-demand skill? Then you'll want to mark your calendar. Starting Monday, June 22 at 12:00 a.m. PDT (3:00 a.m. EDT), ...
New Content: AZ-500 and AZ-400 Updates, 3 Google Professional Exam Preps, Practical ML Learning Path, C# Programming, and More
This month, our Content Team released tons of new content and labs in real cloud environments. Not only that, but we introduced our very first highly interactive "Office Hours" webinar. This webinar, Acing the AWS Solutions Architect Associate Certification, started with a quick overvie...
Azure vs. AWS: Which Certification Provides the Brighter Future?
More and more companies are using cloud services, prompting more and more people to switch their current IT position to something cloud-related. The problem is most people only have that much time after work to learn new technologies, and there are plenty of cloud services that you can ...
Blog Digest: 5 Reasons to Get AWS Certified, OWASP Top 10, Getting Started with VPCs, Top 10 Soft Skills, and More
Thank you for being a valued member of our community! We recently sent out a short survey to understand what type of content you would like us to add to Cloud Academy, and we want to thank everyone who gave us their input. If you would like to complete the survey, it's not too late. It ...