1 00:00:00,000 --> 00:00:00,910 SPEAKER 1: Yeah, hi. 2 00:00:00,910 --> 00:00:02,520 So I'm from India. 3 00:00:02,520 --> 00:00:05,340 And the question that I wanted to ask is-- 4 00:00:05,340 --> 00:00:09,470 for example, just yesterday, I was doing Week 3 [INAUDIBLE],, 5 00:00:09,470 --> 00:00:13,860 and it took me three or four hours just to set it up properly. 6 00:00:13,860 --> 00:00:16,920 And when I told the problem to a senior of mine, 7 00:00:16,920 --> 00:00:20,040 what he told me is that you should go for a dockerized environment. 8 00:00:20,040 --> 00:00:22,830 You should containerize your app so that you're 9 00:00:22,830 --> 00:00:27,238 able to eliminate the force that you have to do to set up environment 10 00:00:27,238 --> 00:00:28,530 variables and things like that. 11 00:00:28,530 --> 00:00:30,270 So is Docker the way forward? 12 00:00:30,270 --> 00:00:34,628 And are we going to see it and [INAUDIBLE] course in the future? 13 00:00:34,628 --> 00:00:35,670 SPEAKER 2: Good question. 14 00:00:35,670 --> 00:00:37,786 Kareem, do you want to take the first part? 15 00:00:37,786 --> 00:00:39,360 KAREEM: Yes, sounds great. 16 00:00:39,360 --> 00:00:44,040 So Docker is obviously one of the most popular tools or technologies that have 17 00:00:44,040 --> 00:00:48,130 become very useful in the recent years. 18 00:00:48,130 --> 00:00:51,240 In fact, pretty much all of our CSF feeds, what applications, 19 00:00:51,240 --> 00:00:52,170 are backed by Docker. 20 00:00:52,170 --> 00:00:56,070 And the [INAUDIBLE] idea itself is backed by Docker. 21 00:00:56,070 --> 00:01:02,220 And it definitely makes a lot about the process of developing an application 22 00:01:02,220 --> 00:01:06,210 or distributing an application easier in that it allows you 23 00:01:06,210 --> 00:01:10,182 to what they call containerize their application or sort of package 24 00:01:10,182 --> 00:01:12,640 it with all its dependencies all the version that you need. 25 00:01:12,640 --> 00:01:15,260 So you don't have to worry about, would it 26 00:01:15,260 --> 00:01:18,540 work on this system, would it work on this machine, what's installed here, 27 00:01:18,540 --> 00:01:22,550 are there conflicting versions of packages that are maybe 28 00:01:22,550 --> 00:01:24,240 required by other applications. 29 00:01:24,240 --> 00:01:26,580 All of that stuff goes away. 30 00:01:26,580 --> 00:01:30,390 That, of course, in addition to what your friend alluded to, 31 00:01:30,390 --> 00:01:34,560 the Docker Hub, or the repository registry of Docker images 32 00:01:34,560 --> 00:01:37,350 that exist online, from what you can pull 33 00:01:37,350 --> 00:01:41,580 any number of looks sort of premade Docker images for you. 34 00:01:41,580 --> 00:01:46,200 Among them is obviously Postgres, MySQL, different Python 35 00:01:46,200 --> 00:01:50,340 versions, different versions of other tools and packages. 36 00:01:50,340 --> 00:01:51,670 I personally use that. 37 00:01:51,670 --> 00:01:54,690 I think it's definitely worth it to learn more about Docker 38 00:01:54,690 --> 00:01:55,920 and start using it. 39 00:01:55,920 --> 00:01:59,940 I think Brian, in his web class, if I recall correctly, 40 00:01:59,940 --> 00:02:04,860 had one of the lecturers that introduced maybe Docker and Docker Compose. 41 00:02:04,860 --> 00:02:05,728 Is that true, Brian? 42 00:02:05,728 --> 00:02:06,520 BRIAN: Yeah, we do. 43 00:02:06,520 --> 00:02:09,490 We try Docker. 44 00:02:09,490 --> 00:02:10,240 SPEAKER 2: Sorry. 45 00:02:10,240 --> 00:02:10,740 Brian? 46 00:02:10,740 --> 00:02:11,606 KAREEM: Yeah. 47 00:02:11,606 --> 00:02:14,950 BRIAN: Yes, we do introduce a little bit of Docker and Docker Compose 48 00:02:14,950 --> 00:02:18,200 in the web programming class. 49 00:02:18,200 --> 00:02:23,110 KAREEM: Yeah, so I would definitely take a look at that, for a start. 50 00:02:23,110 --> 00:02:26,500 Docker also-- I think the documentation, the official documentation is great. 51 00:02:26,500 --> 00:02:29,930 And I'm sure there's a numerous number of online tutorials 52 00:02:29,930 --> 00:02:33,770 that you can look at and sort of get a sense of how Docker works 53 00:02:33,770 --> 00:02:36,696 or how to get started using it. 54 00:02:36,696 --> 00:02:40,130 SPEAKER 2: Indeed, and I know if you'd like to make it easier to get started, 55 00:02:40,130 --> 00:02:44,690 I've just pasted into the chat window a tool that we use here in CS50's team 56 00:02:44,690 --> 00:02:47,840 called CLI 50 for command line interface 50. 57 00:02:47,840 --> 00:02:50,540 This essentially gives you what's called a headless environment. 58 00:02:50,540 --> 00:02:51,410 So, no GUI. 59 00:02:51,410 --> 00:02:53,720 It's just the black and white terminal window 60 00:02:53,720 --> 00:02:56,740 that connects to your own macro PC so that you can run tools 61 00:02:56,740 --> 00:02:58,490 like you're trying to on your own macro PC 62 00:02:58,490 --> 00:03:01,940 without setting everything up manually yourself, like SQL light. 63 00:03:01,940 --> 00:03:05,240 And this is actually a subset of what CS50 IDE is. 64 00:03:05,240 --> 00:03:09,140 So Kareem has built a Docker image on top of this command line interface 65 00:03:09,140 --> 00:03:13,470 image that adds more GUI features and other ITE-specific software. 66 00:03:13,470 --> 00:03:16,640 So as Kareen notes, we use Docker for everything. 67 00:03:16,640 --> 00:03:20,510 Whether it makes it into CS50 I think itself will depend on just 68 00:03:20,510 --> 00:03:22,070 how user friendly it gets. 69 00:03:22,070 --> 00:03:25,070 I think the reality is the Docker is pretty easy to get up 70 00:03:25,070 --> 00:03:27,860 and running on Macs, at least newer Macs nowadays. 71 00:03:27,860 --> 00:03:30,860 It's a little more of a headache on certain PCs. 72 00:03:30,860 --> 00:03:33,093 And so that's not ideal, I think, for some students 73 00:03:33,093 --> 00:03:36,260 to set up their own machines if they run into technical support difficulties 74 00:03:36,260 --> 00:03:37,580 at the beginning of the class. 75 00:03:37,580 --> 00:03:38,690 But it's on our radar. 76 00:03:38,690 --> 00:03:41,870 And I would hope to answer one of our earlier questions, 77 00:03:41,870 --> 00:03:43,025 too, at the same time-- 78 00:03:43,025 --> 00:03:44,900 that this is one of the kinds of technologies 79 00:03:44,900 --> 00:03:46,820 that will get better and better over time 80 00:03:46,820 --> 00:03:52,500 and make it even easier for students to use on their own machine. 81 00:03:52,500 --> 00:03:53,000