<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rohit Kalyan Kandulapati</title>
    <description>The latest articles on DEV Community by Rohit Kalyan Kandulapati (@rohitkalyan).</description>
    <link>https://dev.to/rohitkalyan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1997404%2F8afbe816-d4d4-4892-88c8-fb5794b48cf0.png</url>
      <title>DEV Community: Rohit Kalyan Kandulapati</title>
      <link>https://dev.to/rohitkalyan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohitkalyan"/>
    <language>en</language>
    <item>
      <title>Podman Cheatsheet</title>
      <dc:creator>Rohit Kalyan Kandulapati</dc:creator>
      <pubDate>Mon, 03 Feb 2025 13:11:52 +0000</pubDate>
      <link>https://dev.to/rohitkalyan/podman-cheatsheet-4m9d</link>
      <guid>https://dev.to/rohitkalyan/podman-cheatsheet-4m9d</guid>
      <description>&lt;h2&gt;
  
  
  Images
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Listing Images
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pulling an Image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman pull jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deleting Images
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman rmi &amp;lt;image-name or image-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remove un-used images at once
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman image prune
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman rmi &lt;span class="si"&gt;$(&lt;/span&gt;podman images &lt;span class="nt"&gt;-aq&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Building images from a Dockerfile
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# . represents that the Dockerfile is present in the location where you are running this command.&lt;/span&gt;
podman build &lt;span class="nt"&gt;-t&lt;/span&gt; podman-image:1.0 &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Saving images to your local in archive
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman image save &lt;span class="nt"&gt;-o&lt;/span&gt; image.tar &amp;lt;image-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Load a container from a stored archive
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman load &lt;span class="nt"&gt;-i&lt;/span&gt; archive_name.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tagging an image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman tag &amp;lt;image-id&amp;gt; target-image-name

&lt;span class="c"&gt;# Tagging images with a tag&lt;/span&gt;
podman tag &lt;span class="nt"&gt;-t&lt;/span&gt; &amp;lt;image-id&amp;gt; target-image-name:tag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Containers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Listing the containers that are running.
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Listing all containers in your machine
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Running a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Running a container normally&lt;/span&gt;
podman run &amp;lt;image-id&amp;gt;

&lt;span class="c"&gt;# Running a container in detached mode&lt;/span&gt;
podman run &lt;span class="nt"&gt;-d&lt;/span&gt; &amp;lt;image-id&amp;gt;

&lt;span class="c"&gt;# Adding a name &lt;/span&gt;
podman run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; jenkins &amp;lt;image-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stopping a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman stop &amp;lt;container-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Starting a stopped container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman start &amp;lt;container-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Removing a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;container-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Logs of a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman logs &amp;lt;container-id&amp;gt;

&lt;span class="c"&gt;# Watching logs &lt;/span&gt;
podman logs &lt;span class="nt"&gt;--tail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100 &lt;span class="nt"&gt;-f&lt;/span&gt; &amp;lt;container-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Copying files from/to a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Copying files to a container&lt;/span&gt;
&lt;span class="c"&gt;# It is better to copy files from you podman machine to a container rather than from your local.&lt;/span&gt;

&lt;span class="c"&gt;# podman cp source_path destination_path&lt;/span&gt;

podman &lt;span class="nb"&gt;cp &lt;/span&gt;file_path_in_your_podman_machine container_id:path_in_your_container

&lt;span class="c"&gt;# Copying files from your container to your podman machine&lt;/span&gt;
podman &lt;span class="nb"&gt;cp &lt;/span&gt;container_id:path_in_your_container file_path_in_your_podman_machine 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Logging into a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &amp;lt;container-id&amp;gt; /bin/bash

&lt;span class="c"&gt;# Logging in as a root user&lt;/span&gt;
podman &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt; root &amp;lt;container-id&amp;gt; /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating an image from a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podaman commit &amp;lt;container-ID&amp;gt; image_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Inspecting a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman inspect &amp;lt;container-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Network
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Listing Networks
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman network &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating a network
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman network create net-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Removing a network
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman network &lt;span class="nb"&gt;rm &lt;/span&gt;net-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Attaching network to a container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman network connect &amp;lt;container-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Attaching network at while running the container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--network&lt;/span&gt; net-1 &lt;span class="nt"&gt;--name&lt;/span&gt; jenkins &amp;lt;image-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Inspecting a network
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman network inspect net-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Volumes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating a volume
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman volume create volume-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Listing Volumes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman volume &lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Removing Volumes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman volume &lt;span class="nb"&gt;rm &lt;/span&gt;volume-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Removing unused volumes in your machine
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman volume prune
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Attaching Volume while running the container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--volume&lt;/span&gt; volume-1:/var/jenkins_home &lt;span class="nt"&gt;--network&lt;/span&gt; net-1 &lt;span class="nt"&gt;--name&lt;/span&gt; jenkins &amp;lt;image-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>containers</category>
      <category>docker</category>
      <category>devops</category>
      <category>podman</category>
    </item>
    <item>
      <title>Set up your own Ansible Lab using Docker</title>
      <dc:creator>Rohit Kalyan Kandulapati</dc:creator>
      <pubDate>Sat, 25 Jan 2025 19:30:07 +0000</pubDate>
      <link>https://dev.to/rohitkalyan/setting-up-your-own-ansible-lab-using-docker-49co</link>
      <guid>https://dev.to/rohitkalyan/setting-up-your-own-ansible-lab-using-docker-49co</guid>
      <description>&lt;p&gt;Hi there 👋&lt;br&gt;
This is Rohit and this is my first post on Dev.to&lt;/p&gt;

&lt;p&gt;I know finding the right infra for learning Ansible is hard but not impossible. Today we are going to setup our own ansible lab in our system, which don't have any restrictions and any time limits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; Docker in your system, Interest in you to learn Ansible.&lt;/p&gt;
&lt;h2&gt;
  
  
  Steps to setup Ansible lab:
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Pulling the image
&lt;/h3&gt;

&lt;p&gt;Pull the ubuntu image&lt;br&gt;
&lt;code&gt;docker pull ubuntu&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cgri302vpskc71corvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cgri302vpskc71corvh.png" alt="Docker Images" width="800" height="74"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Setting Up docker network
&lt;/h3&gt;

&lt;p&gt;Create a docker network with a specific subnet&lt;br&gt;
&lt;code&gt;docker network create ansible-network --subnet 192.168.1.0/24&lt;/code&gt;  &lt;/p&gt;
&lt;h3&gt;
  
  
  3. Setting up Ansible Master Container
&lt;/h3&gt;

&lt;p&gt;a. Run the ubuntu image.&lt;br&gt;
&lt;code&gt;docker run -d -it --name ansible-master --net ansible-network --hostname ans_master ubuntu&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;b. Login into the container&lt;br&gt;
&lt;code&gt;docker exec -it ansible-master /bin/bash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;c. Run the below commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1&lt;/span&gt;
apt update

&lt;span class="c"&gt;# 2&lt;/span&gt;
apt &lt;span class="nb"&gt;install &lt;/span&gt;vim python-is-python3 openssh-client iputils-ping ansible &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# 3&lt;/span&gt;
ssh-keygen
&lt;span class="c"&gt;# you will be prompted for responses, just keep clicking enter.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Setting up Manage Container-1
&lt;/h3&gt;

&lt;p&gt;You can use the below setup to add as many managed nodes as you want, you just need to change the container name.&lt;/p&gt;

&lt;p&gt;a. Run the ubuntu image&lt;br&gt;
&lt;code&gt;docker run -d -it --name ansible-manage-1 --net ansible-network --ip 192.168.1.18 --hostname ans_master ubuntu&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;b. Login in to the container&lt;br&gt;
&lt;code&gt;docker exec -it ansible-manage-1 /bin/bash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;c. Run the below commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1&lt;/span&gt;
apt update

&lt;span class="c"&gt;# 2&lt;/span&gt;
apt &lt;span class="nb"&gt;install &lt;/span&gt;vim python-is-python3 openssh-client openssh-server &lt;span class="nt"&gt;-y&lt;/span&gt; 

&lt;span class="c"&gt;# 3&lt;/span&gt;
apt update

&lt;span class="c"&gt;# 4&lt;/span&gt;
service ssh start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Password-less authentication
&lt;/h3&gt;

&lt;p&gt;a. Copy the contents of &lt;code&gt;.pub&lt;/code&gt; file under the path &lt;code&gt;~/.ssh/&lt;/code&gt; on your control container.&lt;br&gt;
b. Add that to &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt; in your managed containers. Create the file if that file is not present and you should do the same for all your managed containers.&lt;br&gt;
c. Try running the below command in your control container.&lt;br&gt;
&lt;code&gt;ssh root@ans_manage&lt;/code&gt;&lt;br&gt;
Enter yes.&lt;/p&gt;

&lt;p&gt;Now you have successfully setup password-less authentication from your control container to managed container.&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Validate using ping module
&lt;/h3&gt;

&lt;p&gt;a. Create and &lt;code&gt;inventory.ini&lt;/code&gt; file in your control node under &lt;code&gt;/home/ubuntu&lt;/code&gt; and add the below contents. (Make sure you have exited from the ssh connection)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;192.168.1.18 ansible_user=root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;b. Run the below command&lt;br&gt;
&lt;code&gt;ansible -i /home/ubuntu/inventory.ini -m ping all&lt;/code&gt;&lt;br&gt;
Just enter for one more time(last time).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38o7gj4v653g7oa08enl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38o7gj4v653g7oa08enl.png" alt="Ping" width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Happy Learning 🎉🎉
&lt;/h2&gt;

&lt;p&gt;Let us know in the comments if you find any difficulties.&lt;/p&gt;

</description>
      <category>ansible</category>
      <category>devops</category>
      <category>automation</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
