依稀记得 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 常用命令列出来,其实它们很多命令是某几个英语单词换掉了,含意是一样的。
Docker | npm | 作用 |
---|---|---|
docker pull Docker 镜像名 |
npm i npm 包名 |
下载 npm 包 /Docker 镜像 |
docker rmi Docker 镜像 Id |
npm uninstall npm 包名 |
删除 npm 包 /Docker 镜像 |
docker images |
npm 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 入门教程