依稀记得2022年趁某平台优惠买了台云服务器,周未筹备装置MySQL数据库,两天工夫卡在MySQL环境配置上,切实是折磨一气之下把服务器给退了。

要是我早一点学会Docker,我的博客预计已上线一年啦!前端切图仔学会Docker,我真的能让你三分钟上线本人博客平台。

不骗人,先把我的博客平台秀进去给xdm瞅瞅。

网址:https://www.linglan01.cn

Docker能做什么?

举个,大家有没有体验过在服务器上安装MySQL、Node.js等经验,装置它们并是不像手机利用商店、macOS中的App Store那样点击下载即可,咱们还须要为它们手动配置环境变量、门路,更甚者要设置权限。像我整顿的linux装置Node.js文档,为了装置它我须要手敲好几个命令:

Node.js装置是绝对简略的,为搭建一个后盾可能咱们须要应用到MySQL、Nginx、Redis等等。如果搭建这些服务能像咱们前端开发相熟的Npm包管理器那样一个命令下载安装他人曾经配置好的该多好,我只想做个伸手党,而Docker正好圆了我这个想法。

简言之,Docker是帮忙开发者疾速简略搭建、部署、装置应用服务的一个工具。当然Docker性能不仅仅局限于这些,其余性能我临时没有应用到,xdm自行钻研吧。

Docker中的三个重要概念

镜像:

镜像概念等价于Npm包的概念,间接了解成Npm第三方包即可。例如:咱们下载vue开源的包npm i vue ,下载Node.js镜像docekr pull node

容器

容器就有点难了解,Docker 容器和文件夹很相似,一个Docker容器蕴含了所有的某个利用运行所须要的环境。每一个 Docker 容器都是从 Docker 镜像创立的。Docker 容器能够运行、开始、进行、挪动和删除。每一个 Docker 容器都是独立和平安的利用平台,Docker 容器是 Docker 的运行局部。

前端xd能够将其了解成npm run dev命令执行后产生的后果。

仓库:

这个概念最容易了解了,间接将它了解与Npm仓库一样的货色。像应用命令npm i vue下载vue,npm其实是先在npm官网地址https://www.npmjs.com/search?q=vue查找,查找有对应包名后再下载。

同样的,当docker下载Node.js镜像docker pull node,它也是通过Docker仓库链接https://hub.docker.com/_/node查找后再下载。

Docker的应用

默认xdm曾经是合格的开发人员,面向bing搜寻装置Docker是小菜一碟,所以我不想写Dokcer的装置,间接跳到Docker的应用。

没有玩过Docker,xdm必定玩过Npm,特地是前端开发人员。Npm 常用命令,我默写都能默写进去。这里我用表格将Docker常用命令与Npm常用命令列出来,其实它们很多命令是某几个英语单词换掉了,含意是一样的。

Dockernpm作用
docker pull Docker镜像名npm i npm包名下载npm包/Docker镜像
docker rmi Docker镜像Idnpm uninstall npm包名删除npm包/Docker镜像
docker imagesnpm list查看以后已下载的npm包/Docker镜像

当初咱们在服务器环境应用上列命令下载Node.js镜像来耍耍。

我服务器Docker版本是v19.03.9:

咱先查看以后有哪些Docker镜像:

已存在Node.js镜像,并且TAG是latest,阐明以后的镜像是最新版本。

那咱们下载另一个版本的Node.js镜像,下载其余版本的镜像仅须要在镜像名后加上tag,如下载https://hub.docker.com/_/node/tags页面中第一列tag为lts-buster的Node.js镜像。

下载lts-buster的Node.js镜像,而后再查看以后所有镜像:

//下载node tag为lts-buster的Docker镜像docker pull node:lts-buster//查看以后所有Docker镜像docker images

删除镜像:

docerk rmi 镜像Id

这里须要留神,删除是依据ID删除可不要搞错了,镜像ID是镜像下载后主动生成的,咱们不须要做其余的操作。

以上是对于Docker操作镜像罕用的几个命令,是不是非常容易。

而后是对于Docker容器的常用命令:

Docker命令作用
docker ps查看以后的容器(运行、暂停状态)
docker ps -a查看以后所有的容器(所有状态)
docker logs 容器ID查看容器日志
docker rm 容器ID删除容器
docker rm 容器ID -f强制删除容器
docker stop 容器ID暂停容器运行

如:查看我服务器以后的容器,其中docker ps命令仅展现STATUS(状态)为非Exited(进行)的,docker ps -a将展现所有。因为图中红框框起来的容器STATUS(状态)为Exited(进行),所以想见到它应应用docker ps -a命令。它是我成心进行的,但在部署中,进行的起因可能是某个参数谬误或容器外部报错导致,这时须要咱们去排查起因,docker ps -a必定会用上,docker logs 容器ID查看容器谬误日志也不要遗记了。

删除、暂停容器不贴图啦,运行中的容器不能间接删除,须要先暂停容器运行。当然应用强制删除命令docker logs 容器ID -f就没有这个限度了。

最初是docker run ... 它较非凡重点写,它的作用是创立一个新的容器。

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS罕用配置有:

Options作用
-d后盾运行容器,并返回容器ID
-p指定端口映射,格局为:主机(宿主)端口:容器端口
--name="nginx-lb"为容器指定一个名称
--volume , -v绑定一个数据卷

当初创立Nginx容器来演示下,先应用docker pull nginx下载Nginx镜像。

创立一个指定名称为mynginx的容器:

这里增加了-d,它的作用是使容器在后盾运行,个别都会把它加上。

删除指定名为“mynginx”的容器,而后再次创立指定名称为mynginx的容器,这次去掉-d看下成果:

去除-d,创立容器运行后,终端面板不能再有其余操作,敞开以后终端面板也会导致容器进行运行。无特殊要求记得带上-d

容器是独立的,容器启动一个服务,外界如果想拜访,则须要暴露出一个端口,让咱们能拜访到容器外部的服务,像nginx默认监听端口为80,当咱们去拜访一个nginx容器服务时,须要应用-p将容器内的80端口映射进去。

因为我的服务器80端口已被其余利用占用,所以改用3000端口演示:

这个时候,外网就能够间接拜访Nginx。我的服务器IP已绑定域名,即域名+ 3000端口即可胜利拜访到Nginx。

绑定数据卷听着十分牛逼的名词,但其实它十分好了解。举个,创立Nginx容器服务后,容器内会存在nginx.conf文件。如果咱们想自定义Nginx配置,就须要对nginx.conf进行批改,容器是无状态的,Nginx容器删除从新创立,它的nginx.conf文件内容将会被重置。咱们须要将nginx.conf文件的批改长久化保留,须要应用-v进行数据卷绑定。
如:当初服务器存在nginx.conf文件,并内容已批改成咱们想要的配置

docker run --name "myNiginx" -v /nginx:/var/nginx -d nginx

其中/nginx:/var/nginx:右边是咱们批改的nginx.conf,左边是Nginx容器内的默认配置文件nginx.conf,右边文件映射到左边文件,这样就能做到长久化保留nginx.conf文件的批改。

Docker Compose是什么

Docker Compose是Docker官网的开源我的项目,实现对Docker容器集群疾速编排。

举个,像公司中理论我的项目里,后端这边不单单仅起一个java服务,他可能须要通过java操作MySQL或Radis一类的数据库,可能还会应用到Nginx进行负载平衡一类的服务等等。

因而,可能须要创立治理2个或2个以上的容器,运行的容器变多又扩散不方便管理,比方:我想把后端服务相干的容器都停了,难道让我重复执行docker stop 容器ID命令?

Docker Compose出于上述问题呈现,它容许咱们通过创立一个xxx.yaml文件对立配置管理多个容器,而后只有一个命令,就能同时启动/敞开这些容器

Docker Compose应用

Docker的应用一样,Docker Compose也跳过装置,xdm面向bing搜寻进行装置吧。

Docker Compose常用命令:

Docker Compose命令形容
docker-compose up -d启动服务
docker-compose down进行服务

再应用Docker Compose命令之前,先筹备一个.yaml文件。

这里不再逐个粘贴Docker Compose命令执行后果图,前面一节有实例。

搭建博客平台

有了上述Docker、Docker Compose入门常识后,咱们能够开始搭建集体博客平台的操作啦!

我的集体博客平台https://www.linglan01.cn是部署Github社区的开源我的项目vanblog,它是一个集体博客零碎,挪动端自适应,具体的介绍xdm请挪动它的官网文档。

咱们间接看到部署形式这节:

把邮箱批改成本人的,如果没有其余要求,其余地位的配置不须要改变。

在服务器创立docker-compose.yaml文件,复制官网文档的配置到docker-compose.yaml文件中。因为我想把mongoDb数据库服务凋谢进去,docker-compose.yaml文件中额定增加了其余的配置语句,xdm能够疏忽掉它。间接复制官网贴的配置,再将邮箱地址批改成本人的即可。

最初运行docker-compose up -d命令。

总结

从一年前尝试装置配置MySQL数据库失败为结尾,向前端开发人员讲述Docker、Docker Composep是什么,它能帮忙咱们开发人员能做什么。

利用Npm包管理器相干概念,帮忙前端人员更好的了解镜像、容器、仓库Docker中三个重要概念。也讲述了Docker、Docker Compose简略的入门常识以及根底的应用,且实战部署一个博客平台体验一波Docker技术带来的益处。

B站视频:
Docker部署博客平台_哔哩哔哩_bilibili

参考

Get Docker | Docker Documentation

Docker Compose overview | Docker Documentation

全网最具体的Docker-Compose具体教程

Docker 学习笔记:Docker简介和装置

Docker 入门教程