资讯专栏INFORMATION COLUMN

DevOps 基于Walle的小型持续集成实战(三)Docker与Gitlab

since1986 / 1287人阅读

摘要:自动化测试和持续集成发布。在服务型环境中部署和调整数据库或其他的后台应用。容器与镜像的关系类似于面向对象编程中的对象与类。容器容器是独立运行的一个或一组应用。提供了庞大的镜像集合供使用。

还在按照mysql安装教程一步一步配置服务配置账户吗?还在为每开一个新环境重新配置这些服务感到苦恼吗?使用Docker,服务快速构建部署。解决你的研发时间,早点下班~现代技术,还不会docker你就落后了。
Docker

百度百科定义

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

比较全面的学习网站:https://www.runoob.com/docker...

以下资料来源于www.runoob.com,更多资料请直接访问该网站,侵删。

Docker 教程

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

谁适合阅读本教程?

本教程适合运维工程师及后端开发人员,通过本教程你可以一步一步了解 Docker 的使用。

阅读本教程前,您需要了解的知识

在阅读本教程前,你需要掌握 Linux 的常用命令。你可以通过本站的 Linux 教程 来学习相关命令。

Docker的应用场景
Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker 的优点
1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
相关链接

Docker 官网:http://www.docker.com

Github Docker 源码:https://github.com/docker/docker


Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

名称 概述
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器(Container) 容器是独立运行的一个或一组应用。
Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/refer... 与 Docker 的守护进程通信。
Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 仓库(Registry) Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Docker安装和使用

请直接访问https://www.runoob.com/docker...

以下简述常规镜像和容器操作

docker pull training/webapp  # 载入镜像
docker run -d -P training/webapp python app.py  # 后台运行镜像
docker ps # 查看正常运行的容器
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                               NAMES
749081df9fe6        alenx/walle-web:2.1        "nginx -g "daemon of…"   2 weeks ago         Up 2 days           0.0.0.0:7070->80/tcp                walle-nginx
eafa0bf1e0f8        alenx/walle-python:2.1     "bash -c "cd /opt/wa…"   2 weeks ago         Up 2 days           5000/tcp                            walle-python
dde36e384856        mysql                      "docker-entrypoint.s…"   2 weeks ago         Up 2 days           0.0.0.0:3306->3306/tcp, 33060/tcp   walle-mysql
b7f2cab4ac7c        eclipse/che-server:6.8.0   "/entrypoint.sh"         11 months ago       Up 2 days           8000/tcp, 0.0.0.0:8080->8080/tcp    che
docker logs -f d3d5e39ed9d3 #查看日志
docker stop che   # 停止容器
docker start che  # 启动容器
docker rm che # 移除容器
Docker常规实例

该网站内包括以下docker镜像的部署

实例 网站
Nginx https://www.runoob.com/docker...
PHP https://www.runoob.com/docker...
MySQL https://www.runoob.com/docker...
Tomcat https://www.runoob.com/docker...
Python https://www.runoob.com/docker...
Redis https://www.runoob.com/docker...
MongoDB https://www.runoob.com/docker...
Apache https://www.runoob.com/docker...
Gitlab https://www.jianshu.com/p/080...
Nexus https://www.jianshu.com/p/77a...
案例操作 Mysql安装
内容参考:https://www.runoob.com/docker...

查找远程镜像:docker search mysql
拉取远程镜像:docker pull mysql:5.6
浏览本地镜像:docker images |grep mysql
运行本地镜像:docker run -d -P mysql:5.6
查看本地容器:docker ps

Gitlab安装
内容参考https://www.jianshu.com/p/080...

拉取远程镜像:docker pull gitlab/gitlab-ce
运行本地镜像:

$ docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射(左边宿主机端口,右边容器端口)
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
由于gitlab需要使用ssh连接,并且http地址需要使用固定地址(否则下载完的代码可能呈现giturl为127.0.0.1,所以我们要进行略微的调整)

编辑镜像配置:vim /home/gitlab/config/gitlab.rb

编辑镜像配置:

# 配置http协议所使用的访问地址,不加端口号默认为80
external_url "http://192.168.1.122"

# 配置ssh协议所使用的访问地址和端口
gitlab_rails["gitlab_ssh_host"] = "192.168.1.122"
gitlab_rails["gitlab_shell_ssh_port"] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出

重启本地容器:docker restart gitlab

后续创建项目和拉取代码等常规操作不再解释

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27888.html

相关文章

  • DevOps 基于Walle小型持续集成实战(二)设计

    摘要:以便对整个持续集成印象加深。配置完各环境发布脚本后,则可以使用构建发起进行触发环境准备。并会在远程环境上存放多次发布的版本,用于回退和切换服务停用。进行等操作,停止原本运行的服务切换启用。 该文章用于建立一个小型的基于Walle的持续集成工具。解决java,react,angular项目的编译发布。以便对整个持续集成印象加深。官方网站:https://walle-web.io/ 适用...

    zr_hebo 评论0 收藏0
  • DevOps 基于Walle小型持续集成实战(一)概述

    摘要:该文章用于概述一个小型持续集成环境的搭建的方案什么是持续集成持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回造成每天会有多次的版本发布。 该文章用于概述一个小型持续集成环境的搭建的方案 什么是持续集成? 持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回...

    Yangyang 评论0 收藏0
  • DevOps 基于Walle小型持续集成实战(五)基于Walle发布Java应用

    摘要:本章用于讲解如何在下构建和运行。编译发版都是基于的容器,下完成的。 本章用于讲解如何在walle下构建和运行JavaWeb。主要包含SpringBoot,ScalaAkkaWeb应用,以Java -jar和Docker运行两种方式(Tomcat方式不讲,大家自行研究) 新建项目 项目中心 > 项目管理 > 新建项目 以下是一份配置好的项目表 分组 项目 参考 备注 基本配置 ...

    qc1iu 评论0 收藏0
  • DevOps 基于Walle小型持续集成实战(六)基于Walle发布前端React,Angular

    摘要:本章用于讲解如何在下构建和运行前端应用。项目配置服务名称镜像版本映射容器端口到本地端口数据卷映射本地文件到容器映射文件到容器的目录并覆盖文件映射文件夹到容器的文件夹覆盖容器启动后默认执行的命令。环境准备参考文档 本章用于讲解如何在walle下构建和运行前端应用。主要包含React,Angular应用,以Nginx+Docker运行(Vue方式不讲,大家自行研究) 新建项目 项目中心 >...

    tuomao 评论0 收藏0
  • DevOps 基于Walle小型持续集成实战(七)总结

    摘要:当前版本针对于安装版概要整体流程贯通,基本可以达到实用级别。仍旧有很多需要提高的地方发布构建时部署上线服务器卡顿严重,基本不可以多项目发布。 该文章旨在描述从零开始搭建环境,中间遇到的问题以及最终的经验总结。当前版本针对于2.0 docker安装版 概要 整体流程贯通,基本可以达到实用级别。满足2-5台服务器,少量的应用部署是完全可以的,但达到一定规模之后则Walle和Jenkins...

    iliyaku 评论0 收藏0

发表评论

0条评论

since1986

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<