Docker + GitLab CI/CD 实现自动化部署

使用Docker+gitlab ci/cd 实现自动化部署

1. Docker

1.1 Docker是什么?

引言官网docker官网的介绍:

​ 容器是打包代码及其所有依赖项的软件的标准单元,因此该应用程序可以从一个计算环境快速可靠地运行到另一个计算环境。Docker容器映像是轻巧的,独立的,可执行的软件软件包,其中包括运行应用程序所需的一切:代码,运行时,系统工具,系统库和设置。

​ 容器映像在运行时会成为容器,对于Docker容器,映像会在Docker Engine上运行时成为容器。不论基础架构如何,容器化软件都可用于基于Linux和Windows的应用程序,始终运行相同。容器将软件与其环境隔离开来,并确保尽管开发和登台之间存在差异,但软件仍可以均匀运行。

​ 在Docker Engine上运行的Docker容器:

标准: Docker创建了容器的行业标准,因此它们可以在任何地方移植

​ **轻巧:**容器共享计算机的OS系统内核,因此不需要每个应用程序都具有OS,从而提高了服务器效率,并降低了服务器和许可成本

​ **安全:**应用程序在容器中更安全,并且Docker提供了业界最强大的默认隔离功能

我的理解:

​ docker是一个可移植的容器,他就像一个虚拟机一样运行在我们系统中,但是比虚拟机的开销更小,在这个容器当中可以配置我们的应用环境,例如jdk环境、系统级别的环境变量等等,这样当我们需要在新的机器上部署时,我们就不需要关心环境情况,只需要安装docker我们就能愉快的跑起我们的程序,同时还能保证在多应用情况下每个应用都有一个干净的运行环境,不用担心被其他应用干扰。

1.2 Docker给我带来了什么?

1.简化了环境配置

​ 解决了我们在部署应用时,开发环境和线上环境需要重复配置运行环境问题,达到了环境的复用,并解决了多环境下微小差异所带来的风险,降低了硬件要求和系统环境的耦合度。

2.代码流水线管理

​ 保证了代码从开发到上线均使用一致环境。

3.隔离应用

​ 在开发时会在一台机器上部署不同的应用,过多的应用可能互相之间产生干扰,docker可以隔离这些应用,让每个应用都运行一个干净的环境中。

4.整合服务器

​ Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本. 由于没有多个操作系统的内存占用, 以及能在多个实例之间共享没有使用的内存, Docker可以比虚拟机提供更好的服务器整合解决方案.

5.多租户环境

​ 多租户环境的应用中, 它可以避免关键应用的重写.我们一个特别的关于这个场景的例子是为loT(物联网)的应用开发一个快速, 易用的多租户环境. 这种多租户的基本代码非常复杂, 很难处理, 重新规划以应用不但消耗时间, 也浪费金钱.
使用Docker, 可以为每一个租户的应用层的多个实例创建隔离的环境, 这不仅简单而且成本低廉, 因为Docker环境启动的速度快, diff命令很高效.

6.快速部署

​ Docker为进程创建一个容器, 不需要启动一个操作系统, 时间缩短为秒级别.
可以在数据中心创建销毁资源而无须担心重新启动带来的开销. 通常数据中心的资源利用率只有30% , 通过使用Docker并进行有效的资源分配可以提高资源的利用率.

1.3 安装Docker

​ Docker的安装主要分为在线安装和离线安装两种方式,我这里主要采用在线安装,如果自己的机器访问不到网络可以自行百度离线安装。

​ 需要注意,Docker要求ContOS 6以上,必须运行在64位环境当中,内核要求2.6及以上但是与3.8及以上的内核有很大差距,建议还是使用3.8以上的内核,内核必须支持并开启cgroup和命名空间功能。

在这里插入图片描述

1.安装Docker
yum install -y docker

2.查看Docker是否安装成功
yum list installed |grep docker
3.启动Docker
systemctl start docker
4.查看Docker启动状态 (running 则启动正常)
systemctl status docker

在这里插入图片描述

5.修改镜像仓库

​ Docker默认的仓库因为在国外下载速度很是愁人,所以在使用前建议先去找个国内的镜像仓库,我这里采用的阿里云当然还有其他很多,可自行百度。

​ 先登录阿里云访问:https://cr.console.aliyun.com/cn-beijing/instances/images

​ 获取到加速器地址后,先去 /ect/docker/下看看是否存在daemon.json文件,如果有直接将地址修改上去然后重启即可,如果没有参照阿里云的步骤进行创建。

在这里插入图片描述

1.4 编写Dockerfile生成镜像

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

详细编写规则参考:https://www.runoob.com/docker/docker-dockerfile.html

#基于 contos 7 基础镜像
FROM docker.io/centos:7

#维护人员邮箱
MAINTAINER ysl1397940314@163.com

#下载系统功能组件
# telnet   远程登陆命令组件
# nc       用于设置路由器相关参数
# wget     文件自动下载命令
# curl     综合访问命令
# unzip    解压命令
# iproute  路由操作命令
# net-tools 工具包
RUN yum install telnet nc wget curl unzip iproute net-tools -y && \
#清理yum
yum c
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值