Running Custom Images in Any Cloud #0005

· 83 min read

Summary:

In this session, I build a trivial but custom docker image, push it to a custom self-hosted registry and also to docker hub.

Next, I create a machine in some arbitrary cloud, (I used Hetzner), get it pre-installed with Ubuntu 22.04. Then refer to the official docker install installation to properly setup docker on that machine. Next, I pull that custom image from registry, install, and run the container. Test to verify.

AI Generated Transcript

WEBVTT

00:00.000 --> 00:04.960
We are going to continue our discussion of the last time,

00:04.960 --> 00:08.480
which is, I think last time we discussed creating

00:08.480 --> 00:10.800
Docker file and Docker images and building them up and

00:10.800 --> 00:14.560
putting them in a Docker registry.

00:14.560 --> 00:17.040
So you saw that in a live session the last time it is

00:17.040 --> 00:23.640
recorded and it's available to you on what is we call Spotify.

00:23.640 --> 00:26.080
If you go to Spotify on a particular location,

00:26.080 --> 00:29.720
you will find the Cloud Seminar and it looks like this.

00:29.720 --> 00:31.960
I'm opening up Spotify right now.

00:31.960 --> 00:36.480
That's how it looks like and on a screen it looks like this.

00:36.480 --> 00:38.980
So that's the location where you can find.

00:38.980 --> 00:42.400
You will probably find links for this on my website.

00:42.400 --> 00:46.480
Last time we were discussing this thing called building custom images.

00:46.480 --> 00:48.640
So that thing that you see,

00:48.640 --> 00:50.720
by the way, this video of me,

00:50.720 --> 00:52.640
I think I should just disappear.

00:52.640 --> 00:57.040
So I will hide myself completely as opposed to obstructing the screen.

00:57.040 --> 01:00.800
Now what are you seeing is this series of videos here.

01:00.800 --> 01:02.800
They are on Spotify and yes,

01:02.800 --> 01:04.480
Spotify does have videos.

01:04.480 --> 01:06.640
So that's what these are videos by the way, just so you know.

01:06.640 --> 01:11.200
So that's where the new recording will pop up at the end of 24 hours from now.

01:11.200 --> 01:15.080
You will see that happening. It will go here.

01:15.080 --> 01:17.760
Next, what did we do the last time?

01:17.760 --> 01:23.880
We will continue that same thing and extend it and take it to a real Cloud this time.

01:23.880 --> 01:27.720
Last time we ran it locally completely in my office right here,

01:27.720 --> 01:31.040
and I'll describe to you summary what did we do last time,

01:31.040 --> 01:33.720
and then I'll do the thing for today.

01:33.720 --> 01:35.540
I want to repeat that.

01:35.540 --> 01:38.460
If you have any question at any time, just speak.

01:38.460 --> 01:42.800
No issues. There is no exam,

01:42.800 --> 01:46.880
as you know, so you can just speak to me like a friend and ask the question.

01:46.880 --> 01:49.800
Anything. No problem at all.

01:49.800 --> 01:53.360
Anytime. You can interrupt me and I welcome that.

01:53.360 --> 01:56.120
In fact, if you don't interrupt me, I feel bad.

01:56.120 --> 01:59.760
I feel that I'm not communicating or that you're not understanding.

01:59.760 --> 02:00.880
That's a concern I have.

02:00.880 --> 02:05.920
So please tell me that you get it or tell me that you don't get it either way.

02:05.920 --> 02:11.880
So begin. So what do we have in my hand is a computer here.

02:11.880 --> 02:14.000
I call it my Macintosh.

02:14.000 --> 02:16.720
This runs the Mac OS.

02:16.720 --> 02:18.640
That's what I'm using right now.

02:18.640 --> 02:22.440
I use this to connect to another machine that runs Docker.

02:22.440 --> 02:28.120
This machine, I actually call it iMac because it is an iMac,

02:28.120 --> 02:32.320
but it runs Linux and it also has Docker.

02:32.320 --> 02:34.760
So that's the machine I've been using all along in

02:34.760 --> 02:37.640
all these sessions like three or four sessions up till now.

02:37.640 --> 02:39.880
We are doing a particular exercise.

02:39.880 --> 02:44.600
That exercise is available in a Git repository publicly.

02:44.600 --> 02:47.960
So I'm going to go there and show you,

02:47.960 --> 02:51.320
and you can actually pull it up right there.

02:51.320 --> 02:54.280
That's the Git repo and I'll paste a link for you in the chat.

02:54.280 --> 02:57.360
So you have it. Where is the chat?

02:57.360 --> 03:01.280
There. So you have the link in the chat and I'll also post it

03:01.280 --> 03:07.520
outside on the Spotify podcast, video podcast.

03:07.520 --> 03:10.600
So that's the link which has the code that I will be

03:10.600 --> 03:15.040
using on this Git repository.

03:15.640 --> 03:20.400
That code is available somewhere here already.

03:20.400 --> 03:22.960
On this Linux machine.

03:22.960 --> 03:25.360
So I'm sitting here and I will be

03:25.360 --> 03:27.600
connecting there and then work here.

03:27.600 --> 03:31.360
Then today, we'll extend whatever we build here,

03:31.360 --> 03:33.560
like Docker image and something,

03:33.560 --> 03:36.600
we'll take that application that be a very tiny,

03:36.600 --> 03:38.620
simple example application, we'll take it,

03:38.620 --> 03:43.320
but then take it to a real cloud, some cloud.

03:43.320 --> 03:45.720
You get to choose which cloud you want me to use.

03:45.720 --> 03:48.720
So you can just tell me, go to that cloud, we'll go there.

03:48.720 --> 03:51.240
And run the same thing.

03:51.240 --> 03:52.680
Somebody is showing up.

03:52.680 --> 03:53.920
So I'm going to let them in.

03:53.920 --> 03:58.200
Somebody just showed up and I admitted them in.

03:58.200 --> 04:01.960
So that's the scenario today.

04:01.960 --> 04:06.440
Here's what we will do is what I just described.

04:06.440 --> 04:10.080
I'm checking my video layout just a minute.

04:10.080 --> 04:12.160
I think it is good.

04:12.160 --> 04:22.000
So tell me if this is better or this.

04:22.000 --> 04:23.160
Tell me what do you prefer?

04:23.160 --> 04:28.840
That's the question. So this is A and then I'll show you now B.

04:28.840 --> 04:32.240
So this is B. What do you prefer?

04:32.240 --> 04:40.040
That's the question. B or A. Any comments?

04:40.040 --> 04:43.920
Do you see anything changing at all?

04:43.920 --> 04:47.280
Let me show you A again.

04:47.280 --> 04:52.960
This is A. I'm going to change it now.

04:52.960 --> 04:58.640
This is B. Do you see anything different at all?

04:58.640 --> 05:02.800
No difference? Okay, fine.

05:02.800 --> 05:06.600
Then I think it's just what I see here is something different.

05:06.600 --> 05:09.040
So the layout is different for some reason.

05:09.040 --> 05:11.920
So let's recap quickly.

05:11.920 --> 05:20.120
We have this code sitting right here and I will hold on.

05:20.120 --> 05:23.000
Is somebody projecting something or what?

05:23.000 --> 05:28.920
Somebody started projecting or maybe I'm confused.

05:28.920 --> 05:32.520
Are you seeing my screen or something else?

05:32.520 --> 05:42.200
Exit Spotlight and check Spotlight for everyone.

05:42.200 --> 05:50.240
Me. Hey Sanjay, do you see my screen?

05:50.240 --> 05:52.320
Yeah, I see yellow screen.

05:52.320 --> 05:54.240
Yeah, okay, good, good, good, good.

05:54.240 --> 05:55.480
Yellow not red.

05:55.480 --> 05:56.680
Yeah, nice, nice.

05:56.680 --> 06:02.760
So let's continue.

06:02.760 --> 06:08.640
So let's bring up that terminal, the command line, the code.

06:08.640 --> 06:11.920
So here is the code command line coming up,

06:11.920 --> 06:13.800
and here is the editor for that.

06:13.800 --> 06:16.800
So I'm going to open the editor right here,

06:16.800 --> 06:18.560
bring it to the side,

06:18.560 --> 06:22.080
and this is the terminal and this is the code editor.

06:22.080 --> 06:23.640
As you probably know,

06:23.640 --> 06:30.600
this is VS Codeium and I'm going to connect to that iMac that I mentioned.

06:30.600 --> 06:32.600
This is the Mac which contains,

06:32.600 --> 06:37.640
this is the Linux machine that contains my code and I will go there,

06:37.640 --> 06:39.960
and that's what I've connected to.

06:39.960 --> 06:44.480
That code that we are using is called Docker files,

06:44.480 --> 06:47.360
and for clarity,

06:47.360 --> 06:49.360
I can delete the whole thing and bring it up again.

06:49.360 --> 06:51.440
I think that works better for most people

06:51.440 --> 06:53.880
because you don't know what I have in my computer

06:53.880 --> 06:55.640
and even I don't remember what I have.

06:55.640 --> 06:59.240
So I'll take this code link from here,

06:59.240 --> 07:03.200
from GitHub, and go to that computer here,

07:03.200 --> 07:07.880
that iMac computer that I mentioned, like that,

07:07.880 --> 07:12.200
and there I have this folder called Docker files.

07:13.200 --> 07:17.920
I will completely erase it, so it's gone.

07:17.920 --> 07:20.520
You can see that it disappears in

07:20.520 --> 07:23.480
the screen on the right half.

07:23.480 --> 07:25.760
There is no Docker files anymore.

07:25.760 --> 07:30.040
I'm going to now clone it, like that.

07:30.040 --> 07:32.320
So it comes down, brings the whole thing,

07:32.320 --> 07:38.000
and it should show up in that code editor somewhere here.

07:38.000 --> 07:41.200
Where is that? Docker files showed up right there.

07:41.200 --> 07:43.920
So that's the exercise that we will be using today,

07:43.920 --> 07:45.120
like we did last time,

07:45.120 --> 07:49.400
and continue our discussion around what we did,

07:49.400 --> 07:51.440
extending what we did last time,

07:51.440 --> 07:55.040
is to build an image and then run it in a real Cloud.

07:55.040 --> 07:56.160
That's the idea today.

07:56.160 --> 07:59.520
So let's see what did we do last time.

07:59.520 --> 08:00.840
If I remember right,

08:00.840 --> 08:05.720
we were dealing with something like one of these files.

08:05.720 --> 08:09.000
What was it? Let me cross-check.

08:09.000 --> 08:10.760
Let me cross-check and I'll identify

08:10.760 --> 08:12.440
exactly what we are going to do today so that

08:12.440 --> 08:15.720
you will go and be able to do the same thing.

08:15.720 --> 08:19.560
So let's go find it. Not this,

08:19.560 --> 08:22.840
not this, not this.

08:22.840 --> 08:25.560
Is it in step-by-step? I think so.

08:25.560 --> 08:28.480
I think this is it.

08:28.840 --> 08:35.240
So this is something we can use.

08:35.240 --> 08:37.320
But I think the last time, if you remember,

08:37.320 --> 08:38.720
we created a very simple,

08:38.720 --> 08:44.560
small NGINX server using a custom-created Docker file.

08:44.560 --> 08:46.000
So I think that's what we should do

08:46.000 --> 08:47.560
with the simple understanding of

08:47.560 --> 08:50.040
clarity and build everything from scratch

08:50.040 --> 08:53.280
with nothing in our hand to begin with, completely empty.

08:53.280 --> 08:55.360
So here I go with empty screen,

08:55.360 --> 08:58.680
create a new file, and I'll save it as empty.

08:58.680 --> 09:04.800
I'll call it Docker something, test, I think.

09:04.800 --> 09:07.480
Let me give it a new name.

09:07.480 --> 09:09.800
So I'll create a folder here.

09:09.800 --> 09:13.160
Let's call that folder today's date,

09:13.160 --> 09:15.840
May 16th. Today is May 16th.

09:15.840 --> 09:19.160
I'll call it May 16th. It is called May 17th in India.

09:19.160 --> 09:22.600
It's a different day. So let's go to May 16th folder,

09:22.600 --> 09:27.000
and there we have to create a new file.

09:27.000 --> 09:29.400
So I will go to that May 16th folder

09:29.400 --> 09:32.000
here and then create a new file.

09:32.000 --> 09:34.640
I'll call it Docker file,

09:34.640 --> 09:36.720
just simple Docker file like that.

09:36.720 --> 09:38.600
That new file is empty.

09:38.600 --> 09:40.440
So I'll begin with something like

09:40.440 --> 09:43.840
from NGINX as a beginning step.

09:43.840 --> 09:47.000
Basic beginning step, pull one image to begin with,

09:47.000 --> 09:50.160
and then we'll modify this image to run exactly what we want,

09:50.160 --> 09:53.760
and my goal with this particular exercise I'm about to

09:53.760 --> 09:58.280
begin is to create a simple NGINX web server

09:58.280 --> 10:02.920
that says something like hello Sanjay, for example.

10:02.920 --> 10:06.280
So I need to have a file that says hello Sanjay.

10:06.280 --> 10:09.360
So I'll create that file pretty much like this.

10:09.360 --> 10:12.000
In that same folder, rather I may 16 folder,

10:12.000 --> 10:14.960
I'll right-click new file, index.html,

10:14.960 --> 10:17.880
and in that file I'll create hello Sanjay.

10:17.880 --> 10:20.680
That's it. That's the output that we would like to see in

10:20.680 --> 10:25.760
a website running our own Docker file in some Cloud for real.

10:25.760 --> 10:27.440
The actual Cloud, actual file,

10:27.440 --> 10:29.680
everything from scratch, building it right now.

10:29.680 --> 10:31.440
So that's the beginning point. Hello Sanjay is

10:31.440 --> 10:33.360
the output that you will see eventually.

10:33.360 --> 10:35.720
So the result will be,

10:35.720 --> 10:41.080
rather what I would like the result to be is some Cloud.

10:41.080 --> 10:46.280
We'll go to that Cloud.http colon slash slash number,

10:46.280 --> 10:49.400
and then you will see hello Sanjay.

10:51.480 --> 10:54.480
This Cloud will run Docker,

10:54.480 --> 11:00.160
and it will run our own custom image right there.

11:00.160 --> 11:04.120
That's the output that I'm building towards it.

11:04.120 --> 11:06.320
So I have the hello Sanjay file,

11:06.320 --> 11:08.480
and I have from nginx,

11:08.480 --> 11:12.440
the beginning point, and I will add this hello Sanjay file,

11:12.440 --> 11:20.240
index.html file into the location

11:20.240 --> 11:24.160
inside where the nginx thing is running.

11:24.160 --> 11:28.960
If you remember the last time it was like, where html?

11:28.960 --> 11:31.560
If you know Namit,

11:31.560 --> 11:35.000
do you recall, was it this location or something else?

11:35.160 --> 11:39.040
Was it this? Namit, do you recall?

11:39.040 --> 11:40.520
I think so.

11:40.520 --> 11:42.680
But it's a shortcut.

11:42.680 --> 11:43.920
Sorry, say again.

11:43.920 --> 11:46.200
It has to be that. You're adding

11:46.200 --> 11:52.600
an index.html onto that directory.

11:52.600 --> 11:57.240
I think last time I assumed it is going to be this thing,

11:57.240 --> 12:00.960
and then it turned out to be something else.

12:00.960 --> 12:02.720
I assumed to be line number 3,

12:02.720 --> 12:05.240
but it turned out to be line number 2.

12:05.680 --> 12:08.520
That was the case the last time.

12:08.520 --> 12:10.720
So I'm going to ignore or comment,

12:10.720 --> 12:12.000
the line number 3 is commented out.

12:12.000 --> 12:13.200
It's not going to be effective.

12:13.200 --> 12:15.160
I'm putting it as a reference.

12:15.160 --> 12:17.480
Then what do we have?

12:17.480 --> 12:22.040
An nginx server that needs to run the nginx application for which

12:22.040 --> 12:25.920
we need to invoke some command to actually run nginx,

12:25.920 --> 12:28.160
something like this. I don't remember the syntax,

12:28.160 --> 12:32.080
but that's how it should be with some more flags,

12:32.080 --> 12:34.200
some additional things that go here.

12:34.200 --> 12:35.440
I don't remember that.

12:35.440 --> 12:37.560
So we will go and do a Google search

12:37.560 --> 12:39.400
to find out what that should be.

12:39.400 --> 12:42.520
I think the second parameter also will be double quotes.

12:42.520 --> 12:44.280
This thing runs for real.

12:44.280 --> 12:49.280
So we'll go to Firefox and say docker file,

12:49.280 --> 12:53.200
nginx, cmd, and find out what comes up.

12:53.680 --> 12:56.840
There should be some answer somewhere in one of the forums,

12:56.840 --> 13:02.240
we'll find it, or some cheating.

13:02.240 --> 13:04.680
This is how you actually work in real life.

13:04.680 --> 13:07.160
You won't cheat. That's what I'm doing.

13:07.160 --> 13:10.520
Cheating, because I don't want to remember or memorize anything,

13:10.520 --> 13:12.760
and so I think this is the right way.

13:12.760 --> 13:16.360
You know how to find out what the right way,

13:16.360 --> 13:18.120
and that is through experience.

13:18.120 --> 13:22.680
Experience of dealing with these things multiple times in your life.

13:22.680 --> 13:26.400
Then you get experience and used to how things work and what is the right answer.

13:26.400 --> 13:30.080
This is probably the right answer to put in terms of a command

13:30.080 --> 13:32.400
to actually execute the nginx process

13:32.400 --> 13:37.240
when this image that I will be building will run.

13:37.240 --> 13:39.800
So that's the docker file ready.

13:39.800 --> 13:45.320
I want to now build this docker file and create a new docker image.

13:45.320 --> 13:49.920
I will now save this file.

13:49.920 --> 13:52.760
Saved, and close.

13:52.760 --> 13:55.480
And then I'll open up terminal,

13:55.480 --> 13:58.320
and then I'll go to that May 16 folder.

13:58.320 --> 14:01.280
There I have these two files,

14:01.280 --> 14:03.720
and I will cat the docker file here.

14:03.720 --> 14:04.760
You see it?

14:04.760 --> 14:06.960
I'll also cat the index.html file.

14:06.960 --> 14:07.920
You see that?

14:07.920 --> 14:10.280
And I will now build the docker image.

14:10.280 --> 14:14.120
Docker image building is simply docker build and then dot.

14:14.120 --> 14:16.560
This dot basically means look in this folder,

14:16.560 --> 14:17.840
like right here, right now.

14:17.840 --> 14:24.280
Look at that folder and look for a file called docker file inside that folder.

14:24.280 --> 14:29.640
And then basically it's going to look at this file here, docker file,

14:29.640 --> 14:33.760
and then build that docker file into a docker image.

14:33.760 --> 14:37.480
So we will build it simply by running docker build dot.

14:37.480 --> 14:38.520
It builds.

14:38.520 --> 14:39.800
It's very fast.

14:39.800 --> 14:41.440
It has already built.

14:41.440 --> 14:42.600
Finished.

14:42.600 --> 14:44.480
But we don't know what the name is for this,

14:44.480 --> 14:46.320
so we need to assign a name to it.

14:46.320 --> 14:48.640
And I did not, so I should.

14:48.640 --> 14:52.040
So I'll build it again with a name this time.

14:52.040 --> 14:57.560
And what I'm going to do is open another editor so I can make notes

14:57.560 --> 15:00.840
as to what commands I'll be using, because again, I don't remember.

15:00.840 --> 15:03.320
I don't memorize anything, and I always cheat.

15:03.320 --> 15:04.680
That's my way.

15:04.680 --> 15:06.200
And so cheating is the best way.

15:06.200 --> 15:07.840
Cheating is how you should work.

15:07.840 --> 15:11.320
In real life, that's how things work, is you go Google search.

15:11.320 --> 15:13.680
You go do Stack Overflow.

15:13.680 --> 15:15.360
You do Chat GPT.

15:15.360 --> 15:17.560
You do Bard or whatever comes to your hand.

15:17.560 --> 15:21.280
Like the whole internet is available to you, so you go and cheat.

15:21.280 --> 15:22.200
That's how real life is.

15:22.200 --> 15:23.200
So that's what I'm doing.

15:23.200 --> 15:24.560
I'm doing the same thing.

15:24.560 --> 15:25.920
No different.

15:25.920 --> 15:31.920
So the way to build an image was simply line number 3,

15:31.920 --> 15:34.560
like right there, docker build dot.

15:34.560 --> 15:37.400
But I want to assign it a name.

15:37.400 --> 15:39.440
Hello, Sanjay.

15:39.440 --> 15:40.720
Line number 1.

15:40.720 --> 15:42.520
So that's what I will do now.

15:42.520 --> 15:44.240
I am going to change positions here.

15:44.240 --> 15:47.120
So I did line number 1, docker build dot.

15:47.120 --> 15:48.480
That builds the image.

15:48.480 --> 15:51.360
I will now assign it a name.

15:51.360 --> 15:54.280
Like this.

15:54.280 --> 15:57.880
I think, Sanjay, I'm going to mute you.

15:57.880 --> 15:58.920
Or you mute yourself.

15:58.920 --> 15:59.440
I muted, sorry.

15:59.440 --> 15:59.960
My bad.

15:59.960 --> 16:01.320
OK, no problem.

16:01.320 --> 16:07.400
So the idea next here is this line, which I will take.

16:07.400 --> 16:10.520
And then build again.

16:10.520 --> 16:11.680
So it builds.

16:11.680 --> 16:14.880
But this time, it has a name assigned to it.

16:14.880 --> 16:16.520
Now, how did I choose a name?

16:16.520 --> 16:18.120
You can choose whatever name you like.

16:18.120 --> 16:19.360
Doesn't matter.

16:19.360 --> 16:22.880
But there are some requirements to choosing a name.

16:22.880 --> 16:26.440
It actually is dictated by the place

16:26.440 --> 16:29.440
where you will store these images.

16:29.440 --> 16:33.840
And as you know, there are places to store images.

16:33.840 --> 16:36.760
So I'll talk briefly about that.

16:36.760 --> 16:38.920
Let's go check what name I assigned.

16:38.920 --> 16:41.920
I assigned the name in line number 2.

16:41.920 --> 16:46.280
And my name was this name.

16:46.280 --> 16:48.800
Let's dissect that name a little bit.

16:48.800 --> 16:51.760
The name I chose for the image is this.

16:51.760 --> 16:54.200
And the full name.

16:54.200 --> 16:57.840
The short name is just, hello, Sanjay.

16:57.840 --> 17:00.480
And what is this line number 6?

17:00.480 --> 17:01.880
That is dictated to you.

17:01.880 --> 17:04.600
You cannot just randomly choose it.

17:04.600 --> 17:08.160
Unless you build your own place to store.

17:08.160 --> 17:09.960
In that case, you choose it.

17:09.960 --> 17:12.440
And I built my own place to store images.

17:12.440 --> 17:14.480
And that is why I chose what I want.

17:14.480 --> 17:16.400
And so that line number 6 is a reference

17:16.400 --> 17:19.600
to my own location to store images, which

17:19.600 --> 17:22.320
is called a Docker registry.

17:22.320 --> 17:26.840
A Docker registry is where you put your images.

17:26.840 --> 17:29.720
There are many registries available on the internet.

17:29.720 --> 17:30.960
Docker Hub is one of them.

17:33.840 --> 17:36.280
Amazon.

17:36.280 --> 17:42.920
No, Azure Container Registry is another Azure, Microsoft.

17:42.920 --> 17:47.120
Elastic Container Registry is from Amazon.

17:47.120 --> 17:51.480
Google Container Registry is from Google.

17:51.480 --> 17:53.960
And then there is this Quay.

17:53.960 --> 17:55.720
And there are more.

17:55.720 --> 17:57.600
Every cloud provider will give you

17:57.600 --> 17:59.880
a place to store Docker images.

17:59.880 --> 18:02.240
And they are called registry locations.

18:02.240 --> 18:09.120
In my company, in my home, I built my own registry.

18:09.120 --> 18:12.560
And that's what I call line number 6.

18:12.560 --> 18:15.840
It is actually a machine running right here.

18:15.840 --> 18:18.000
And only I can use it.

18:18.000 --> 18:20.120
I don't allow anybody else to use that.

18:20.120 --> 18:22.960
So I have my own registry.

18:22.960 --> 18:25.160
My own.

18:25.160 --> 18:28.280
The name I chose is this, line number 6.

18:28.280 --> 18:30.960
And only I can use it.

18:30.960 --> 18:33.400
So you have a choice as to where will you.

18:33.400 --> 18:36.000
There is a question here for people waiting or something.

18:36.000 --> 18:38.480
Oh, OK.

18:38.480 --> 18:39.320
Let them in.

18:39.320 --> 18:40.800
I'll let them in.

18:40.800 --> 18:43.280
So hello.

18:43.280 --> 18:44.720
I hope you can hear me.

18:44.720 --> 18:45.520
Sahil.

18:45.520 --> 18:47.320
Sahil just joined.

18:47.320 --> 18:48.440
Can you?

18:48.440 --> 18:49.800
You can talk.

18:49.800 --> 18:53.400
You can unmute and interrupt me any time you feel like.

18:53.400 --> 18:57.120
So I was talking about creating an image to put in a place.

18:57.120 --> 18:58.920
And the place is called a Docker registry.

18:58.920 --> 19:01.000
And so I have my own registry.

19:01.000 --> 19:03.560
You can choose wherever you feel like.

19:03.560 --> 19:05.200
And each of these companies will dictate

19:05.200 --> 19:09.120
what you will name your images, including this.

19:09.120 --> 19:10.880
Docker Hub also has a registry.

19:10.880 --> 19:14.120
And Docker Hub is free for certain cases,

19:14.120 --> 19:15.680
certain use cases.

19:15.680 --> 19:18.080
So if you are using Docker Hub, your name

19:18.080 --> 19:26.600
should be something like your username slash.

19:26.600 --> 19:29.320
That's how it should be.

19:29.320 --> 19:32.240
Other clouds will have some other naming conventions.

19:32.240 --> 19:34.160
The fully qualified name for Docker registry

19:34.160 --> 19:40.440
should be something like Docker.io slash username slash.

19:40.440 --> 19:41.280
Hello, Sanjay.

19:41.280 --> 19:46.920
And then you can assign a tag number or tag string at the end.

19:46.920 --> 19:50.160
So that's how you fully qualify an image

19:50.160 --> 19:55.240
with the registry location and references associated with that.

19:55.240 --> 19:58.880
So if you look at this pattern carefully,

19:58.880 --> 20:07.520
you will find that this portion is the registry company name,

20:07.520 --> 20:12.760
Docker.io, or ACR, or ECR, or this or that.

20:12.760 --> 20:15.520
This is your username with that company.

20:15.520 --> 20:18.440
And this is your image name that you chose.

20:18.440 --> 20:20.040
You can choose whatever you want.

20:20.040 --> 20:22.240
And this is the tag name that you can choose.

20:22.240 --> 20:26.680
So that's how a name of an image is constructed.

20:26.680 --> 20:29.400
And so depending on the cloud company you want to use

20:29.400 --> 20:31.040
to store your images, you need to assign

20:31.040 --> 20:36.880
your name of the image in the creation step properly.

20:36.880 --> 20:40.440
I'm going to use my name.

20:40.440 --> 20:44.440
And so my name as in my company's registry.

20:44.440 --> 20:47.760
That is the name that I dictate for me.

20:47.760 --> 20:49.360
So that's the name I will be choosing.

20:49.360 --> 20:51.200
And I'll give you other examples.

20:51.200 --> 20:53.720
I'll probably also push the same exact image,

20:53.720 --> 20:55.800
build another image, copy, rename it

20:55.800 --> 20:59.160
to some other cloud, push it to that cloud service provider

20:59.160 --> 21:02.280
for that registry, for example, and do that way also

21:02.280 --> 21:04.000
so that you get a clear idea about how

21:04.000 --> 21:06.120
things work when you don't have Nilesh there with you.

21:09.760 --> 21:11.880
And that's what I will be doing also.

21:11.880 --> 21:14.840
So first, let me attempt my own registry.

21:14.840 --> 21:17.240
And I assigned a name to this.

21:17.240 --> 21:18.680
And I build that image.

21:18.680 --> 21:22.640
I need to push it to give it to the registry.

21:22.640 --> 21:23.800
So I'll push that.

21:23.800 --> 21:27.040
Pushing happens like this.

21:27.040 --> 21:35.960
So I'll erase the ink and then modify the name to Hello Sanjay.

21:35.960 --> 21:39.240
And so here is Hello Sanjay.

21:39.240 --> 21:39.760
There we go.

21:43.640 --> 21:49.000
And so that's the name I'm using for our images today.

21:49.000 --> 21:50.800
So back to the terminal.

21:50.800 --> 21:54.000
I have already created the image and assigned it

21:54.000 --> 21:56.720
my name in line number 2 on the right side.

21:56.720 --> 21:58.080
I already did that.

21:58.080 --> 22:00.760
What I need to do now is to take that image

22:00.760 --> 22:07.240
that I have here, Docker images, and then you grab it for Hello

22:07.240 --> 22:10.280
Sanjay.

22:10.280 --> 22:12.440
And you will see that the image is there, available created

22:12.440 --> 22:13.440
seven minutes ago.

22:13.440 --> 22:15.560
You can see it.

22:15.560 --> 22:19.280
So I will take that image and push it to my own cloud,

22:19.280 --> 22:22.640
like line number 14.

22:22.640 --> 22:26.480
I'll cut that line, put it right here in line number 4,

22:26.480 --> 22:29.760
and then push.

22:29.760 --> 22:31.200
It says push something, something,

22:31.200 --> 22:33.320
certificate expired.

22:33.320 --> 22:36.400
That's a problem from my own registry.

22:36.400 --> 22:38.880
It says certificate expired.

22:38.880 --> 22:40.360
Current time, something happened.

22:40.360 --> 22:42.400
So maybe I can fix the certificate

22:42.400 --> 22:47.400
or just ignore my registry for now because in a live setup,

22:47.400 --> 22:50.160
I don't want to be debugging certificate expirations

22:50.160 --> 22:52.440
for my own Docker registry.

22:52.440 --> 22:53.640
So I'm not doing that now.

22:53.640 --> 22:57.600
I just figured out it says registry certificate expired.

22:57.600 --> 22:59.520
If there's a quick fix, I'll implement that.

22:59.520 --> 23:03.720
Otherwise, I'll just go to Docker Hub and push it there.

23:03.720 --> 23:16.240
So let's see if I can fix my own certificate quickly.

23:16.240 --> 23:23.720
And that fix should be simply restarting my load balancer.

23:26.720 --> 23:27.560
That should fix.

23:37.240 --> 23:38.760
I think it did.

23:38.760 --> 23:40.520
So it fixed the certificate.

23:40.520 --> 23:44.400
So I'm going to push it again, and it's pushing.

23:44.400 --> 23:46.360
So I validate my certificate.

23:46.360 --> 23:48.480
Some problem in setting up the way

23:48.480 --> 23:52.000
the registry is expecting a HTTPS SSL certificate.

23:52.000 --> 23:53.560
That was fixed.

23:53.560 --> 23:56.200
And so we talk about how to set up

23:56.200 --> 23:59.480
registry in a separate session, not right now.

23:59.480 --> 24:01.000
We are going to use it right now.

24:01.000 --> 24:02.560
So I just pushed it.

24:02.560 --> 24:04.080
If you want to create a Docker image

24:04.080 --> 24:08.200
and push it to Docker Hub, well, you can do that.

24:08.200 --> 24:12.960
What you need to do is go to Docker Hub, like this.

24:12.960 --> 24:16.600
Docker Hub.

24:16.600 --> 24:17.560
And log in there.

24:20.520 --> 24:23.640
Log in, sign in button.

24:23.640 --> 24:25.920
Type in the username.

24:25.920 --> 24:28.440
Type in the password.

24:28.440 --> 24:29.960
And then authentication code.

24:35.280 --> 24:36.200
And verify.

24:36.200 --> 24:38.160
So you get inside Docker Hub.

24:38.160 --> 24:42.200
And here, you can push whatever you want.

24:42.200 --> 24:46.680
So what I have is, let's see.

24:46.680 --> 24:49.640
I'm going to pick the company name, Cloud Genius,

24:49.640 --> 24:52.800
and then push it to that name, or that namespace,

24:52.800 --> 24:53.840
I should say.

24:53.840 --> 24:56.080
Which means, like line number two,

24:56.080 --> 25:04.280
I need to create an image tag that Docker expects, like this.

25:04.280 --> 25:06.520
If your username is something like this,

25:06.520 --> 25:08.320
it will be that username.

25:08.320 --> 25:10.040
So basically, whatever your username is,

25:10.040 --> 25:12.600
that's the name of that image.

25:12.600 --> 25:15.760
So you need to build that Docker image one more time

25:15.760 --> 25:18.840
with the proper tags, like this.

25:18.840 --> 25:21.240
Hello, Sanjay, with the Docker specified,

25:21.240 --> 25:23.960
Docker registry specified naming convention.

25:23.960 --> 25:26.120
So we're building it, built it.

25:26.120 --> 25:29.720
Now we need to take this image, which is a different name,

25:29.720 --> 25:34.560
and push it, just like this, but with a different name

25:34.560 --> 25:37.640
that Docker Hub expects.

25:37.640 --> 25:40.960
So here we go.

25:40.960 --> 25:44.080
And I'm going to push using line number seven.

25:44.080 --> 25:47.840
What it will do is actually push my image from my machine

25:47.840 --> 25:51.680
to Docker Hub, somewhere here.

25:51.680 --> 25:54.920
And so if you look for, hello, Sanjay, it's not there yet.

25:54.920 --> 25:59.920
But if I push, it should attempt to push and might fail,

25:59.920 --> 26:04.000
because it requires you to log in.

26:04.000 --> 26:07.560
It succeeded, because I probably already logged in.

26:07.560 --> 26:11.560
If you are not logged in, you need to say Docker login,

26:11.560 --> 26:15.840
and then type in your username and get a password from them.

26:15.840 --> 26:17.280
These guys don't give you passwords.

26:17.280 --> 26:20.320
These days, they expect you to go to account settings

26:20.320 --> 26:24.480
and security profile and create a Docker access token.

26:24.480 --> 26:26.720
A new token is needed on the command line.

26:26.720 --> 26:28.560
You cannot use password.

26:28.560 --> 26:31.440
So you need to type the Docker login, login name, password,

26:31.440 --> 26:33.960
token, and then it logs in.

26:33.960 --> 26:35.520
Once you're logged in already, then you

26:35.520 --> 26:38.760
can push and pull from that Docker registry.

26:38.760 --> 26:39.840
Now I've pushed it.

26:39.840 --> 26:41.160
So let's go check with Docker Hub.

26:41.160 --> 26:44.040
Do you see my image there?

26:44.040 --> 26:46.800
If I go to account, Docker Hub, and my name, hello, Sanjay

26:46.800 --> 26:49.840
pops up right there.

26:49.840 --> 26:51.600
And it was just pushed.

26:51.600 --> 26:53.280
So the image is there.

26:53.280 --> 26:55.120
I'm going to use both these ones, the one I

26:55.120 --> 26:57.640
have in my own registry in my home,

26:57.640 --> 26:59.240
as well as the one I just put.

26:59.240 --> 27:02.560
They're basically identical images, different names,

27:02.560 --> 27:05.440
like number six and seven.

27:05.440 --> 27:06.440
Same thing.

27:06.440 --> 27:09.120
Line number two and three, same thing.

27:09.120 --> 27:11.480
The building process is actually line number one.

27:11.480 --> 27:12.360
It actually builds.

27:12.360 --> 27:14.720
And then you're just assigning tags in line number three

27:14.720 --> 27:18.120
and four, or tags, tag means name.

27:18.120 --> 27:19.960
And line number seven and eight are

27:19.960 --> 27:22.800
pushing those tags with the image associated

27:22.800 --> 27:24.400
to the appropriate registry.

27:24.400 --> 27:28.200
Six goes to my home, and seven goes to Docker Hub.

27:28.200 --> 27:30.440
You can have customized it further

27:30.440 --> 27:33.160
to, say, Google Container Registry, something

27:33.160 --> 27:38.480
like gcr.io, slash god knows what, slash something else,

27:38.480 --> 27:40.440
slash something, give you a random convention.

27:40.440 --> 27:43.320
And then you follow, and you put your own name.

27:43.320 --> 27:45.200
That's how other companies work.

27:45.200 --> 27:46.960
So they'll dictate what you put here.

27:46.960 --> 27:47.760
I don't know.

27:47.760 --> 27:50.520
You have to go there and find out in your account

27:50.520 --> 27:51.560
what should that name be.

27:51.560 --> 27:54.000
Some string they will give you to put here.

27:54.000 --> 27:55.840
So that's how it works.

27:55.840 --> 27:57.200
This is unknown right now.

27:57.200 --> 27:59.520
I don't care.

27:59.520 --> 28:00.800
So we created the image.

28:00.800 --> 28:03.720
We pushed it.

28:03.720 --> 28:07.520
Now is the time to run it locally first, right here

28:07.520 --> 28:08.960
on the Mac.

28:08.960 --> 28:11.840
Oh, sorry, on the Ubuntu machine, I should say.

28:11.840 --> 28:14.560
I should not call it a Mac.

28:14.560 --> 28:18.200
This, as you know, is an Ubuntu machine.

28:18.200 --> 28:20.080
It has the image that I just built.

28:24.560 --> 28:28.720
And there are two names to the same image.

28:28.720 --> 28:33.840
One is for my local registry, and the other is for Docker Hub.

28:33.840 --> 28:37.080
What I will do now is to see if I can run these images locally

28:37.080 --> 28:38.400
right here, right now.

28:38.400 --> 28:40.080
How do you run them?

28:40.080 --> 28:43.520
You go here and find out cheat code.

28:43.520 --> 28:45.480
I have such a bad memory.

28:45.480 --> 28:47.640
I don't remember anything whatsoever.

28:47.640 --> 28:49.160
I have to cheat every single time.

28:49.160 --> 28:52.920
So I go and refer to my notes, or go and do Google search.

28:52.920 --> 28:55.160
These days, barred search, chat GPT search.

28:55.160 --> 28:56.080
God knows whatever.

28:56.080 --> 28:58.280
Just don't memorize stuff.

28:58.280 --> 29:00.360
That's the thing I'm trying to tell you.

29:00.360 --> 29:02.480
Do not memorize anything.

29:02.480 --> 29:04.000
Always forget everything.

29:04.000 --> 29:05.360
It's a great thing to do.

29:05.360 --> 29:06.720
Just don't remember anything.

29:06.720 --> 29:08.320
Don't have to.

29:08.320 --> 29:10.560
There are computers to help you with that.

29:10.560 --> 29:13.120
So never memorize anything, whatever.

29:13.120 --> 29:15.200
Absolutely never.

29:15.200 --> 29:18.360
So what you need to understand is more important

29:18.360 --> 29:21.480
is what are you doing, and how will you get that done?

29:21.480 --> 29:23.800
What that actual process is, what the command is,

29:23.800 --> 29:25.840
what the syntax is, nobody cares.

29:25.840 --> 29:27.880
Because we have internet with us.

29:27.880 --> 29:29.320
And these days, AI with us.

29:29.320 --> 29:31.240
So you'd use that.

29:31.240 --> 29:33.400
Don't worry about remembering, memorizing.

29:33.400 --> 29:34.400
It is nonsense.

29:34.400 --> 29:36.160
So don't do that.

29:36.160 --> 29:41.320
Having said, this step, line number 14 is kind of useless.

29:41.320 --> 29:43.720
We already did that.

29:43.720 --> 29:47.280
This we talked about, line number 12.

29:47.280 --> 29:49.480
This, we should now run it locally.

29:49.480 --> 29:50.720
So let's go run.

29:50.720 --> 29:54.480
Line number 23 is how you run it to begin with, to test it out.

29:54.480 --> 29:58.240
So let us go test and see how it responds.

29:58.240 --> 29:59.640
Yeah, it is running.

29:59.640 --> 30:02.360
Let us see the process is running inside.

30:02.360 --> 30:03.600
Command P has not found.

30:03.600 --> 30:04.400
OK, that's OK.

30:04.400 --> 30:05.800
That's expected.

30:05.800 --> 30:08.320
This is expected.

30:08.320 --> 30:18.880
So the next thing we will do is run it properly

30:18.880 --> 30:21.320
without this bash thing at the end.

30:21.320 --> 30:22.680
When you want to run it properly,

30:22.680 --> 30:25.640
you want to actually assign a port

30:25.640 --> 30:27.160
on which it will expose itself.

30:27.160 --> 30:30.920
So that is going to be in line number 27, if I remember right.

30:30.920 --> 30:36.720
Line number 27 should do it the way I want, like that.

30:36.720 --> 30:38.920
Now, there is this esoteric thing

30:38.920 --> 30:41.480
that I have here, which is 8760.

30:41.480 --> 30:43.200
It's a custom port.

30:43.200 --> 30:46.320
I'm using a custom port on my Ubuntu machine

30:46.320 --> 30:49.560
because my port number 80 is taken.

30:49.560 --> 30:53.600
When you will run in the cloud, you will go like this,

30:53.600 --> 30:55.560
directly to the port number 80 on the cloud,

30:55.560 --> 30:57.920
because that is not taken by anything else.

30:57.920 --> 31:00.840
You'll be able to run it just like line number 25 is.

31:00.840 --> 31:04.400
But for my setup, my port number 80 is occupied.

31:04.400 --> 31:06.240
So I need to modify a little bit,

31:06.240 --> 31:08.720
and I need to go something like this to make

31:08.720 --> 31:13.320
it run on my machine, on port number 8760.

31:13.320 --> 31:15.840
And so I'll take that line number 27 here locally

31:15.840 --> 31:18.120
on my machine and run it.

31:18.120 --> 31:20.560
When I run it, it runs.

31:20.560 --> 31:21.800
Let us see what is running.

31:25.720 --> 31:27.600
And you will see that some things are running here,

31:27.600 --> 31:29.720
apparently.

31:29.720 --> 31:32.280
Yeah, one thing is running, one is exited.

31:32.280 --> 31:37.520
So this exited thing about a minute ago, I can clean it up.

31:37.520 --> 31:38.360
How do you clean up?

31:38.360 --> 31:43.480
You get this number from here, the initial few letters

31:43.480 --> 31:49.960
of that, PC07, as long as it is unambiguous, you can kill it.

31:49.960 --> 31:53.200
And then you have only one Sanjay process running

31:53.200 --> 31:54.880
in the form of a container.

31:54.880 --> 31:56.680
And you can examine it.

31:56.680 --> 32:02.000
It shows you that it is actually running exactly as you expect.

32:02.000 --> 32:08.120
Port number 8760 on the machine, Ubuntu machine, map to the container,

32:08.120 --> 32:13.280
port 80 in the container, running nginx.

32:13.280 --> 32:14.760
And this is your Ubuntu machine.

32:18.320 --> 32:21.520
So that mapping is taken care of.

32:21.520 --> 32:23.080
Let us go actually test.

32:23.080 --> 32:28.200
For which I need to go and visit a browser.

32:28.200 --> 32:31.080
And in that browser, I will type the address for that location

32:31.080 --> 32:33.560
where the machine is located.

32:33.560 --> 32:36.080
On line number 27, the address should be

32:36.080 --> 32:40.800
http colon slash slash, the machine's IP address.

32:40.800 --> 32:45.440
And then followed by, this is the IP address for the machine.

32:45.440 --> 32:48.360
And then I will type the address for the machine.

32:48.360 --> 32:52.960
It's IP address, and then followed by, this is the IP address,

32:52.960 --> 32:56.680
followed by port number 8760.

32:56.680 --> 32:59.160
That's where it should be running.

32:59.160 --> 33:02.280
So the IP address happens to be this name.

33:07.120 --> 33:12.080
So I'll take that name and put it right there.

33:12.080 --> 33:17.280
And it shows me not what I expect.

33:17.280 --> 33:20.280
We expect it to see, hello, Sanjay.

33:20.280 --> 33:23.440
And we get the default page.

33:23.440 --> 33:25.480
That's not what we wanted.

33:25.480 --> 33:28.480
And so that means our Dockerfile location

33:28.480 --> 33:33.280
that I chose in line number three

33:33.280 --> 33:34.840
is probably the right one.

33:34.840 --> 33:37.880
I don't know why things change, but we had to find it out.

33:37.880 --> 33:39.320
So let's go change it.

33:39.320 --> 33:42.360
There's a short method, quick and short dirty method.

33:42.360 --> 33:43.360
Change it.

33:43.360 --> 33:45.520
I did.

33:45.520 --> 33:46.680
And then save it.

33:46.680 --> 33:49.000
And then quickly build the entire process.

33:53.400 --> 33:54.360
How do you build?

33:54.360 --> 34:00.840
You take that name there and build it again.

34:00.840 --> 34:07.680
Then you run it, just like line number 27 was, like line 27.

34:07.680 --> 34:08.840
Here.

34:08.840 --> 34:22.160
And you kill the older processes first.

34:22.160 --> 34:25.480
Hold on, is it running or what?

34:25.480 --> 34:28.600
Docker ps-a-pipe grep.

34:34.120 --> 34:36.040
No, it is not running.

34:36.040 --> 34:39.640
So what is this showing us then?

34:39.640 --> 34:40.600
Where is it coming from?

34:43.800 --> 34:46.480
Something is running, but I don't see anything running.

34:46.480 --> 34:47.280
That's strange.

34:53.160 --> 34:55.200
Something is running there.

34:55.200 --> 34:58.200
And you need to kill it.

34:58.200 --> 35:00.280
So this must be something old running

35:00.280 --> 35:02.520
from my previous attempt at running this.

35:02.520 --> 35:03.840
So I'm going to kill that process.

35:03.840 --> 35:08.360
Docker rm-f b861.

35:08.360 --> 35:09.760
So it kills.

35:09.760 --> 35:11.920
That should go and check in the browser.

35:11.920 --> 35:13.160
It should say unable to connect.

35:13.160 --> 35:14.000
That's good.

35:14.000 --> 35:17.760
Now I will run our command to actually run

35:17.760 --> 35:22.160
this image one more time, which is line number 27.

35:22.160 --> 35:25.840
At the port I'm choosing is 8760.

35:25.840 --> 35:28.360
And so here it should run.

35:28.360 --> 35:32.280
And then we go open the browser and refresh.

35:32.280 --> 35:34.080
And we see, hello, Sanjay.

35:34.080 --> 35:35.600
That is the expected result. So I

35:35.600 --> 35:38.040
think something stale was there running in the background

35:38.040 --> 35:39.760
that I forgot to kill.

35:39.760 --> 35:42.200
So I found it, killed it, ran a refresh,

35:42.200 --> 35:44.400
and the result is available.

35:44.400 --> 35:52.280
What I want to do now is quickly build the image for Docker Hub

35:52.280 --> 35:53.080
also.

35:53.080 --> 35:55.720
Same idea, terminal.

35:55.720 --> 35:58.160
And we build this image last time

35:58.160 --> 36:00.440
using this name convention.

36:00.440 --> 36:02.720
So I'll build that image this time with the Docker Hub

36:02.720 --> 36:05.200
convention.

36:05.200 --> 36:07.040
And it builds.

36:07.040 --> 36:08.320
Then we'll say Docker push.

36:13.640 --> 36:17.640
And it pushes to Docker Hub.

36:17.640 --> 36:19.600
Access denied, it says.

36:19.600 --> 36:20.560
Strange.

36:20.560 --> 36:21.560
It says access denied.

36:21.560 --> 36:24.360
That means it is asking me to log in.

36:24.360 --> 36:26.920
So I'll try one more time.

36:26.920 --> 36:28.440
And it says access denied.

36:28.440 --> 36:32.440
That means I need to go Docker login.

36:32.440 --> 36:34.880
And it says Docker login succeeded

36:34.880 --> 36:39.280
because it previously picked up the Docker login

36:39.280 --> 36:41.160
from a cache location.

36:41.160 --> 36:44.240
It was cached locally in this location.

36:44.240 --> 36:48.360
And it says authenticating with existing credentials.

36:48.360 --> 36:51.040
Using a credential helper will remove this warning.

36:51.040 --> 36:52.400
Login succeeded.

36:52.400 --> 36:53.800
OK, fine.

36:53.800 --> 36:56.320
So please push it.

36:56.320 --> 36:58.680
So access is denied.

36:58.680 --> 37:01.680
And I have to go identify with a Docker login succeed,

37:01.680 --> 37:03.200
but the pushing is not allowed.

37:03.200 --> 37:04.880
What is going on?

37:04.880 --> 37:06.400
That is something I have to find out.

37:09.360 --> 37:11.600
Pushing is disallowed.

37:11.600 --> 37:16.280
So we will, I think, yeah.

37:16.280 --> 37:20.760
I think it's some kind of quota issue, apparently.

37:20.760 --> 37:25.560
It says I'm using four out of one private repositories, OK?

37:25.560 --> 37:28.120
What does that mean?

37:28.120 --> 37:29.080
Four out of one.

37:29.080 --> 37:31.160
I don't even want to use a private repository.

37:31.160 --> 37:33.320
I'm going to make it public.

37:33.320 --> 37:33.760
So settings.

37:36.600 --> 37:38.040
Let's go delete this.

37:38.040 --> 37:45.000
And so that's the reason why I don't

37:45.000 --> 37:47.200
like to use public repositories.

37:47.200 --> 37:50.360
Like this Docker hub company, they dictate things on you.

37:50.360 --> 37:53.000
Do this, don't do that, all that nonsense.

37:53.000 --> 37:54.280
So I run my own registry.

37:54.280 --> 37:56.040
I don't care.

37:56.040 --> 37:57.840
So I deleted that.

37:57.840 --> 38:01.240
So I hope that goes away.

38:01.240 --> 38:03.240
Still there, some deleting.

38:03.240 --> 38:05.280
It says deleting, which is fine.

38:05.280 --> 38:08.160
So let it delete.

38:08.160 --> 38:12.480
And I can maybe delete something else also.

38:12.480 --> 38:16.120
This was like two or three or four years ago.

38:16.120 --> 38:17.920
These images are not used and sitting here.

38:17.920 --> 38:19.400
I don't use this registry.

38:19.400 --> 38:22.000
That's why they have the old images sitting there.

38:22.000 --> 38:25.640
And so let's go let it delete first successfully.

38:25.640 --> 38:27.040
Deleting.

38:27.040 --> 38:30.400
So let's try pushing it.

38:30.400 --> 38:31.520
Access denied.

38:31.520 --> 38:33.600
Some policy issue here, apparently,

38:33.600 --> 38:36.080
that is preventing me from pushing.

38:36.080 --> 38:39.480
And they seem to have a bug of some solid type,

38:39.480 --> 38:41.000
which is very weird.

38:41.000 --> 38:44.040
It says four out of one private registry.

38:44.040 --> 38:45.880
This is mathematically incorrect.

38:45.880 --> 38:49.720
OK, so since I did not succeed with this Docker registry,

38:49.720 --> 38:52.400
by the way, you will succeed, because you may not

38:52.400 --> 38:53.800
have any images there.

38:53.800 --> 38:56.160
So there will be a quota of like one.

38:56.160 --> 39:00.840
So it's very, very minimal free quota they give you.

39:00.840 --> 39:04.320
And so that should work for the first image.

39:04.320 --> 39:06.280
And I'm trying to delete my existing images,

39:06.280 --> 39:08.120
and it is still stuck on deleting.

39:08.120 --> 39:09.840
It says depository being deleted.

39:09.840 --> 39:12.600
It should not take that long for deletions.

39:12.600 --> 39:14.600
But apparently, that was a mistake.

39:14.600 --> 39:17.640
But apparently, that's the state.

39:17.640 --> 39:19.560
So finally disappeared.

39:19.560 --> 39:21.040
OK, great.

39:21.040 --> 39:22.600
So I'm going to create a new repository.

39:22.600 --> 39:25.120
I'll call it Hello Sanjay.

39:25.120 --> 39:29.600
And make it public, clearly.

39:29.600 --> 39:31.560
And then create.

39:31.560 --> 39:33.760
So it is a public repository is empty.

39:33.760 --> 39:36.440
I'm going to now push it to that empty repository.

39:36.440 --> 39:38.320
And I hope this should succeed.

39:38.320 --> 39:39.840
This should push.

39:39.840 --> 39:40.560
Yes, it's pushing.

39:40.560 --> 39:41.600
Something happening.

39:41.600 --> 39:42.440
Different.

39:42.440 --> 39:45.480
So by default, I think it assumes

39:45.480 --> 39:47.400
that it is a private repository, and it's

39:47.400 --> 39:49.640
going to be limiting me for some budget criteria.

39:49.640 --> 39:51.040
I don't know what criteria.

39:51.040 --> 39:53.760
But if you create a repository manually

39:53.760 --> 39:58.960
like this on the Docker website, mark it public.

39:58.960 --> 40:00.720
I hope that will work.

40:00.720 --> 40:02.320
I'm hoping, because we don't know.

40:02.320 --> 40:04.680
So these are third-party companies

40:04.680 --> 40:09.400
that we depend on, but they're not sometimes dependable.

40:09.400 --> 40:12.000
And so that's why I tend to run everything myself

40:12.000 --> 40:14.280
in my own control.

40:14.280 --> 40:18.040
And then you run into issues like, I, certificate failed.

40:18.040 --> 40:18.680
That's OK.

40:18.680 --> 40:20.080
I know how to fix it.

40:20.080 --> 40:21.120
So I fixed it.

40:21.120 --> 40:22.680
And this thing, by the way, succeeded.

40:22.680 --> 40:25.520
So I pushed that image off to Docker Hub.

40:25.520 --> 40:26.680
That should show up here.

40:29.640 --> 40:32.240
And it does say pushed a few seconds ago.

40:32.240 --> 40:33.000
That's nice.

40:33.000 --> 40:34.880
It's a nice sign.

40:34.880 --> 40:37.560
OK, the image got pushed.

40:37.560 --> 40:40.760
So now that we have our image in two places, one of them

40:40.760 --> 40:46.480
is my home in line number six.

40:46.480 --> 40:49.400
And then also this Docker push to line number seven

40:49.400 --> 40:50.840
to Docker Hub also succeeded.

40:50.840 --> 40:54.640
We are not doing line number eight.

40:54.640 --> 40:56.640
OK, now what?

40:56.640 --> 40:57.880
So we have created an image.

40:57.880 --> 41:00.240
We need to use it now to some cloud.

41:00.240 --> 41:04.720
So let us go to some cloud here.

41:04.720 --> 41:11.240
The cloud I want to use today is, what's the cloud name?

41:11.240 --> 41:12.520
I forget the name.

41:12.520 --> 41:13.800
Headsner.

41:13.800 --> 41:16.120
So the random cloud, I just go to any cloud.

41:16.120 --> 41:18.760
I have accounts with every cloud.

41:18.760 --> 41:22.280
Headsner cloud, this is what I will be using.

41:22.280 --> 41:26.720
The reason for this is because it's a new cloud.

41:26.720 --> 41:33.280
And it is also pretty decent in terms of performance

41:33.280 --> 41:39.560
because it is local to our area, almost like to our drive.

41:39.560 --> 41:42.920
And I will be able to reach that location.

41:42.920 --> 41:44.640
So that's the Headsner cloud.

41:44.640 --> 41:46.680
It's actually a German company.

41:46.680 --> 41:48.040
And they have a location right here.

41:54.080 --> 41:58.400
So I think I should succeed in logging in.

41:58.400 --> 42:01.440
Maintenance work, what's new?

42:01.440 --> 42:03.280
Don't run your maintenance right now.

42:06.400 --> 42:10.360
Maintenance work on mirror, fine.

42:10.360 --> 42:12.200
When is it going to end?

42:12.200 --> 42:16.320
End at, OK, some maintenance happening.

42:16.320 --> 42:17.120
Whatever.

42:17.120 --> 42:21.400
So I will now go create a, sorry, select a project.

42:21.400 --> 42:22.440
I already have a project.

42:22.440 --> 42:24.240
Project is just the namespace.

42:24.240 --> 42:27.520
I will add a new machine there.

42:27.520 --> 42:29.640
And I will put that in Hillsboro, Oregon,

42:29.640 --> 42:34.560
which is almost two hours away from here, two, three hours.

42:34.560 --> 42:35.720
Maybe more than three.

42:35.720 --> 42:36.880
I don't know how far it is.

42:36.880 --> 42:38.760
But it's proximity.

42:38.760 --> 42:43.400
I will use this location.

42:43.400 --> 42:49.800
I will use an image called Ubuntu OS as the image, Ubuntu 22.04.

42:49.800 --> 42:54.640
And then we'll choose a cheap, small machine.

42:54.640 --> 42:55.960
Cheap is good.

42:55.960 --> 42:58.000
Small is better.

42:58.000 --> 43:01.280
And even better is free.

43:01.280 --> 43:03.440
You can get a free machine from many cloud companies,

43:03.440 --> 43:04.840
just so you know.

43:04.840 --> 43:08.040
And so free machine for certain conditions apply.

43:08.040 --> 43:09.600
And you need to read the conditions

43:09.600 --> 43:11.160
and then get the free machine.

43:11.160 --> 43:12.720
For me, it is not free.

43:12.720 --> 43:14.280
For you, it is going to be likely free

43:14.280 --> 43:17.000
if you are using it first time.

43:17.000 --> 43:20.080
And here I will make sure that I am providing them

43:20.080 --> 43:23.000
with my SSH key.

43:23.000 --> 43:27.520
So what I need to do is go to my machine

43:27.520 --> 43:30.360
and somebody also logging in again.

43:30.360 --> 43:33.760
So I'm going to let them in in the meeting.

43:33.760 --> 43:35.440
So they are coming into the meeting.

43:35.440 --> 43:39.120
And I am going to let them in.

43:39.120 --> 43:42.640
So hello, people who just joined.

43:42.640 --> 43:44.120
I am continuing.

43:44.120 --> 43:45.240
You can speak, by the way.

43:45.240 --> 43:47.600
So people who just joined, you can speak at any time.

43:47.600 --> 43:49.000
Open your mic and speak.

43:49.000 --> 43:51.760
There's no problem at all.

43:51.760 --> 43:54.560
So what I am doing next is take our image

43:54.560 --> 43:56.720
and push it out to the cloud, for which

43:56.720 --> 43:59.320
I need to, sorry, I already did that.

43:59.320 --> 44:03.560
What I need to get is a key pair from my computer

44:03.560 --> 44:05.840
and give to these guys, the cloud company.

44:05.840 --> 44:09.200
They need to know who I am.

44:09.200 --> 44:17.000
So I need to grab my key pair from here.

44:17.000 --> 44:20.080
That is my public key.

44:20.080 --> 44:23.680
So I need to grab that public key and give it to this company.

44:23.680 --> 44:32.400
So I'll cat that public key and then copy it.

44:39.520 --> 44:44.000
And then here onto the cloud company,

44:44.000 --> 44:49.880
I'll add a new key and paste it in.

44:49.880 --> 44:53.760
And it says, this SSH key already exists in the project.

44:53.760 --> 44:56.840
That means my key, they already know me.

44:56.840 --> 44:58.120
But that's how you do it.

44:58.120 --> 45:02.760
You get your public key, put it there, and then paste it in,

45:02.760 --> 45:03.760
and then save.

45:03.760 --> 45:05.600
Apparently, I already have my key there.

45:05.600 --> 45:07.000
I don't need to paste it.

45:07.000 --> 45:08.720
I just need to select it.

45:08.720 --> 45:11.200
So I selected it.

45:11.200 --> 45:22.400
And then scroll, scroll, scroll, and give it a name.

45:22.400 --> 45:24.840
We'll call it some cloud, or Sanjay cloud.

45:24.840 --> 45:25.480
How about that?

45:25.480 --> 45:27.440
Sanjay cloud.

45:27.440 --> 45:29.120
Or just Sanjay, or it doesn't matter.

45:29.120 --> 45:30.520
The name is not that relevant.

45:30.520 --> 45:32.640
So just put in some name for the machine.

45:32.640 --> 45:35.800
And then you have to purchase.

45:35.800 --> 45:39.400
Basically, you have to rent this machine from them.

45:39.400 --> 45:40.960
So I'm going to rent it.

45:40.960 --> 45:43.760
I will be spending some money on this activity.

45:43.760 --> 45:46.720
And I will be, if I keep this machine up and running

45:46.720 --> 45:53.240
for about one month, they will charge me $4.35.

45:53.240 --> 45:56.360
If you don't run it for a day, if you run it for a day,

45:56.360 --> 45:59.020
they'll divide it by 30, approximately.

45:59.020 --> 46:01.200
So create and buy.

46:01.200 --> 46:01.920
I purchased.

46:01.920 --> 46:03.680
The machine is getting ready.

46:03.680 --> 46:06.640
And I got this IP address.

46:06.640 --> 46:12.440
Grab it, copy it, and put it in my notes.

46:12.440 --> 46:16.280
So that's the IP address for my machine.

46:16.280 --> 46:18.280
Now that machine runs Ubuntu.

46:18.280 --> 46:21.280
It doesn't have Docker.

46:21.280 --> 46:23.960
So we need to put Docker in there.

46:23.960 --> 46:25.800
So this machine IP address that I have,

46:25.800 --> 46:28.680
it's called Sanjay cloud.

46:28.680 --> 46:31.040
That has the IP address right there.

46:31.040 --> 46:34.960
And it does not have anything else apart from basic Ubuntu

46:34.960 --> 46:35.760
OS.

46:35.760 --> 46:37.000
That's it.

46:37.000 --> 46:39.120
So we need to put everything we need there

46:39.120 --> 46:42.520
to make it run Docker, and then run our Docker

46:42.520 --> 46:43.840
image in that machine.

46:43.840 --> 46:45.440
And then you will see, hello, Sanjay,

46:45.440 --> 46:47.440
showing up as a result. That's what we're

46:47.440 --> 46:50.080
expecting to see at the end.

46:50.080 --> 46:53.160
So what are we going to do next?

46:53.160 --> 46:56.280
We are going to connect to that Sanjay cloud machine using

46:56.280 --> 46:58.880
this IP address.

46:58.880 --> 47:00.080
So we'll do that.

47:00.080 --> 47:12.240
I am going to take my command line again.

47:12.240 --> 47:15.000
This is the project we are working on, May 16.

47:15.000 --> 47:18.200
And here, I will SSH into that machine,

47:18.200 --> 47:23.080
into that remote head in a cloud machine in Hillsboro, Oregon.

47:23.080 --> 47:25.320
And the login name is root.

47:25.320 --> 47:26.600
And so it says, are you sure?

47:26.600 --> 47:30.000
And I say, yes, and it connects.

47:30.000 --> 47:31.200
Nice.

47:31.200 --> 47:32.200
What do we do now?

47:32.200 --> 47:33.960
Do you have Docker in there?

47:33.960 --> 47:35.400
No.

47:35.400 --> 47:40.520
Can you install Docker by typing these commands?

47:40.520 --> 47:41.880
Yes.

47:41.880 --> 47:44.720
Should you install Docker by typing these commands?

47:44.720 --> 47:46.000
Probably no.

47:46.000 --> 47:47.240
You don't.

47:47.240 --> 47:55.480
Because what you should do is go to the official documentation

47:55.480 --> 48:00.840
and search how to install Docker on Ubuntu 22.04.

48:00.840 --> 48:04.160
And that's how the DigitalOcean guys tell you.

48:04.160 --> 48:06.120
But that's DigitalOcean.

48:06.120 --> 48:08.440
I want to read the official documentation.

48:08.440 --> 48:10.840
So I go here.

48:10.840 --> 48:12.480
Install Docker engine on Ubuntu.

48:12.480 --> 48:15.720
That's the official documentation for Docker.

48:15.720 --> 48:18.440
So I'll follow that, not follow these commands.

48:18.440 --> 48:20.560
They give you a shortcut cheat method.

48:20.560 --> 48:21.960
You can use that.

48:21.960 --> 48:23.480
It's not illegal.

48:23.480 --> 48:25.720
You can totally use these methods, like these two methods

48:25.720 --> 48:28.000
they provide you.

48:28.000 --> 48:31.520
These two, one and two, they're OK.

48:31.520 --> 48:33.600
And it's not bad.

48:33.600 --> 48:36.960
But this is the official method.

48:36.960 --> 48:41.960
So we'll use the official method, not the shortcut method,

48:41.960 --> 48:44.760
which means you have to read.

48:44.760 --> 48:47.960
First thing, remove any old Docker that you have.

48:47.960 --> 48:49.840
I don't have any.

48:49.840 --> 48:53.280
Next, set up the app repository.

48:53.280 --> 49:00.720
So go copy this, run it, and then copy this.

49:00.720 --> 49:04.320
It should be fast, because it's a cloud-connected machine.

49:04.320 --> 49:06.360
My home is equally fast, I guess.

49:06.360 --> 49:07.080
So it's not bad.

49:07.080 --> 49:10.760
But if you're running from a different location

49:10.760 --> 49:13.360
and you do not have high-speed internet,

49:13.360 --> 49:16.560
that may be a bit slow if you run things locally,

49:16.560 --> 49:19.360
like.compile Docker images and pull down Docker images

49:19.360 --> 49:21.120
from cloud services.

49:21.120 --> 49:23.680
But this guy is actually the cloud itself.

49:23.680 --> 49:25.520
It's very high bandwidth, high-speed internet

49:25.520 --> 49:26.920
available to us.

49:26.920 --> 49:29.840
So we are following instructions line by line.

49:32.800 --> 49:35.680
No rocket science, just copy paste, nothing else.

49:39.120 --> 49:41.400
But just don't miss a step.

49:41.400 --> 49:42.800
That's the key.

49:42.800 --> 49:44.840
Don't miss it, and you should be OK.

49:47.880 --> 49:50.560
Then we install app update, and then install

49:50.560 --> 49:53.800
the Docker engine in the next step, like this.

49:57.040 --> 50:00.080
And this will install Docker, Docker compose,

50:00.080 --> 50:03.480
and any associated plugins needed.

50:03.480 --> 50:04.040
It'll do it.

50:06.760 --> 50:08.040
Then you have Docker.

50:08.040 --> 50:08.560
That's it.

50:08.560 --> 50:10.120
That's how the official method is.

50:10.120 --> 50:11.440
So you follow the official method

50:11.440 --> 50:15.640
as opposed to whatever else you read on some internet website.

50:15.640 --> 50:17.600
Don't do that.

50:17.600 --> 50:19.040
Always follow the official method.

50:19.040 --> 50:19.760
It's much better.

50:19.760 --> 50:26.080
Let me mute it.

50:32.480 --> 50:36.520
So I think Docker got installed.

50:36.520 --> 50:40.480
Then we will run, test it to see if it runs.

50:40.480 --> 50:41.640
I think it should run.

50:41.640 --> 50:44.320
But this pseudo thing is what I don't like.

50:44.320 --> 50:48.360
So I don't want to run pseudo for common usage.

50:48.360 --> 50:51.080
You should not use pseudo, generally speaking.

50:51.080 --> 50:52.840
Pseudo is avoidable.

50:52.840 --> 50:56.320
Pseudo is like what is called Superman, no, no, no.

50:56.320 --> 50:58.600
Spider-Man, Spider-Man.

50:58.600 --> 51:02.280
Uncle Ben says to Spider-Man.

51:02.280 --> 51:05.600
This challenge, I just went a couple of minutes back.

51:05.600 --> 51:08.680
I've asked my colleague also to join Sumit Muchhal.

51:08.680 --> 51:10.360
He is in the waiting room.

51:10.360 --> 51:10.840
I see.

51:10.840 --> 51:11.880
OK, let him in.

51:11.880 --> 51:16.400
I don't hear the, I admitted him.

51:16.400 --> 51:18.240
So he's coming in.

51:18.240 --> 51:19.440
OK, sure.

51:19.440 --> 51:20.760
I think he should be in now.

51:20.760 --> 51:25.600
So what I was talking to you about is pseudo.

51:25.600 --> 51:30.080
And pseudo is Uncle Ben telling Spider-Man,

51:30.080 --> 51:34.200
with great power comes great responsibility.

51:34.200 --> 51:36.800
So pseudo is like a superpower.

51:36.800 --> 51:38.480
Don't abuse it.

51:38.480 --> 51:41.400
Don't misuse it.

51:41.400 --> 51:42.280
That's the key.

51:42.280 --> 51:44.560
So that's what I want to talk about next,

51:44.560 --> 51:48.120
is this command asks you to run pseudo.

51:48.120 --> 51:49.160
You can run it.

51:49.160 --> 51:50.920
It doesn't hurt.

51:50.920 --> 51:52.640
So let's go run it first.

51:52.640 --> 51:55.000
So it says I'm unable to find Docker image,

51:55.000 --> 51:56.040
and so something happened.

51:56.040 --> 51:57.760
And it succeeded, by the way.

51:57.760 --> 52:00.680
Whatever it wanted to do, Docker ran successfully.

52:00.680 --> 52:04.240
But if you run Docker like this, it runs.

52:04.240 --> 52:10.760
So the idea of pseudo is simply this xkcd pseudo.

52:10.760 --> 52:13.520
Let's read this comic.

52:13.520 --> 52:14.720
The comic is like this.

52:14.720 --> 52:16.320
It's a cartoon, by the way.

52:16.320 --> 52:20.200
It's a meme in there.

52:20.200 --> 52:24.000
Make me a sandwich.

52:24.000 --> 52:27.040
This person on the sofa says, make me a sandwich.

52:27.040 --> 52:29.720
The other person says, what?

52:29.720 --> 52:33.040
Make it yourself.

52:33.040 --> 52:34.560
Then the other person on the sofa says,

52:34.560 --> 52:37.040
pseudo, make me a sandwich.

52:37.040 --> 52:39.400
And the other person says, OK.

52:39.400 --> 52:42.120
You see the difference with pseudo?

52:42.120 --> 52:44.360
This is a classic pseudo joke, by the way,

52:44.360 --> 52:45.480
if you do not know.

52:45.480 --> 52:48.280
That's what pseudo is, super power.

52:48.280 --> 52:50.640
And so with great power comes great responsibility.

52:50.640 --> 52:54.960
And so we just finished installing Docker.

52:54.960 --> 52:58.240
You can, there are some post installation steps here.

52:58.240 --> 53:01.200
After you install, there are good things to do.

53:01.200 --> 53:03.080
You should do that.

53:03.080 --> 53:05.400
Take, for example, here.

53:09.520 --> 53:13.880
Then here.

53:13.880 --> 53:15.480
There is meaning to every action you do.

53:15.480 --> 53:17.000
So you have to understand what these meanings are.

53:17.000 --> 53:18.760
So I'm not going into detail about what

53:18.760 --> 53:19.760
those things actually do.

53:19.760 --> 53:22.240
If you ask me a question, I will answer them.

53:22.240 --> 53:24.240
If you don't ask me, you have to read yourself.

53:28.440 --> 53:32.200
And I think that concludes our setup and installation

53:32.200 --> 53:34.760
and also the post installation steps of installing Docker

53:34.760 --> 53:37.960
Engine using the formal documentation.

53:37.960 --> 53:43.440
Having seen that, I will now proceed to the next step.

53:43.440 --> 53:45.920
Now that we have Docker in this machine

53:45.920 --> 53:48.080
and we have one image called hello world there already

53:48.080 --> 53:49.640
on that cloud machine.

53:49.640 --> 53:53.240
I want to bring my image there to the cloud machine.

53:53.240 --> 53:55.640
So how do I bring my image?

53:55.640 --> 54:00.880
I go to my registry, Docker Hub, line number 7,

54:00.880 --> 54:03.360
and make a copy of that.

54:03.360 --> 54:05.160
These two lines, 6 and 7.

54:05.160 --> 54:07.920
And instead of push, I'll say, pull.

54:10.840 --> 54:12.280
Like that.

54:12.280 --> 54:18.280
And so let's begin bringing that image from Docker Hub.

54:18.280 --> 54:20.480
It should pull.

54:20.480 --> 54:21.880
It pulled.

54:21.880 --> 54:24.280
That means we have two images now.

54:24.280 --> 54:26.800
One image is called hello world and the other one

54:26.800 --> 54:28.960
is hello Sanjay.

54:28.960 --> 54:31.920
Actually, the full name for that is not just hello Sanjay.

54:31.920 --> 54:37.760
It is my login name in Docker Hub followed by hello Sanjay.

54:37.760 --> 54:41.040
That's what you see here.

54:41.040 --> 54:45.880
So that image that I created in my home sent to Docker Hub.

54:45.880 --> 54:48.320
Docker Hub was able to pull it.

54:48.320 --> 54:49.800
Sorry, our machine in the cloud was

54:49.800 --> 54:52.080
able to pull it from Docker Hub.

54:52.080 --> 54:53.240
How did these things flow?

54:53.240 --> 54:54.160
Let's go check.

54:54.160 --> 54:57.080
I'll draw a picture.

54:57.080 --> 55:02.440
I created an image here in my home.

55:02.440 --> 55:03.800
And I pushed it to Docker Hub.

55:07.160 --> 55:09.280
Then I went to a cloud.

55:09.280 --> 55:11.920
Let's call it Headsnod.

55:11.920 --> 55:13.480
Created a machine there.

55:13.480 --> 55:16.880
And in that machine, I said, pull it.

55:16.880 --> 55:19.680
So it pulls.

55:19.680 --> 55:25.440
I also pushed this image to my own registry.

55:25.440 --> 55:30.760
Can I pull that image from my registry to the cloud?

55:30.760 --> 55:33.360
The answer is yes.

55:33.360 --> 55:37.800
As long as I'm able to pass a login and password.

55:37.800 --> 55:40.600
Because this is my own private registry

55:40.600 --> 55:43.560
that I run it myself locally here.

55:43.560 --> 55:47.040
And it is accessible only to me with a login and password

55:47.040 --> 55:50.320
that I have chosen for here.

55:50.320 --> 55:52.520
And so just like you have a Docker Hub login password,

55:52.520 --> 55:55.960
you will use that to pull and push and all that.

55:55.960 --> 56:00.200
Everything I do is like my own setup.

56:00.200 --> 56:03.680
It's completely disconnected from anything on the planet.

56:03.680 --> 56:04.840
I have my own cloud.

56:04.840 --> 56:06.520
Think of it that way.

56:06.520 --> 56:10.360
And so more people coming in, apparently.

56:10.360 --> 56:13.480
I think people get up whenever they feel like it.

56:13.480 --> 56:15.760
That's OK.

56:15.760 --> 56:18.400
I think it is kind of too early in India.

56:18.400 --> 56:18.920
So it's OK.

56:18.920 --> 56:21.000
It's accepted.

56:21.000 --> 56:25.800
So this image flew from here to here,

56:25.800 --> 56:27.200
and then from here to there.

56:27.200 --> 56:28.840
So we have it here now.

56:28.840 --> 56:33.040
So before I go into this other route, we'll do that later.

56:33.040 --> 56:37.640
Let's go play with this what we have in our hand first.

56:37.640 --> 56:43.720
So we have that image available to us in our cloud machine.

56:43.720 --> 56:45.200
We want to run it.

56:45.200 --> 56:46.520
How do you run it?

56:46.520 --> 56:47.880
Running is the same way.

56:47.880 --> 56:52.000
Like line numbers, where is that?

56:56.360 --> 56:58.640
32, 32.

56:58.640 --> 57:01.280
Well, I modify a little bit.

57:01.280 --> 57:08.520
Let's call it this.

57:08.520 --> 57:11.680
That's how you run it in a cloud setup.

57:11.680 --> 57:17.920
I run it locally, like 36, line 36.

57:17.920 --> 57:19.560
And I have some custom modifications

57:19.560 --> 57:21.280
from my home setup, so I don't want

57:21.280 --> 57:23.400
to worry about those aspects late right now.

57:23.400 --> 57:27.920
I will just run it like line number 32 in the cloud,

57:27.920 --> 57:29.600
like that.

57:29.600 --> 57:32.120
And then check what is running.

57:32.120 --> 57:34.160
And you see that there is a hello Docker that

57:34.160 --> 57:37.720
exited five minutes ago because I ran that command.

57:37.720 --> 57:39.720
And we have something else here running,

57:39.720 --> 57:41.720
which we wanted it to run.

57:41.720 --> 57:45.200
It is running currently and up and running for like two

57:45.200 --> 57:46.440
seconds.

57:46.440 --> 57:49.000
And it is currently mapped to port number 80

57:49.000 --> 57:51.240
as we expect it to be.

57:51.240 --> 57:52.560
Beautiful.

57:52.560 --> 57:54.240
So what's the next idea?

57:54.240 --> 57:56.280
It apparently is running.

57:56.280 --> 57:57.600
So let's go test it.

57:57.600 --> 58:03.600
Is it actually running in this machine at that IP address?

58:03.600 --> 58:05.320
Is it running for real?

58:05.320 --> 58:06.880
That's what I want to check.

58:06.880 --> 58:10.000
Are you just telling me something that should be

58:10.000 --> 58:11.080
or is it actually running?

58:11.080 --> 58:12.800
So show me what you have.

58:12.800 --> 58:17.560
So I'll open up that IP address with an HTTP protocol

58:17.560 --> 58:19.360
and hit it.

58:19.360 --> 58:22.040
And we get the result we expect.

58:22.040 --> 58:24.240
Hello, Sanjay.

58:24.240 --> 58:27.440
So it ran in the cloud.

58:27.440 --> 58:33.800
Now, what I want to say is that you

58:33.800 --> 58:38.520
can change whatever you want in your design and do it again.

58:38.520 --> 58:44.000
For example, I will go to my index.

58:44.000 --> 58:51.280
And this time, say, hello.

58:51.280 --> 58:53.360
Who's the new person just joined?

58:53.360 --> 58:54.160
What's his name?

58:54.160 --> 58:55.280
Sumit.

58:55.280 --> 58:56.920
Sumit.

58:56.920 --> 58:57.560
Hello, Sumit.

58:57.560 --> 58:59.280
I'll make it hello, Sumit now.

58:59.280 --> 59:02.840
So I did modify my code, the index file.

59:02.840 --> 59:07.480
And then I will execute the steps

59:07.480 --> 59:10.960
that I have in mind, which is simple.

59:10.960 --> 59:16.160
Build the Docker image with the Docker hub name line number 4.

59:16.160 --> 59:17.800
I will come out of that heads not cloud,

59:17.800 --> 59:20.000
by the way, exit from the cloud.

59:20.000 --> 59:29.520
But before I exit, let me clean up Docker RM-F.

59:29.520 --> 59:32.440
Typing mistake.

59:32.440 --> 59:33.800
And it kills some things.

59:33.800 --> 59:37.040
Let's go see what it killed.

59:37.040 --> 59:38.120
Did it kill properly?

59:38.120 --> 59:39.200
Yes, it did.

59:39.200 --> 59:41.440
And what are the images available there?

59:41.440 --> 59:42.040
Two images.

59:42.040 --> 59:43.440
Let's go delete both these images

59:43.440 --> 59:44.640
so that there's no confusion.

59:44.640 --> 59:50.760
So Docker RMI, this image ID, and also that image ID.

59:50.760 --> 59:52.760
So let's kill them all.

59:52.760 --> 59:53.600
Nice.

59:53.600 --> 59:55.000
And what do we have there?

59:55.000 --> 59:58.880
No images and no processes.

59:58.880 --> 01:00:00.000
Clean.

01:00:00.000 --> 01:00:01.320
OK, exit.

01:00:01.320 --> 01:00:03.560
Back to my machine.

01:00:03.560 --> 01:00:06.000
In this machine, what do I have?

01:00:06.000 --> 01:00:09.200
I have an old image, which contains hello, Sanjay.

01:00:09.200 --> 01:00:13.280
I want to make it hello, Sumit, like this.

01:00:13.280 --> 01:00:16.680
So I will have to build new images.

01:00:16.680 --> 01:00:18.920
How do you build a new image?

01:00:18.920 --> 01:00:24.560
You run line number 4 like that and take it to the command line

01:00:24.560 --> 01:00:25.800
and run it.

01:00:25.800 --> 01:00:27.200
It builds.

01:00:27.200 --> 01:00:28.360
Nice.

01:00:28.360 --> 01:00:31.600
What do we do next?

01:00:31.600 --> 01:00:36.480
We push that image to wherever we feel like,

01:00:36.480 --> 01:00:38.840
like we are currently dealing with Docker Hub.

01:00:38.840 --> 01:00:41.840
So we'll push it to Docker Hub, like line number 7.

01:00:41.840 --> 01:00:44.760
And this time, the push will contain the name Sumit

01:00:44.760 --> 01:00:47.040
as opposed to Sanjay.

01:00:47.040 --> 01:00:50.040
So it pushes.

01:00:50.040 --> 01:00:52.360
You will see most of the layers already exist.

01:00:52.360 --> 01:00:57.120
The only thing that is pushed is just this layer.

01:00:59.840 --> 01:01:02.600
Every other layer already exists because it's

01:01:02.600 --> 01:01:05.080
identical between Sumit and Sanjay.

01:01:05.080 --> 01:01:09.240
So what it did here is removed Sanjay and put Sumit there.

01:01:09.240 --> 01:01:11.560
That's the only layer that was pushed.

01:01:11.560 --> 01:01:14.560
Everything else already existed because we did not change any,

01:01:14.560 --> 01:01:16.120
just one layer.

01:01:16.120 --> 01:01:17.280
So pushing was efficient.

01:01:20.960 --> 01:01:25.160
Next, I want to take that image and send it

01:01:25.160 --> 01:01:28.880
to the cloud, for which I need to go to the cloud.

01:01:28.880 --> 01:01:30.960
So here is how you go.

01:01:30.960 --> 01:01:32.200
SSH to the cloud.

01:01:32.200 --> 01:01:33.800
Now we are connected there.

01:01:33.800 --> 01:01:36.200
In that cloud, we have this image.

01:01:36.200 --> 01:01:37.560
I already deleted them.

01:01:37.560 --> 01:01:39.360
So we have no images there.

01:01:39.360 --> 01:01:43.240
So I want to bring that image from Docker Hub over to my cloud.

01:01:43.240 --> 01:01:44.520
How do I do that?

01:01:44.520 --> 01:01:48.560
I pull line number 11.

01:01:48.560 --> 01:01:49.760
And I run it.

01:01:49.760 --> 01:01:51.240
So it pulls.

01:01:51.240 --> 01:01:54.640
When it pulls this time, it will come with Sumit.

01:01:54.640 --> 01:01:56.520
And it came.

01:01:56.520 --> 01:01:58.720
And I will run now.

01:01:58.720 --> 01:02:00.000
I will run.

01:02:00.000 --> 01:02:00.520
How do you run?

01:02:05.040 --> 01:02:07.960
How do you run?

01:02:07.960 --> 01:02:12.160
You run it like line number 32, like this.

01:02:12.160 --> 01:02:17.600
So you copy and execute.

01:02:17.600 --> 01:02:25.240
It is running on port number 80 on the machine in the cloud,

01:02:25.240 --> 01:02:29.200
Heznar cloud, Heznar cloud.

01:02:29.200 --> 01:02:32.000
This is the port on the container.

01:02:32.000 --> 01:02:32.800
Which container?

01:02:32.800 --> 01:02:34.320
This container.

01:02:34.320 --> 01:02:38.280
It is running our custom created image.

01:02:38.280 --> 01:02:41.520
And it's up and running for two seconds or more.

01:02:41.520 --> 01:02:45.680
And this mapping is between port on the machine,

01:02:45.680 --> 01:02:47.880
port on the container.

01:02:47.880 --> 01:02:49.280
That's the mapping.

01:02:49.280 --> 01:02:51.520
So now we should see, hello, Sumit,

01:02:51.520 --> 01:02:56.960
when we visit that IP address on a HTTP protocol.

01:02:56.960 --> 01:03:00.240
So let's open browser and refresh.

01:03:00.240 --> 01:03:01.640
And you see Sumit.

01:03:01.640 --> 01:03:03.360
That's simple as that.

01:03:03.360 --> 01:03:04.440
Any questions?

01:03:09.000 --> 01:03:12.080
No questions?

01:03:12.080 --> 01:03:14.840
Was I absolutely clear about what I was doing?

01:03:14.840 --> 01:03:15.520
That was amazing.

01:03:19.400 --> 01:03:22.560
Nobody wants to say anything, and that's OK.

01:03:22.560 --> 01:03:25.880
Let's check time, because I tend to forget

01:03:25.880 --> 01:03:29.040
what time we have spent.

01:03:29.040 --> 01:03:31.360
So it is 8.39.

01:03:31.360 --> 01:03:33.120
We started at 7.30.

01:03:33.120 --> 01:03:35.040
And so it's about an hour, more than an hour.

01:03:35.040 --> 01:03:38.200
So if you have a specific question about something else,

01:03:38.200 --> 01:03:40.720
like how do you build a complex application,

01:03:40.720 --> 01:03:44.440
or how do you use something different, ask that.

01:03:44.440 --> 01:03:46.720
If you don't ask, I'll do whatever I feel like.

01:03:46.720 --> 01:03:48.120
OK, go ahead.

01:03:48.120 --> 01:03:52.000
So this is Sumit.

01:03:52.000 --> 01:03:52.960
Hi.

01:03:52.960 --> 01:03:54.440
So I have a complex question.

01:03:54.440 --> 01:03:57.040
Basically, let's say we have a legacy application which

01:03:57.040 --> 01:03:59.600
is deployed to WebSphere.

01:03:59.600 --> 01:04:02.440
We don't want to migrate that to Tomcat for documentation

01:04:02.440 --> 01:04:04.560
purpose, but we want to dockerize that application

01:04:04.560 --> 01:04:07.920
and run it in a WebSphere itself as a Docker image.

01:04:07.920 --> 01:04:09.680
How should we approach that?

01:04:09.680 --> 01:04:10.680
Don't.

01:04:10.680 --> 01:04:12.120
That's not how you do it.

01:04:12.120 --> 01:04:13.160
You actually consider it.

01:04:13.160 --> 01:04:14.760
I know.

01:04:14.760 --> 01:04:18.400
But that's the expectation from our customers.

01:04:18.400 --> 01:04:20.520
So we got to fulfill and work with the customer

01:04:20.520 --> 01:04:23.240
until they migrated to Tomcat, and everyone has a budget

01:04:23.240 --> 01:04:24.800
and other things.

01:04:24.800 --> 01:04:27.520
So definitely, we are actually doing a couple

01:04:27.520 --> 01:04:29.800
of applications like this, and we are

01:04:29.800 --> 01:04:31.320
categorizing it for a WebSphere.

01:04:31.320 --> 01:04:33.960
But I just wanted to know your opinion.

01:04:33.960 --> 01:04:35.880
I understand one part is we shouldn't do it.

01:04:35.880 --> 01:04:36.440
We agree.

01:04:36.440 --> 01:04:39.080
But if we have to approach for some reason,

01:04:39.080 --> 01:04:41.440
what should be the strategy?

01:04:41.440 --> 01:04:42.120
I'll answer it.

01:04:42.120 --> 01:04:42.720
I'll answer it.

01:04:42.720 --> 01:04:43.240
Hold on.

01:04:43.240 --> 01:04:43.760
Hold on.

01:04:43.760 --> 01:04:46.640
I think somebody is calling me from India.

01:04:46.640 --> 01:04:47.600
These are my parents.

01:04:47.600 --> 01:04:49.280
So I'll just tell them briefly.

01:04:49.280 --> 01:04:50.000
We'll stand by.

01:04:50.000 --> 01:04:50.500
Sure.

01:04:50.500 --> 01:04:51.000
Mm-hmm.

01:04:54.200 --> 01:04:54.920
Hello.

01:04:54.920 --> 01:04:55.880
I'm in a meeting.

01:04:55.880 --> 01:04:56.960
I'll talk to you later.

01:04:56.960 --> 01:04:57.560
I'm in a meeting.

01:04:57.560 --> 01:04:58.480
I'll talk to you later.

01:04:58.480 --> 01:05:02.040
OK.

01:05:02.040 --> 01:05:03.600
So let me understand the question.

01:05:03.600 --> 01:05:06.720
The question you're asking me is like this.

01:05:06.720 --> 01:05:09.160
It's like this.

01:05:09.160 --> 01:05:11.760
And correct me if I'm wrong.

01:05:11.760 --> 01:05:12.720
Notes.

01:05:12.720 --> 01:05:14.840
Where are the notes?

01:05:14.840 --> 01:05:15.520
Here.

01:05:15.520 --> 01:05:17.920
The question you're asking me is you have some application

01:05:17.920 --> 01:05:18.200
under it.

01:05:18.200 --> 01:05:19.960
You don't want to dockerize it, but still

01:05:19.960 --> 01:05:22.000
want to run it in a container, right?

01:05:22.000 --> 01:05:22.880
Is that what you want?

01:05:22.880 --> 01:05:24.280
No, we want to dockerize it.

01:05:24.280 --> 01:05:24.800
No, no, no.

01:05:24.800 --> 01:05:28.600
So what I have is an app which is running on a WebSphere

01:05:28.600 --> 01:05:29.960
server today.

01:05:29.960 --> 01:05:31.480
Mm-hmm.

01:05:31.480 --> 01:05:33.000
OK.

01:05:33.000 --> 01:05:33.920
And what's underneath?

01:05:33.920 --> 01:05:38.680
We want to containerize and run in a WebSphere container

01:05:38.680 --> 01:05:39.640
as an image, basically.

01:05:39.640 --> 01:05:41.840
Basically, we want to dockerize the application

01:05:41.840 --> 01:05:45.360
and use WebSphere as a server, as a docker image,

01:05:45.360 --> 01:05:48.080
so that we don't need to use the full feature of WebSphere.

01:05:48.080 --> 01:05:51.160
But we can use their servers, which

01:05:51.160 --> 01:05:53.240
comes for a Liberty server, basically,

01:05:53.240 --> 01:05:56.320
which comes from a WebSphere as a docker purpose.

01:05:56.320 --> 01:05:56.920
Hold on, hold on.

01:05:56.920 --> 01:05:58.680
I think I understand a little bit more.

01:05:58.680 --> 01:06:00.360
Tell me a little bit what you have.

01:06:00.360 --> 01:06:02.160
So I think I have a solution for you.

01:06:02.160 --> 01:06:03.520
So you have an application.

01:06:03.520 --> 01:06:04.560
You have a WebSphere.

01:06:04.560 --> 01:06:07.360
What do you have underneath?

01:06:07.360 --> 01:06:10.480
So we have a DB2 as a database, let's say,

01:06:10.480 --> 01:06:12.880
which is our applications are connecting.

01:06:12.880 --> 01:06:15.560
And this is pretty much a pretty simple web application, right?

01:06:15.560 --> 01:06:19.720
So you have either you can say Spring Boot or a simple JSP

01:06:19.720 --> 01:06:23.960
servlet application, that's the application architecture, right?

01:06:23.960 --> 01:06:24.840
And it's a pure play.

01:06:24.840 --> 01:06:28.080
You will have some UI, some back end services, and database.

01:06:28.080 --> 01:06:28.800
That's it.

01:06:28.800 --> 01:06:31.880
Nothing more complex than that.

01:06:31.880 --> 01:06:34.640
What else is below that, like up to the hardware level?

01:06:34.640 --> 01:06:36.600
Go down.

01:06:36.600 --> 01:06:41.920
So these are basically deployed on on-prem servers, basically.

01:06:41.920 --> 01:06:44.480
So you will have a machine with a Linux machine,

01:06:44.480 --> 01:06:46.680
and WebSphere are installed on that.

01:06:46.680 --> 01:06:49.360
And then you will just go to the WebSphere console

01:06:49.360 --> 01:06:52.920
and deploy those applications in the current environment.

01:06:52.920 --> 01:06:55.880
So this is OS that you have, and then you put WebSphere

01:06:55.880 --> 01:07:00.080
directly on the OS is the current design.

01:07:00.080 --> 01:07:00.760
That's true.

01:07:00.760 --> 01:07:02.840
Yeah, and I may not be 100% sure,

01:07:02.840 --> 01:07:05.280
because WebSphere is managed by an infrastructure team.

01:07:05.280 --> 01:07:07.000
So how they put it on the servers,

01:07:07.000 --> 01:07:09.680
that I may not be aware, but it is deployed on a,

01:07:09.680 --> 01:07:13.160
I will say, Linux server, where we have a console access,

01:07:13.160 --> 01:07:15.440
where we go and deploy our application once we build it.

01:07:15.440 --> 01:07:17.240
It's a manual process today.

01:07:17.240 --> 01:07:17.760
Yes.

01:07:17.760 --> 01:07:20.760
So now, in the other scenario, what do you want?

01:07:20.760 --> 01:07:22.840
Let me understand that piece also.

01:07:22.840 --> 01:07:23.400
Yes.

01:07:23.400 --> 01:07:27.040
So basically, we are reaching to the end of life for WebSphere.

01:07:27.040 --> 01:07:30.880
So that's our aim to remove the WebSphere dependency.

01:07:30.880 --> 01:07:35.080
So what we want to do is, as we have a lot of legacy

01:07:35.080 --> 01:07:38.400
applications, we cannot convert them to Tomcat today,

01:07:38.400 --> 01:07:40.440
because that will take a lot of time.

01:07:40.440 --> 01:07:43.000
With the limited time, we want to containerize

01:07:43.000 --> 01:07:46.000
these applications so that even from on-prem,

01:07:46.000 --> 01:07:49.000
we can run it on an AWS cloud using a Liberty server.

01:07:49.000 --> 01:07:50.880
That's our aim.

01:07:50.880 --> 01:07:53.880
So I'll tell you a trick to experiment with.

01:07:53.880 --> 01:07:55.960
I'll tell you how to experiment.

01:07:55.960 --> 01:07:57.840
What you can consider experimenting,

01:07:57.840 --> 01:08:02.480
begin experimenting, is take your WebSphere, simple thing,

01:08:02.480 --> 01:08:06.880
and run it in a Docker container by writing a Docker file.

01:08:06.880 --> 01:08:08.360
OK.

01:08:08.360 --> 01:08:10.800
And then you add your app on top.

01:08:10.800 --> 01:08:14.760
So write this Docker file containing WebSphere itself.

01:08:14.760 --> 01:08:16.440
I have never done this action this way,

01:08:16.440 --> 01:08:20.320
but this is something I want you to test, is to experiment

01:08:20.320 --> 01:08:23.920
and figure out if you can run WebSphere in a Docker file.

01:08:23.920 --> 01:08:25.320
How do you do that?

01:08:25.320 --> 01:08:27.000
You cheat.

01:08:27.000 --> 01:08:37.400
And you say, run WebSphere in Docker file.

01:08:37.400 --> 01:08:38.840
And there it is.

01:08:38.840 --> 01:08:40.400
IBM says something, something.

01:08:40.400 --> 01:08:42.800
So you read IBM's methods.

01:08:42.800 --> 01:08:45.480
So there is some write-up here, right?

01:08:45.480 --> 01:08:47.560
IBM Cloud, God knows what.

01:08:47.560 --> 01:08:51.160
But this is big company nonsense.

01:08:51.160 --> 01:08:53.680
So I'll go away from that.

01:08:53.680 --> 01:08:54.880
I'll go with Docker Hub.

01:08:54.880 --> 01:08:57.360
It's much cleaner, usually.

01:08:57.360 --> 01:09:00.520
So somebody is running traditional Docker WebSphere,

01:09:00.520 --> 01:09:02.600
and they have a Docker build method.

01:09:02.600 --> 01:09:05.760
And then let's go click the Docker build.

01:09:05.760 --> 01:09:09.200
And so let's select some version number that you like.

01:09:09.200 --> 01:09:11.880
Do you have a version number in mind?

01:09:11.880 --> 01:09:13.520
Yeah, version nine should be fine.

01:09:13.520 --> 01:09:14.480
Yeah, nine.

01:09:14.480 --> 01:09:16.240
So here is your Docker file.

01:09:16.240 --> 01:09:19.720
You copy, paste, and experiment.

01:09:19.720 --> 01:09:22.120
That's how you build it, right?

01:09:22.120 --> 01:09:25.640
So you take this, use this Docker file, experiment.

01:09:25.640 --> 01:09:27.400
Let's see what it does at the end.

01:09:27.400 --> 01:09:32.320
Yeah, it is running your server for you.

01:09:32.320 --> 01:09:34.000
So this is the cheat code.

01:09:34.000 --> 01:09:38.880
You see if this, so by the way, I should clarify this.

01:09:38.880 --> 01:09:39.800
This is legalese.

01:09:39.800 --> 01:09:42.960
So I'm going to say that out.

01:09:42.960 --> 01:09:45.040
If you work for a company, if you're

01:09:45.040 --> 01:09:46.720
a student learning something, you

01:09:46.720 --> 01:09:48.360
don't have to worry about these things.

01:09:48.360 --> 01:09:50.600
But if you're a company, it sounds like you are.

01:09:50.600 --> 01:09:53.480
So you should worry about talking to your attorney.

01:09:53.480 --> 01:09:54.680
Don't listen to what I say.

01:09:54.680 --> 01:09:56.920
Because I speak like whatever I feel like.

01:09:56.920 --> 01:10:00.040
I am not your attorney, and I'm not even your advisor.

01:10:00.040 --> 01:10:03.160
So just stating that very clearly,

01:10:03.160 --> 01:10:06.840
that I am not representing you or your company or your whatever.

01:10:06.840 --> 01:10:08.800
I'm not your attorney.

01:10:08.800 --> 01:10:10.800
And have you understood that?

01:10:10.800 --> 01:10:15.720
Talk to your attorney whether you should copy this file.

01:10:15.720 --> 01:10:19.480
Because what I am telling you is how to potentially experiment.

01:10:19.480 --> 01:10:23.040
So talk to your lawyers and see if you can use this file,

01:10:23.040 --> 01:10:27.400
modify it, test it, run it, and ask me questions.

01:10:27.400 --> 01:10:28.560
I'll answer them.

01:10:28.560 --> 01:10:32.600
But I'll answer only questions as to what can be done,

01:10:32.600 --> 01:10:35.720
how to fix a problem, how to get it to work,

01:10:35.720 --> 01:10:40.040
but whether you should do it or you should not is not my problem.

01:10:40.040 --> 01:10:42.000
Don't come after me.

01:10:42.000 --> 01:10:43.160
I totally understand.

01:10:43.160 --> 01:10:43.920
I totally understand.

01:10:43.920 --> 01:10:45.400
Yeah, definitely.

01:10:45.400 --> 01:10:48.320
So I was looking for if you have done this type of work

01:10:48.320 --> 01:10:50.720
and if you have suggestions.

01:10:50.720 --> 01:10:53.200
So basically, I think it is more of an experiment which

01:10:53.200 --> 01:10:58.400
everybody needs to do as a part of this forum, which I totally

01:10:58.400 --> 01:10:58.920
agree.

01:10:58.920 --> 01:11:01.320
So I got my answer, Nilesh.

01:11:01.320 --> 01:11:03.440
Usually, I don't talk to company people.

01:11:03.440 --> 01:11:05.440
I usually talk to individuals.

01:11:05.440 --> 01:11:08.720
I did not know you were going to ask me a business question.

01:11:08.720 --> 01:11:11.320
It's not a business question, but it's more of a design

01:11:11.320 --> 01:11:11.960
question.

01:11:11.960 --> 01:11:14.480
How do you solve those type of problems?

01:11:14.480 --> 01:11:16.040
It's a thought process I'm trying to.

01:11:16.040 --> 01:11:17.480
It's not that something we are going

01:11:17.480 --> 01:11:18.840
to copy paste from somewhere.

01:11:18.840 --> 01:11:21.200
We have already done this type of project.

01:11:21.200 --> 01:11:22.720
But I wanted to understand if you

01:11:22.720 --> 01:11:27.080
have a better way of approaching this problem.

01:11:27.080 --> 01:11:28.800
The ideal way is to take straight

01:11:28.800 --> 01:11:32.360
to a proper Java solution or whatever languages

01:11:32.360 --> 01:11:36.560
you are using and run it the native way that Oracle

01:11:36.560 --> 01:11:37.360
would recommend.

01:11:37.360 --> 01:11:39.720
That's the right way.

01:11:39.720 --> 01:11:42.160
It's a JSP Java application, right?

01:11:42.160 --> 01:11:43.520
That's correct, yeah.

01:11:43.520 --> 01:11:46.080
So do the right way is what I would recommend.

01:11:46.080 --> 01:11:47.960
But interim hacks and experimentation,

01:11:47.960 --> 01:11:50.640
you can go like copy from this and put something,

01:11:50.640 --> 01:11:53.600
get the Tomcat running, put your application on top,

01:11:53.600 --> 01:11:56.360
connect it to the DB2 database, and get things to work.

01:11:56.360 --> 01:12:00.120
That's the interim step for experimentation in-house.

01:12:00.120 --> 01:12:00.720
Got it.

01:12:00.720 --> 01:12:01.640
It is possible.

01:12:01.640 --> 01:12:03.440
You can experiment totally.

01:12:03.440 --> 01:12:05.680
But check with your company, check with your attorney,

01:12:05.680 --> 01:12:09.560
check with the owners of your company, and figure it out.

01:12:09.560 --> 01:12:12.560
Don't bring my name in the company business.

01:12:12.560 --> 01:12:14.440
That's what I'm really telling you.

01:12:14.440 --> 01:12:15.280
OK?

01:12:15.280 --> 01:12:16.280
I hope you understand.

01:12:16.280 --> 01:12:16.800
Yes.

01:12:16.800 --> 01:12:18.520
Yes, I do.

01:12:18.520 --> 01:12:20.680
Awesome.

01:12:20.680 --> 01:12:24.120
Shailendra Gupta, this name sounds like a GSTI name.

01:12:24.120 --> 01:12:24.720
Is that right?

01:12:28.080 --> 01:12:29.120
Shailendra?

01:12:29.120 --> 01:12:31.880
Nilesh, I'm from Bhopal.

01:12:31.880 --> 01:12:34.560
Yeah.

01:12:34.560 --> 01:12:41.280
So if you go back, I'll say 25, 30 years back,

01:12:41.280 --> 01:12:47.320
I'm from Bhopal and met a couple of times earlier as well.

01:12:47.320 --> 01:12:48.840
OK, OK, OK, OK.

01:12:48.840 --> 01:12:50.120
Good, good.

01:12:50.120 --> 01:12:52.080
Maybe we are recording these things.

01:12:52.080 --> 01:12:56.080
So maybe we'll talk separately after the recordings are over.

01:12:56.080 --> 01:12:59.840
So let me then conclude the session discussion for today

01:12:59.840 --> 01:13:02.640
with a cautionary word again for Sumit,

01:13:02.640 --> 01:13:06.080
is whatever I just told you, it is purely for education

01:13:06.080 --> 01:13:08.560
and understanding and not for actual implementation.

01:13:08.560 --> 01:13:10.680
Don't take my advice as business advice.

01:13:10.680 --> 01:13:11.680
I am not your attorney.

01:13:11.680 --> 01:13:13.680
I am not your consultant.

01:13:13.680 --> 01:13:16.600
It's purely for educational and understanding purposes.

01:13:16.600 --> 01:13:20.040
Having said, I will now summarize and then

01:13:20.040 --> 01:13:21.000
close the recording.

01:13:21.000 --> 01:13:23.080
So summary was we took an image, sorry,

01:13:23.080 --> 01:13:27.560
we created an image from scratch like this, Docker file,

01:13:27.560 --> 01:13:31.200
build something, put an image, put an index file there,

01:13:31.200 --> 01:13:34.360
build our own image, post it to some Docker registry.

01:13:34.360 --> 01:13:37.600
I did not run my own registry right now,

01:13:37.600 --> 01:13:41.360
but I did at least half the way we were using my own registry.

01:13:41.360 --> 01:13:46.280
But then we switched to Docker Hub and the whole thing ran.

01:13:46.280 --> 01:13:52.160
And what you see as the end result is simply this.

01:13:52.160 --> 01:13:53.160
That's what we wanted.

01:13:53.160 --> 01:13:54.280
That's what we got.

01:13:54.280 --> 01:13:56.680
So with that, I will conclude the session for today,

01:13:56.680 --> 01:13:57.920
stop the recording.

01:13:57.920 --> 01:14:02.040
You should suggest to me what should be the session topic

01:14:02.040 --> 01:14:03.840
for the next week meeting.

01:14:03.840 --> 01:14:05.360
We run it every week.

01:14:05.360 --> 01:14:09.800
At the same time, whatever time is in your time zone,

01:14:09.800 --> 01:14:12.240
the same time every week, that's what we do.

01:14:12.240 --> 01:14:16.000
And the recordings show up in a Spotify podcast,

01:14:16.000 --> 01:14:17.120
in a video form.

01:14:17.120 --> 01:14:18.160
So that's what happens.

01:14:18.160 --> 01:14:20.680
With that, I will now stop the recording

01:14:20.680 --> 01:14:22.480
and we'll continue our conversation

01:14:22.480 --> 01:14:24.800
if you have a specific question of some sorts.

01:14:24.800 --> 01:14:26.160
So stopping the recording now.

01:14:26.160 --> 01:14:26.960
Thank you very much.

01:14:26.960 --> 01:14:27.640
Bye bye.

01:14:27.640 --> 01:14:51.080
I mean, don't go away, but bye bye.