You can listen to the podcast and read the show notes here.
Welcome back to the show. I'm here with Mark Drew, otherwise known as the amazing CFO from London.
Mark Drew 0:09
There's only one of us in London.
Anyone know there's hundreds and hundreds of London? Yes. And he's the director of web development at CMT, which is a web development shop, I believe in the UK
in Greenwich. Yes, he got Greenwich Mean Time, exactly down and he's also the co host of a new podcast called local host. So check that out. So I'll put the link in the show notes to that.
So today we're looking at how CFS can get started fast with Docker and we're going to look at what a Docker container is and why everyone listening should care about that the challenges they overcome Docker versus vagrant, even controversially, our traditional I ISP, he's going to go away if Docker gets its way and how they compare the virtual machines. How you can get started with the Docker engine. What the heck is Docker compose and using Docker swarm to make your sites even more reliable Docker cloud and how you can get started with Docker. So welcome, Mark. Well, thank you Michael for having me on board. This is very exciting all across the internet's Yes, I am extremely excited. And in particular, because you're going to be speaking on this very topic at CF objective in just a few days time.
Today's time from from today. So if you have you, yeah,
yeah. If you haven't bought your ticket to it yet, you probably better get your shoes on and get out there and buy it in.
Mark Drew 1:51
They'll be selling them at the door. I'm pretty sure like, if honestly, you have to come and say great conference. It's used to run some little events down in DC as well. Do me a few years back here. Yeah, just
a small thing. cf united. Yeah.
That was like hundreds of people it was a small event is really an understatement. It was a massive event. I'm kind of really looking forward to going back to DC. So awesome. I wonder was was for your event? Oh, well, yes,
I am sure has changed slightly. I understand. There's been a few people moving in and out of the city. Right, right. I don't think I even went there when Obama was in there. I don't know. Oh, you missed Obama, right? Because I'm sure he was at the CF united show.
I missed and you're running around. We're busy. You know, you know, things happen. Yes.
There you go. Yeah, these conferences can get very busy between all the talks and the hallway track and the bars, right? Yes,
Mark Drew 2:57
it's gonna be very exciting. So I guess we should dive right in. So yeah, right.
And I've been so you know, some people listening may not know what a Docker container is, and why all cold fusion developers should care what it is, right? When, what the heck is one?
Mark Drew 3:12
Well, before I say what is one I wanna, I want to talk about life before the 1960s. I know, that's a bit of a deviation. but bear with me for a second, because it's a good analogy. And he's going to get us in place of what we're talking about, right.
So before the 1960s, if you wanted to get some coffee beans from Peru, all the way to DC, what do you do, you went and got the sacks of coffee beans, and you got some strong guys, and you drag them onto a ship, and you put them in the corner of the hold. Then someone said, Hey, I want to actually have this crate, and they move the crate, they try to wedge it in. And then someone said, I have this grand piano I am sending to Washington, DC. And they kind of like manhandled that onto the ship that swings about has a few dense on the side. But you know,
Polish that up later. And that's how stuff was moved around the world. So you had like bananas. Next coffee. Next, two grand pianos, all in, in a cargo ship will go wrong, what could possibly go wrong. And this has been happening for four years. And of course, this is no way to be doing international trade and cargo, right. And, of course, the bananas would have to go there, like, kind of slightly green, and then there'll be right next to the coffee. And of course, they'll smell a little bit coffee, banana, so it's tasty. But if you had two things that didn't actually go well, with each other,
it doesn't taste nice. Now, of course, when it got to the sea, you know, you had to very gently move this stuff out, and then balance it on a, on a truck, or, or train or whatever, and move it across country, right. So, and it was all individual different types of goods using different types of transport. So you, I mean, we still do this, okay. And then some bright spark came up with this idea of a standard size container, right. So you could fill in all your coffee, you could fill in all your, you know, bananas, or whatever, a certain temperature. And a little bit later, they also invented these things called reefers, which were containers she
firmly controlled. So
you could go with something else.
Mark Drew 5:18
Yeah, well, no, it's actually a container that is a thermal, uncontrolled refrigerated containing. In fact,
if someone's talking something different, they're wrong.
Mark Drew 5:29
So the mentor these things that you could have, like, cool, you know, core temperature. So you can put your mangoes in there, you're more delicate things, we could put them in exact temperature. So if you wanted to have the avocados arrive in DC, just ripe, you know, you could actually put them there, set another temperature, but also carry it in the same format. So this was the idea you could put coffee. Next two bananas. Thanks for everything else in the same size containers. And just, you know, just chuck them onto a ship, right? Yep. What am I talking about this nonsense? Well, because this is exactly how we've been doing web development and deployment, right? So we have this we install CF with soul is we install this and there's all this delicate balance of the these fragile machines and you go on to another machine, and you don't have no idea what's on it. Because you have my my have my sequel on it in might have PHP as well as ASP. And you mix all these different layers. And I mean, recently I've been encountering this, you going to machine you have no idea what's on it. And if I want to build a new one, that's an issue, right? It's, it's a non trivial issue that you have to build a new machine. So you have different technologies, different hardware is different to apologies. So you have like your servers and stuff like that. So changing all these variables becomes a non trivial issue.
So Docker is what you know, coming in from from that side is this idea of containers that have yourself stuff inside it. In other words, you know how to configure your bits inside that, but an admin has to just treat it like any other box doesn't really have to care much about how it restarts how it deploys. If I needed to put hundred instances of of Lucy, for example, running at the same time
as a developer, I can do it on my local machine. Or as an I was a DevOps guy, I can just go and do it. And, well, you know, I have hundreds of machines I know just sorts itself out now, I can now have 100 and you know, instances of Lucy running my web application, the way I've configured it in the same way. And that's the analogy of containers, right. So what's inside the box is my problem as a developer, what's outside the box is or how the boxes or get delivered or run and instantiated. That's a standard way that he doesn't care if it's got Ruby or PHP in it, you tell him, I need 20 of them, right. And he knows how to load balancer because it's the load balancing is the same thing across all these machines. So whether
you have bananas or coffee or grand pianos that your DevOps died doesn't care and they can't contaminate each other, right? Just suppose the the bananas went off and containers dead in the water, you know, you re instantiate another copy of that Corporation instance
Mark Drew 8:26
right and it's because you inherently user kind of version control system behind them you have repositories of these containers you can go right replace a late the last week's bananas with these weeks bananas bad analogy but you get because this week's bananas have bugs in them. You know, right exact go back to last week's that were bug free. Exactly. If only you could do that you don't so much money. But exactly that you go like this week's bananas, that this latest release of your code that's a whole machine is now actually wrong. There's some problem with it. Let's roll back and you can just do that. And that's not my coder, my job as a coder, right? Right. That will be a DevOps guy. But of course, if we were going back, it would have been my job because it will be Mark How do you deploy this thing can we do to a redeployment and we've had a lot of tools for deployment, right, we've had Jenkins and ci bots and various other than we always tell you have to be continuously integrating, right? But how do you do this all the time, if you having literally moving bits and bytes, I'm sure you've encountered this problem of the FT peeing of the code to a server. Now, I know we shouldn't have to codes to servers. But that momentary lapse of reason where files are changing on the server, because you are sinking them or doing anything else, like a new version of your app has been deployed, and you have madness falling down, right? Because you don't have it pre warm Do you have to validate caches, and all these things, all of that goes out the window, when you said, This is my app, this is literally my app pre warmed and ready to go. Or you can start up a Docker container, warm it up, and then add it to the cluster. And that's an automated script, right? You can know there's kind of magical
things with these containers. So but if you then go back Look, what how I did this before became an actual,
you know, and another job that you have to do, which is not part of the job that you should be doing. So you can all that container setup, you can put in a script, so it's reliably going to happen the same time every time, right. And you can also script the building of the containers. So you say, like, generally, that would be my job to say, Okay, so this is what goes into the container, and I'll build you the container, I'll put the contents in, and I'll set them up, I set up my data sources, because as part of my application, I'll set up, you know, whatever.
And you can do that. And that's kind of like building, you know, just your application. This is other than benefits, though, this has the benefit that the application that I can run on live is exactly the application from run on development, right?
So you don't, you couldn't tweak with the script between the two versions, right. I mean, so generally, the differences between a live item or alive application development application tends to be a couple of things, it tends to be like environment variables that saying where your databases are. So, you know, you connect to this database versus you connect to this database, but it means that I can also test which is really difficult, what does my application look like when I'm doing load balancing on it, because you'll be doing this in live, right? But it becomes prohibitive doing it as, as, as a developer in a development settled mindset, like, how does my How do my sessions behave? When lots of traffic goes to them, and its load balanced, I feel like as developers, we develop a kind of like his I machine, this all works, okay, now, we put it inside this, this big network, you know, this big, complicated architecture, and then we test it, and then what happens, it fails and 1000 weird ways that we can't replicate, right? You know, the sessions are going, the sessions are disappearing, it's using one is not using one of the items is not using sticky sessions. So each time something goes wrong. All right,
you could actually have a little cluster of Docker containers on your development machine or testing machine, right? The idea Yeah, exactly. And that really expensive to have or as they basically free to have on your development server, the basic free to have on your, I mean, free as if you can, actually if your machine can handle it.
Mark Drew 12:43
And this is what we come back to two bit of like, you might be thinking that each Docker container, it's like a VM, you might say, Hey, Mark, I've done this before I have my one VM. And I start up another VM and set up another VM, but and I load balance and all of them, right. But the problem here is is that each one of those VM
is instantiated everything right? This is heavy, the heavy you using the colonel, you're using it like X amount of gigs of RAM. And so therefore, you have to have a 32 gig ram machine that you're that you're running, right. But Docker containers, a lightweight and they reuse the kernel and various other parts. But so they basically do a vertical layer of these are the only things that I'm gonna need, this is my difference to each one of them. So the startup as well as the nearly instantaneous, so you can buy them being instantaneous as long as the host OS is already started up means that you can do other types of tasks with these things. So they're not just there as heavyweight machines, that you could actually have a whole container that does, I'm trying to think of
an example at EDS, conversion or files, right, or PDF generated. But we do this all in request in in the cold fusion wall. We seem to do this a lot of the time, so of generating yet, but if you had a container that all it did was generate PDFs and like, generating reports would be generated, right. So good luck. Because,
I mean, isn't this the whole micro service thing? The idea, I
Mark Drew 14:19
mean, there's other servers Mike, Microsoft was kind of stuff, right? And,
and in that, you might ask, well, what's the point of doing that, but I'm assuming you could have a if you're, I know, often reporting is very CPU intensive, and right, if you had some part of your app like that separated out into a separate container, you could out like a 20 containers to doing that, instead of like, our own. Yeah, I'm parallel.
Mark Drew 14:45
But, but also, more importantly, like, once they're done, they can go away, they can literally go away, they're done. That's it by they don't exist anymore. So they're not taking any any resources, right? So you can do like, micro transactions. I mean, especially now this year from a world don't we have box, you can set up a command box instance, run a script on it, and then it dies, it goes off, you don't have to worry about the life cycle of the machine is literally that's all it's done. And is doing it on request because it takes zero time for it to to start up.
So it's a very handy when using application. Another thing is that so yeah,
that I I mean, often have wondered, and I know some fun. I know, Brad would has been asking Adobe, what, how the heck is their licensing work on on Docker containers, you have suddenly have 20 instances of cold fusion running a container, you know, is that 20 licenses? Or is it covered on your one license, because it's all on one set of CPUs. I am not a lawyer. And I don't have
Mark Drew 15:46
a lot of Adobe's cold fusion instances. So I don't know that the licensing, but as far as I understand, it's going to be CPU bound. So you're on that server. Now, if you start getting many more servers, you can license it across to so services, but there's not per instance is PR is per CPU if I recall, right? So yeah, so that's
the advantage of using Lucy CFL open source, because then there's no licensing concern, no matter you could have hundreds of containers, right.
Mark Drew 16:13
I mean, that's, that's what with nearly every other kind of open source or or free stuff. But But this also brings it is not just an Adobe CF and Lucy thing is that environments are usually much more complex. I mean, I've worked on ones that might have a database might have Mongo DB there as well, a Mongo DB, as I'm just picking an example at random, yeah, you need three instances of Mongo DB, to make a real certain, right, because they need to delegate, you have to have a configuration that the delegate amongst each other, so you can't ever started up just like one instance. That's not the proper way of doing it. So as a developer, now, you get into this complicated thing of like, well, I'm entertaining three servers as my machine run it, when what you, you don't try and have the same performance characteristics as a whole bunch of hardware, but you start trying to have the same characteristics as your environment is right. And environments can get complex very quickly. Over time, there's some environments that we're working with that have like 20, or 30 boxes that do different things, right. And they're all tied up, and they'll they'll talk to each other doing various different things. So it gets quite complex don't Docker solves a lot of that, because you can Well, for one define each machine is specifically. So each machine can have its own life cycle as overtraining. And you can tag them at certain point saying, This is this this point, but also using Docker compose, you can compose skews upon a whole environment, you can actually write it out saying, this machine that my environment has got a web front end, and it's got an app, it's got a database, the web depends on the database, the front end depends on what on the app, because otherwise, the front end is not doing anything, you know, my web app, my actual application depends on the database, because it needs to set up the database before it starts up, you might have like a sidecar container. That means that when it starts up, it goes and populate your database with with demo data and then disappears, right? But you know, your application depends on that having been loaded. And then you might even create virtual networks within that saying, you know, I've got one network, which is between the web and and the application that's meant to have SSL behind it. But between the app and the database, it doesn't need SSL because it slows it down. And it's meant to be one network now, all those things, usually with a problem somebody else? Well, I say that, but they usually end up being our problem, right? Yeah, or especially when it goes wrong. But if you're able to, like, define this whole environment, say, this is a whole environment,
I can run it on my machine with one web app.
But online, we have 40 web apps, the only difference is a configuration that that the, the, the network administrator, or your deployment administrator, or even at the end of the day, yourself, have done to say, okay, on live, this is the environment, deploy it
as much as that's
where you'd say, how many containers you want for each microservice you have in your application, right? So
Mark Drew 19:30
for example, I mean, I think everyone's had to do something like this, which is to either your app this, like, let's say, four instances of your app, right?
And then on the back end, you've got like, let's say, two databases, maybe one that you're using just as a as a slave, for example, right now, setting all that up in real time. Sounds to be like, a couple of days, right? And one thing that, you know, I'm sure there's someone shouting me, guy takes me half an hour night, you know, but, but that's if you know, the environment. But if you're going to new environment, and you tried to set it up, and then the amount of time that it takes up to set up each developer to be used to that to the environment, right? And then I come to you and say, like, Michael, can you come and help work with me on this thing, then it's a whole week of us going, right, so here's my diagram at the top, we've got a load balancers, then we've got our web, then we've got our firewalls, then we have this and after that week, that you've now know the environment, you can actually possibly maybe start working or because they're here you go, Michael, here's the Docker compose file, have a read, it's not particularly difficult. It's a, it's a Yammer format that says like, here's the web, here's the thing, here's the thing, here's the thing, and you're all right, this is the environment I'll get coding now Surely, and you can run it and see if there's any differences which at the moment we have something like that, I guess with vagrant, right with vagrant starts up a machine, and then it starts orchestrating the installation of everything you puppet or using chef and then it actually starts you might be able to put your stuff and then it shares a folder for development. But then once you've got that stuff working really sweet, but that's just a development environment does not something for live. So now you have a difference between five and your development environment, which is which, as far as I'm told, and people beating around the head is like, not a good thing. brackets tm right? Yeah, you're going to have similar environments. And if your only difference is literally the hardware that it's running on, you can narrow down issues, right, right. You don't get weird issues in life, you just can't reproduce in development. I mean, you always will, because that's, that's, that's the truth of the internet,
you get less well, you get less issues, your fault.
And and also you can put that whole compose scripts into get. So you know, yeah, of course, things start going south off at some point, you have some idea what happened, right. So both the machines go into a repository like it's like get, but it's a repository for me for the actual machines,
Mark Drew 22:12
which has, like all the differences between your machine and then based machine, and this is a nice, same because then you have like these layers of stuff. So when you're building a machine, it goes and downloads, let's say, an Ubuntu machine or whatever, again, people in the background of screaming at me because it does not their favorite version of Linux, but and the smaller ones, this Alpine, which is like five Meg, or something that you could actually be running. And then on top of that, you have that say Tomcat, right? And what you're saying is only the different. So if you install Tomcat, you might install
our pine and Tomcat. And then if you then install
another application that happens to be Lucy, for example, or Adobe cold fusion that both run like on the same base to have the dependencies you don't read, download them again. So you can on your machine reuse of of different layers, right? That are defined in the Docker file, Docker file. So definition of like us, Lucy, and then copy the files from here to here, and then copy the files from here to here. And once you've covered all these files, restart Lucy and and i don't run the application, whatever you need it to set up to set up your application, right. And the great thing is that you can see what it takes to run your application.
Hmm. Which is usually lost in the midst of the notepad that the admin had once Right, right,
yeah, who knows how the service really set up, you know, right, additionally, but this way, it's all documented which planning is another side advantage of this. So
Mark Drew 23:50
So you mentioned vagrant a little earlier what what exactly people haven't come across that is that a competitor to Docker or vevo was was a way for everyone to the problem that vagrant was solving was actually having developers having a way to have a development environment up very quickly without knowing how to install that development environment in my experience has been the opposite but
because it can get quite quite complex but the whole idea was you just installed vagrant and then at the base of the root of your project, you have a vagrant file and you just did vagrant up. And what it will do? is it doing the installation do anything, you need to set up the environment. And you had a development environment, not an editor, but basically the web server running a database running or whatever, we use that still for quite a few things. But when I'm moving to do these Docker compose is because they're like, this is our environment. Mm hmm. Even if it's just a mock up development environment. But this is an environment that has the mock data has got the databases running. And you know, even Microsoft is like really taking on board Docker, so much so that they like doing MS SQL Linux machines on Docker and various other things. And the whole Docker environment like this headless windows that they're now doing. I'm not a Windows guy. So I can't tell you all the details. And again, I can hear people in the background shouting me going, you're wrong. You're getting all the names wrong?
Well, no worries, you know, you're the one on camera. So you can say whatever you want.
Yeah, that's right. I win. So,
you know, with all the conveniences of Docker and only advantages, is there any point in using or traditional ISP anymore?
Mark Drew 25:37
I think so. But I think they really need to change
because I always say this whole thing about like, cloud and they are changing. I mean, it's, it's actually even better for them. Because as traditional I excuse you have, like, this whole VM was like, Here you go, here's your Windows VM can do whatever you want from it. And I bet you they get I mean, I get enough phone calls. I wonder how many phone calls they're getting with people going, oh, we're done some work on Wednesdays, you know, or whatever. The reason, you know, there's no round, there's no this, there's no that right. And they can go in and, and they log into the machine. And that's a slow thing. That's like, if I was running a business, I don't want people logging into other people's machines. There's privacy concerns. I mean, I know all the people that work with me in trouble. But But you see what I mean, if you didn't like HIPAA requirements, you can't have just random people logging into into the machine. So they have to change a little bit in the sense of being able to
let me run it's better for them to change because now that will they're going to do is get the script saying, This is the machine that I need to run. Oh, yeah, whatever, we know how to run it. If we go back to the beginning of saying like, we know how to start it restarted. Hey, is there probably machine There you go, restart, Is it gone? Yeah, probably you can probably do from from mono network. So now they handle the gear and the networking and, and that side of thing, which is I'm pretty sure that's why a lot of them got into it. But I'm not gonna speak for all is fees. But there is a big space for us because they're the hardware of internet and you know, I know we have this whole idea that Amazon and Google are the ones are going to completely take over that just doing it by scale and economy that they can you know can lose a several million on on data centers, because it just they take over the world but i think is peace if they just move this way, be very friendly about that kind of thing. And just say, instead of just saying like, Oh, we give you a Lucy box or will give you a cold fusion box is being able to say like, Hey, you just deploy your your thing and the interface that we give you that there's some great software that maybe we'll we'll talk about that later. Like, for example, rancher, which you can define your services and say, to deploy them, and they'll scale and they'll become as big as you like, and and go across environments and owners across servers. So you're going to have a whole number of physical servers or virtual servers, I think upon you know, just a mission
running these rancher agent. So you just managed from one place. So you just squirt in your your environment, and you define where stuff gets loaded and instantiated. And how many of them usual kind of stuff, I think there's other ones now, would you not Docker specific, like Cuban 80s, which is, I think it's Google. They're saying it's an open source project, which is to do that, but it's running containers, and they call them something else, because everyone's coming up with their own little way of defining this idea, which allows you to run and scale and, you know, the, the, the green blue deployment idea of being able to have like, Okay, so I've got a new version of my software, and I'm going to start rolling out a few servers. So like, say, 10% of all my requests, now go to these to this new version of my software. And if it's if we're not getting any errors, because we obviously logging errors, right? If we're not getting any errors, we now can, like, deploy those out, right, in these kind of waves of deployment of as your source code goes out, and it gets checked, right? And you can do the way the other way if anything happens, but instead of the wave going the other way of like, everyone gets removed, you can just go right, well, let's get rid of those that new deployment and beat up the developer for whatever he did. And then after as well beaten, we can redeploy it right?
How can you tell if a developer has been well beaten
Mark Drew 29:33
you they'll tell you don't worry. They tell you
telling you Okay,
they'll let you know.
Well, we'll put always into the show notes. At least thing Yeah, I mentioned.
So if someone listening to this is like, Hey, this is really cool. But like, How the heck can I get started with this?
Mark Drew 29:54
Well, the first start is just that installing Docker right now, this is where the magic happens. And this was quite complicated, but it's now they've simplified it a lot before what Docker was was a way to, you needed to have a VM in the background. Like it's not VMware, it's like virtual box or something like that. That could run a VM, because Docker wasn't really native to let's say oversexed so windows so it needed to install something and it run like on your machine but is actually running in a VM now they've made native version so actually runs on on the machine directly in is fine and the same thing for windows so that that problem is going to open a window but basically you just install Docker and it handled muscle that for you anyway um,
the next part is if you wanted to like get started go to Lucy's, I don't know I don't know if cough I'd always confusing have got Docker files but if you wanted to get started as to where they they exist if you go through welcome on box but I don't break Adobe has them so it hasn't been going like to the basic thing because C'mon boxes again, another little layer on top of that, it's actually they run Docker to start stuff in the background. But like if you're just going for it is you can go to GitHub slash Lucy and look for the Docker boxes and then choose which one you want to to run. Now you can there's also another article Docker hub or hub Docker dot com that nearly all the software is is there
and even easier, right and I'm busy, I'm talking about what's underlying it. But even easier when you store Docker on your machine, it usually comes with a software called pipe Matic now Matic has got a whole bunch of boxes is basically search into Docker Hub. So you can just put in a punch in whatever you want to look for. Let's say Lucy, right. And you go here's Lucy, I want version five press star and it just started. Alright so now what will I say just started in the background around download all the requirements will download all all the boxes of needs. And then you have a version for it. Now of course, starting it up by itself all happens and it says have Lucy started up and you go great. I've got Lucy running on port 8080 or whatever. Now what I can't have access to the physical machine that this has the files and so I can't run any of my stuff. This is when you can go to the command line or educate Matic does it. But it's just easier to do than the command line there. You're attaching volume to it. And by attaching volume I'm saying like you say this folder like this, my local folder is mapped to that folder on on the on the container. So when I started this containers, just going to be looking at that folder. So there you go. your development environment is up and running. You can do the same thing for ports, for example. So let's say Lucy in the container actually runs on port 8080. But you don't want it you don't even need a web server to run Lucy. Right. So you can just say, actually, Lucy, you you run on port 80 on my local machine and port and point Port 80 on my local machine to Port 8088 on the on the machine. And there you go. You got a server running and I'm saying this on your local machine. But this could be on a server that's just running Docker, right, that's all that's running. So you know running it's got Docker installed. So you can actually say install Lucy or Docker run Lucy on point Port 80 to Port 8088 point to this folder. But I've been there you go you've got an instance actually running live on the internet.
That is amazing. So that's it and you can just put your copy your code to that folder and way it's going running. Right. That's but what you'd want to be to be doing is creating and image of your application
and that's what a Docker file comes in. So the top of the Docker file you say, and Docker files, literally a file called Docker file,
and you have that in your, in your,
Mark Drew 34:15
in the root of your of your application, for example, and you actually have a whole bunch of commands and they're very very simple commands one it's like from isn't that usually the first one and you can then say Lucy, Lucy five, I don't know what the the proper name for the machine is. But that's the machine name in Docker Hub. So you say start from here, then you probably want to copy or your source code into the machine, right? So you do copying from my local folders to the internal folder of the Vega machine.
And whatever else you need to do, right. That's generally it and then you do Docker build, and what we'll do is it will create an image of you're layer that's specific to you,
then, like version control, you can actually commit that and then you can push it to a repository like Docker Hub, for example. But that's, that's an open repository. But once you connect a Docker Hub and I think pay them some some shekels, you can now have an account, which means that you can have private repositories, right. So once you have a private repository, it means that you can have your, your machines there, or you can run your own repository, there's the software to do that. Or AWS, for example, Amazon's cloud hosting, they have repositories for for Docker containers so you can push it whichever way you want to do it. Right.
So part of the CI circle of life that you have is that you have now pushed your code out you've got your your instance of your machine and then some other machine somewhere else is going to go hey, this a new machine let me go and deploy this to the cluster. That's where the magic happens, right? You could have Jenkins someone going let me just check this repository of this Anything else? Anything new happening at the moment there is you just blown out but yeah, the Docker file is where you define your application and you just do a Docker belt and there you go that's that's you that's your application you can just run it and if there's been no changes it will just run it from your from your local cache of containers or images I should say
now if you want to have a bunch of containers is that where Docker swarm comes in for controlling that or right Docker swarm is what Docker swarm essentially allows you to do is run containers across machines so this is similar to
I mentioned early enough we're gonna have a look at the notes
Mark Drew 36:55
vagrant I've mentioned so many things but you have I did the show notes the quite extensive
but what it allows you to do essentially is being able to say right so I'm running all these containers I want 15 to go here and 15 together right Oh okay. Oh I have a Docker compose file this will go on to the server on this I'm going to that server is the ability to run them I think they're changing the name of it I need I need to catch up a little bit on what Docker swarm has been doing recently but there's also this idea of Docker cloud which allows you to just run the actual machine somewhere else and this is what what the real net benefit of Docker is not just because of Docker cloud is that we now can have applications that you know run anyone
the true run anywhere thing because we take care of the internals so you don't need to have eyes peas that say yes we we accept Lucy app so we're willing to do confusion nine out so we're going to do confusion 11 apps or whatever the the the massive license for they go like we don't care use the light you know the licensing issue aside wickerman, whatever software you're running, because it isn't a Docker container and we can run them, right. So
who takes care of the patching of all the stuff in these containers? Then it's up to you, right? Because you tells application, right,
Mark Drew 38:27
so instead of the ISP doing lap patching of cold fusion and the Java Virtual Machine and what have you now because I'll be one machine, right? So if you look at the little slice of your application, you'd have Java Virtual Machine now of course you could you could say it What if theory in theory, let's say let's talk about Lucy because it's much easier because there's no no
licensing issues behind here in theory, Lucy, whom entertain the Docker image for Lucy is up to them to maintain
make sure that is using the right patched version of move, Tomcat. Right and it's Tom cats job to say that then these are white patch version of
JDK. Okay. Make sense? Yeah. Now you can. What's nice about it, even though we have these these dependencies is that if you wanted to, you can say I have my own machine, my gold standard more of a patch version of and I'm saying Ubuntu again. But let's say a boon to with JDK and and x Tomcat. Right and it's all patched that's my gold standard. And on top of that, I run whatever, right? Mm hmm. So you could build that machine by yourself using another Docker file, it's just easy to say like I'm going to use from Tomcat or I'm going to use from So usually
when you're putting together your container, you can either say get me the latest version of Lucy or Adobe CF or alright. We are not careful, the Apache or anything else
Mark Drew 40:04
right care about Tomcat and Gail JVM or anything like that. Yeah.
Or you could if you wanted to, if you like you need to test against specific versions, you could tell it I want to test against this specific release version, right?
Mark Drew 40:19
Because the other other thing I've seen people use Docker for is that they've got some code and people are running it against CF nine and 10 and 2016. And you know, Lucy four and five goodness knows what else. But instead of you having to have half a dozen different server setup for this, you just spin up a new container, right? Exactly. And, and it can be pointing at the same code, right. So they can all be running at the same time, just on different ports, pointing out the same code. And more importantly, what I mean more amazingly, is that before you would have had to do a whole different part of Port mapping, and yeah, which you kind of still have to do, but they'll contained within themselves, hey, the containers, right. But also like you could have, hey, so this is cold fusion on Red Hat. Mm hmm. Right. And then you saying I'm, but I'm also running. I'm just, I'm using sporadic examples, right. But I'm on I'm using Lucien Alpine. And I guess at some point, we're going to say, and this is this is called fusion 2016 on headless. I know, what's the server version of, of the headless server of windows on Windows 2016, right?
Mm hmm. So
Mark Drew 41:32
if there's Docker versions of Windows with with that you could test them on different operating systems as you go along.
That sounds really good, particularly if you're testing is automated. So you've got scripts, running the testing. So every time you make a change, it gets put into get comes back out in these containers, get roots spun up temporarily to test in all the different versions, any problems come back to you. And then they go away. I mean, that's the important part. I mean, about part of the CI cycle with Jenkins, for example, Jenkins is fairly lightweight in itself is just as little war. But
Mark Drew 42:10
now Now let's step back and say Alright, so now building my my test machine. Okay, what's my test machine? All right, this is beefy machine. Why's that sits in the corner over there. I'm wanting so Docker on it. Okay, nice. little darker. Now through Docker. I'm gonna have like one process that starts up Jenkins right Michael container in a container within that machine. Okay, now now now Jenkins is running there. Now you go and create your tasks there. So you haven't installed anything. You've literature's go run Jenkins and it goes and downloads all the requirements and starts Jenkins now you login to the whole configuration of that. Save that right? save it as my little chicken. That's that's the machine of Jenkins. So if you restart it just got state and then you go, right. Okay, here's my stuff. Now I'm going to download the software code of our application. And I'm going to run a Docker container, run the tests on it.
And within that whole same gene, right. So the only thing I actually installed was Docker and the rest was just telling commands of what what is you do? Hmm.
And for those who don't know, Jenkins is a continuous integration piece of open source software that you can script out what's going to happen whenever a new piece of code gets updated. It goes off and runs automated tests, or copies it to your servers, or
what is it a little slack messages because that's how you like to roll.
Mark Drew 43:37
Yeah, I get slack messages from Jenkins all day. My favorite chat bot
keeps me updated on what everyone's doing. Um, especially when you get the double one where you get the commit slack notification, and you get the Jenkins like test passed notification when Yes, yes.
Gonna, uh, but I was waiting for a little AI layers. Dad would filter that out. So you'd only see when there was a problem. And if it was quiet, you knew everything was okay.
Mark Drew 44:06
Yeah, I think I think most fairly quiet because it's, I tell it only tell me when things go go broken. Yeah, but so yeah, so you can do all that kind of orchestration. And it's kind of fairly simple. And you only have one software to install because other people have taken care of how this other stuff should get installed. Right?
you want to tell us about Docker before we wrap this episode up. Um,
Mark Drew 44:38
I think that's about it. I mean, go out use it. The nice thing about it is that if you're interested, I mean, will will super interesting FL. But, um, we've been using as an example, but if you wanted to try out some Ruby, if you wanted to try out like some, some node and just run little node programs without installing note on your machine. Because you don't want to sell your machine with with such kind of software. You can run a Docker container, test your little script and get rid of it. I mean, I don't know about you, but I've tried loads of different technologies. And then, like, months later, go, what's this folder full of in it? And it's and it's like, the installation of I don't know, whatever it got installed there. Right. Yeah. Um,
and whatever I do, do it left in your registry as well. Exactly
Mark Drew 45:24
what you happen to be running. Exactly. And you've now got this great dude who left on your machine for for time immemorial. You can think of Docker as a way to contain rise, you'll do do exactly containers you do and also Well, one of the nice things about it is that you can actually see we images you've you've downloaded, you just do like Docker, like, list images. And it'll give you like, versus all the all your due to that you've had from before, so you can like, wipe the dude, I'm glad we've done a very mature Yes. Ocean on this
from bananas to do do. Yeah,
Mark Drew 45:59
in one podcast. You can't get that. Yes.
And can you? Can you run other software and Docker containers. I mean, you basically run everything you you have on your machine. I don't think that the things that were backs really
Mark Drew 46:14
was headless apps, I would say more right? accelerating as a UI layer. Again, people in the other side screaming at me going bad. You can but
but we everything is web now. Man. It's like this. Nothing I can't do without without web technologies.
Hmm. Well, that's an interesting thought. Because, like, you know, you think of the problems you have on a traditional operating system where you install programs, and they leave do do behind and
get on with each other and have you wouldn't it be great if you just stick everything in a container, and whether it ran on your local piece of hardware off running in the cloud? You didn't care, right? I think there's an iPad isn't like
how we doing? Yeah, iPad and whatever the Google version of iPad is, what did he call out
anyway? Some Pixel phone, right? Yeah, yeah,
Mark Drew 47:06
pretty much, much easier, especially if you can list them and you know, that that instead of using all of that, I mean, one of the downsides of Docker is that that after using it for a while, you start getting Why's my machine like filled with stuff and you look up because all the dependencies and come down right so if I said we needed Red Hat, and we needed Alpine and we needed this sometimes it doesn't wipe everything that it needs All right, so like because you'll have like I don't know if I don't come on now to to look at all the stuff that I have I probably have gigabytes of images that have built a half built because they don't get deleted because it shouldn't get deleted right because for example you're
Mark Drew 47:45
so we can run them faster than the second time you run it but also because you have sometimes been tamed state inside of them
yeah I'm not all the time is it this is the image you can save it back as as an actual image but
they don't always save state each time you started it will have something new but you can actually say okay I've saved it This is my image This is my new image of replaced the one I downloaded with the one that I modified a perfect example being downloaded Lucy started something else now I can say okay like I've not changed on my data sources have changed on my settings save this out as a new machine saying this is my this client machine no I don't think this is for my actual clients machine now and then use that for other stuff and then after years I don't have that client I can delete that hmm but that does not
give you a choice as to whether you want to save the whole image where you can just save the scripts that created the image well you just have the script when he does that that's a cached images it just means the next time you run that script he doesn't have to go and download all the different layers again right so i i would have hoped they had some way so you can see how always blows images are Yeah, yeah, you can clean them up
think talk her I just trying to see what what
what what information, it gives you a current member of the top of my head?
Well, we'll add that into the show notes will ever change. Let's change gears now to a slightly different subject, which is why are you proud to use CFL
Mark Drew 49:26
one? Well, I've been not because I'm not using all the time. I'm proud. Because as you get stuff done, and I know people are going to be throwing things I'm doing. But no, but PHP is just an easy way to get things done. And there's such a model language that people don't give it credit for us is both like a dynamic and you can use type stuff in there. So you can be as strict as strict as you want. It's a fun language. And now with with command box has been a real change of forge box and command box are a massive change that you can run stuff straight from the command line stuff, I was doing a note, I'm not doing it back in CFL again,
which is fantastic. Because I was having to go to node to do like something that was just going to run on the command line. I don't want to start up a whole server instance or anything like that. But now command box allows you to do all of that. So it's become a completely model language. Um, you know, I'm proud to see if I'm all because it is a great language
has its quirks. But hey, show me a language that doesn't
pretty hard to find a language doesn't have clocks, there's gonna be some
Mark Drew 50:31
guy out there shouting guy, but my languages makes complete sense
work free quote, free.
Mark Drew 50:40
I mean, and you can scale it from small to large, right, you can get people like really up on it, which sure has given it bad, bad,
bad rap, because all these like making bad code, but people can write bad code in any language. And what I have seen consulting and going round is something that I get you get in a language, but it's a lot of multi million dollar businesses that were growing up from an idea that a guy did, I did not know how to code on a girl that did not know how to code just did it with Caucasian or CFL, right? They just went, oh, wow, I can I can do my idea. And now I'm dealing with people like that, that have multi million dollar businesses, all born out of ideas like that. And it you know, makes me proud again, I think somebody else is going well, other people have been doing them. But it it's a real easy way to get into web development
and be sort of like the, the grammar police complaining your book is full of grammar errors mark
your multimillion dollar salary because you
started writing it using Word instead of you should have used this other word processor instead. Right?
Mark Drew 51:49
And it's like the content that matters, right? But exactly like, you know, and be able to go from something that's just a wacky idea to something that's actually out there. deployed. Fantastic.
Yeah. So I I've seen once or twice those blog articles saying cold fusion is dead or dying. Yes. But I want to ask a different question, which is, what would it take to make cold fusion even more alive this year,
Mark Drew 52:16
I think is is the efforts of otters and you have to like, take you half of them, they're making their making massive change
the forge box product, like having allowing people to
Mark Drew 52:30
make me not write code, being able to, like we've stuff together very easily. forge box is getting there. And I think now that we have having dependencies and things like that, being able to and the box files that would be able to say, Oh, this is I just have this tendency to install this widget. And I can just use it because CFL is good to do that from day one, right? But we didn't agree on a format of deploying these things. And that's been the failure so what can make it for I want CF more live this year is having more forge books, apps, right? One why anything like that, like Jesus as a Here you go, here's an idea for people out there
cleansing of, you know, phone formats, right phone formats are across the world, always should actually be plus date plus country code and something else. Right, right. Something that that turns any stupid number into a properly formatted, you know, telephone number, right, and have that to to forge books. And everyone will be using that. But, you know, make it something that I have to Google and go to, to,
you know, various different websites to find what the proper rejects is, I don't want to do that. I don't care. I want to just have a, you know, a telephone to proper number or whatever you call it. But that's just an idea. But there should be hundreds of these there should be like your first choice of going like, how do I do that this is just like an install something. And they'll speed up the amount of apps that are out there because, you know,
it's a way to share some cool stuff you've written, you know, if you've got a little little function or whatever. I mean, we had really forged for a while but for that,
um, but the promo for Joe had to go to reinforce download, read the instructions on how to install this stuff, huh? Yeah.
Mark Drew 54:22
Which is always a problem box is more plug and play. It's more like Docker. I said, Yeah.
You just don't care what's inside of you just use it.
But I think the other benefit of people sharing some code is it I know when I share code publicly make the code or dance like better than if I just kept it, bribe it, right? And, and I was, you know, the other thing I was talking to the folks at pixelate to make what is it that Puffin. What was precisely precisely aside, sorry, I there There, there, little animal represents them as a Puffin. Yeah. But they said when they went from, from close source to open source, and everyone, they kind of open the Komodo on their underwear, suddenly, they decided they needed to wash throttle,
you know, write the code a lot better, because, and, you know, of course, people can contribute to whatever code you put into forge box. And this,
Mark Drew 55:14
this leads to the, the massive benefits of the open source world, right, they then have, like, some contributor agreements, so you know, what the licensing for stuff is, which sometimes you don't, if you just check stuff away, you've got codes of conduct, which means that the internet becomes the professional internet semi internet becomes a better place, you know, the rest is I'm really, but at least we can say like, we're welcoming to everyone's opinions isn't conduct first, first, the efforts by miss that whether the GitHub hasn't got a code of conduct, so, but if you start if you start creating your own repo that you're going to share stuff in, because then it goes for Xbox, you can just add a readme at a code of conduct at a at a contributions agreement University. So people have to do the proper licensing of that. So it you know, and these these little, and I know that that wasn't answering the actual question, but that's the path that that that we start reading and normalizing, yeah, you know, that we have to be nice to each other, because there are different opinions out there, you know,
yeah, just be civil. I mean, you know, it doesn't mean you can't give feedback, just be nice about how you do it, right,
be constructive. Let's build a better thing.
I think that that's one of the key ones. And the other one is
for people to stop getting into these versus
Mark Drew 56:40
battles, right, like Lucy versus cold fusion, where they don't matter. It's very easy to say like one or the other, but just expound on the virtues of of the stuff that you do always, like, say, the positive. So the good things about the thing, because when you get into I'm doing web, I'm also doing game two on another moment. And there's like two big engines. One is like Unreal Engine, and there's unity, and they have this battle that we want you to use, right? And the and cons of the other ones. I'm like, I don't care. Choose one or the other. It's a is an argument that you have other other door.
But once you step in, choose one or the other. I go to the left, go to the right, you find out whether it's good for you. Or not, right? Mm hmm. And then you go like my engines, great because of its greatness, right? Because it's good parts. You don't start going. It's great. Because of the failures of the other one.
Yeah, I think it's a switch between the black and white right and wrong judgmental attitude. And the more I don't know if you've ever done improv, but they have a thing they're called, yes. And whereas it doesn't matter what the other person said, You're always like, yes. And, you know, because you said that clever thing I'm going to add on something else, you know, right? To make it better, rightly, language x is really cool at this. Yes. And you know that to you know, right,
he said, Yes, but right,
because, but is a very, it kind of closes off conversation. It's like a it's a Terminator. And your programming language is a semi colon of language. Yeah, well the problem you're you're flying a quite a way to Washington, DC from London to go to see if objective What are you looking forward to this year? CF objective?
Mark Drew 58:27
Well, for me, because it's been like over a decade of flying from, from London to to various conferences, actually meeting up with a lot of cool people that I don't get to meet up as much as often I realized that people in the states also the states is kind of like some big country or something apparently there's there's different ones but there's
Horner it's a big country yeah
Mark Drew 58:51
But you know it's it's a big see between us so like going out there and actually talking to two people and seeing what they're doing also it's nice as time goes on the presentations that start going to these conferences are really high level you know, the they've always been good and they're getting better but
it seems that we've just because of the maturity of language you don't have all these these like getting started on cold fusion or get it you know, it just seems to be like right there like you feel like your brains expanded by the time you leave and is that that feeling of of energy and and brain expansion that you feel like after the
The conference is over, they come back and every person I've talked to comes about from conference and they're like psych I want to try this I want to do this and hopefully we can keep that going to the next conference and keep that going
well with I think was the least six cold fusion conferences this year so you don't have long right yeah I think well I think I've got August or September of but I think maybe this see if someone is September I'm gonna show I think it's later this year I want to say November right yeah yeah this this NC DEF CON or whatever local ads and the CF
camping journey and those are like 111 way before the other so I'm going to go all the way to
yeah you don't look wants to go to right yeah, my dogs really excited about NC DEF CON. Yeah,
he's a co creation Junior in the house. Um, yeah. So we've also got so hope you can develop a week going on was that it gets in August someone Okay, so I have an August I thought I had like nothing in August or so. That's virtual. So you don't have to get on a plane to go to that. No, I can't. But even better, I can just sit here and hang out. But the thing is, that bar there is very different to the
Mark Drew 1:00:49
it's all virtual drinks, you know. Yeah. And of course, the timezone just makes it really awkward sometimes, you know,
yeah, but they record them. So yeah, says
fine. I can,
you can watch it whenever you can have your little bots be queued up with questions to put into the chat
Mark Drew 1:01:04
or asleep. Well, I'm gonna write a sit a bot in command box are just Yes.
Like marks chatting away like these are awake. 24 seven. Little do they know.
So if people want to find you online, how would they best do that? Mark.
Mark Drew 1:01:25
I am very active on Twitter. That's the best place to get me as at Mark Drew. I am sometimes I'm on the CFL slack that people should go on. But I'm a member of quite a few slack groups. And so you have Twitter is the best place to to get me if you want to email me and what you know is, I've been all public. My name is Mark. My email is mark at CMG HQ dot IO, so command headquarters dot IO.
Yeah, so if you want to email me do that, and if not, carrier pigeon usually works as a result.