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.