在咱们前端部署项目的时候,须要把咱们项目的各类环境原封不动的搬到服务器上。而后若是有多个环境,好比开发环境-测试环境-预上线环境-线上环境等等,咱们就须要把这些环境等在多台服务器上进行部署。而且要保证环境的版本要保持一致。可是docker就能够解决这种问题。javascript
docker是利用go语言开发的应用容器引擎,基于容器化,沙箱化的应用部署技术,可用于自动化测试,打包,持续集成和发布的应用场景。能够用于数据库的搭建。nginx服务器的搭建,nodejs,php等编程语言环境的搭建。容器是彻底使用沙箱机制,相互之间不会有任何接口。简言之,就是能够在Linux上镜像使用的这么一个容器。 可能这儿仍是不懂docker是干吗,那么就打个比喻:我来到一片空地,想建个房子,因而我搬石头、砍木头、画图纸,一顿操做,终于把这个房子盖好了。结果,我住了一段时间,想搬到另外一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、画图纸、盖房子。可是,跑来一个老巫婆,教会我一种魔法。这种魔法,能够把我盖好的房子复制一份,作成“镜像”,放在个人背包里。等我到了另外一片空地,就用这个“镜像”,复制一套房子,摆在那边,拎包入住。这种魔法就是dockerphp
容器化是将应用程序或服务。以及其依赖的配置,一块儿打包成容器映像的一种软件开发方法前端
方法一:vue
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo (能够换成阿里源)
复制代码
sudo yum install docker-ce docker-ce-cli containerd.io
复制代码
这样会安装最新版本,你也能够指定版本安装java
// 查看全部版本
yum list docker-ce --showduplicates | sort -r
// 安装指定版本,把<VERSION_STRING>替换成相应的版本就行
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
复制代码
sudo systemctl start docker
sudo systemctl enable docker
复制代码
docker -v
docker run hello-world
复制代码
方法二:利用脚本安装(生产环境不推荐使用,本身学习的时候能够用)node
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
// 加入用户组
usermod -aG docker your-user
复制代码
官网安装教程:docs.docker.com/engine/inst…linux
Docker镜像(Image)相似与虚拟机的镜像,能够将他理解为一个面向Docker引擎的只读模板,包含了文件系统。 例如:一个镜像能够彻底包含了Ubuntu操做系统环境,能够把它称做一个Ubuntu镜像。镜像也能够安装了Apache应用程序(或其余软件),能够把它称为一个Apache镜像。 镜像是建立Docker容器的基础,经过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来建立和更新现有的镜像。 用户能够从网上下载一个已经作好的应用镜像,并经过命令直接使用。 总之,应用运行是须要环境的,而镜像就是来提供这种环境。(有点相似于前端的no_modules里面的文件)
3. Docker容器 Docker容器(Container)相似于一个轻量级的沙箱子(由于Docker是基于Linux内核的虚拟技术,因此消耗资源十分少),Docker利用容器来运行和隔离应用。 容器是从镜像建立的应用运行实例,能够将其启动、开始、中止、删除,而这些容器都是相互隔离、互不可见的。 能够把每一个容器看做一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。 镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层建立一个可写层,镜像自己将保持不变。就像用ISO装系统以后,ISO并无什么变化同样。nginx
1.docker pull hello-world 从仓库拉取镜像
2.docker images 查看本地镜像
3.docker run hello-world // 若果本地没有镜像,就会拉取,并运行,若是有镜像,就会直接运行镜像,生成一个容器
4.docker ps //查看正在运行的容器
5.docker ps -a // 查看全部容器
6.docker stop hello-world // 中止正在运行的容器
7.docker start hello-world // 启动容器
8.docker restart hello-world // 重启容器
9.docker rm hello-world // 删除容器
10.docker rmi hello-world // 删除镜像
复制代码
可能你们仍是很陌生,那么我这里用两个实例来演示一下这些命令git
docker pull nginx // 拉取nginx的镜像并运行
docker images // 查看镜像
docker run -d -p 8000:80 --name my-nginx nginx
参数说明:
-d 以守护模式运行镜像,也就是后台运行
-p 宿主机端口映射的镜像端口,左边是宿主机端口,右边是镜像端口,80是Nginx访问端口
--name给容器起一个惟一的别名
这里就启动了nginx 在浏览器输入; ip:8080就能够看到nginx启动成功
docker ps // 查看容器
复制代码
docker pull node:latest // :latest 表示最新版本。能够指定对应的版本
docker run -itd --name node-test node // 运行node
参数说明
-d :分离模式: 在后台运行
-i :容器的标准输入保持打开
-t :让docker分配一个伪终端并绑定到容器的标准输入上
docker exec -it node-test /bin/bash // 经过 exec 命令对指定的容器执行 bash
node -v
复制代码
docker run -u root -itd --name jenkins -p 9000:8080 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/jenkins:/var/jenkins_home jenkins/jenkins
复制代码
启动命令含义 -u root: 权限等级为root
-p 9000:8080 Jenkins默认网页访问端口为8080,将端口映射到外部主机
-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock使Jenkins内部可使用docker命令
-v /volume1/docker/jenkins:/var/jenkins_home 将Jenkins的配置映射到外部主机卷,容器删除仍可保留配置github
等浏览器初始化jenkins成功后,会提示须要一个初始密码,这个时候,咱们能够到/volume1/docker/jenkins/secrets/initialAdminPassword 查看密码
2. 安装node.js
3. 进入
4. 配置node
5. 安装(这个是为了在后面构建项目的时候,能够自由的选择分支)
6.这样jenkins初始化就完成了。咱们开始初始化一个vue3项目到github上 7. 开始配置jenkins
8. 参数化构建(后面能够选择分支)
9. 绑定github
10. 添加node
11. 执行脚本(这里利用docker去安装nginx,并映射到9001端口)
12. 开始构建
13. 完成构建,能够到对应的地址+端口号访问你的前端项目。