Docker实践(一)应用场景和安装

2023-10-31

 随着互联网的发展,容器技术越来越得到大规模应用厂家的重视。Docker作为paas平台的容器,最近几年引起众多技术人士的关注,并且也越来越流行。

一、Docker是什么

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
1)dockerClient客户端
2)Docker Daemon守护进程
3)Docker Image镜像
4)DockerContainer容器


二、Docker的应用场景

所有的好产品、工具都是为解决某些场景而存在的,没有应用场景,这些产品和工具也就失去了存在的价值和意义。Docker可以为下列项目角色解决如下关键痛点

1、从开发人员的角色来说

1) 开发环境的管理混乱是开发人员很头痛的问题,尤其是一些团队共用开发环境,项目又非常多的情况,就会更加混乱不堪

2) 开发环境难以复制或者开发环境的硬件出现故障,重新建立开发环境耗费大量的时间和精力

3) 开发环境的搭建,每次都需要重新安装、配置、运行检测,都是耗费资源,甚至需要有专职人员负责集成和维护环境,有悖devops思想

2、测试人员

1) 生产环境和开发环境很难同步,导致测试人员的工作价值,往往因为环境的不同步很难全面体现,本地开发环境测试通过了,生产环境往往又出现问题

2) 测试条件限制,不可能为每种异构平台都准备测试环境,导致测试不完整,影响软件质量

3、运维人员

1) 服务需要快速部署,方便的扩容缩,版本回退都需要很短时间完成,传统做法,耗费时间和精力巨大,对运维人员往往是灾难。

2) 多服务器环境下,保障应用的一致性可控,传统需要人工检查

3) 不同硬件平台间迁移痛苦万分,各种不兼容

4) 如果不同的应用共用同一个硬件服务器,基础环境的版本问题会互相干扰,都需要专门修改配置处理。如java版本、python版本、时区、语言环境等等


  三、Docker的安装
1、如果选用centos的话,建议使用centos 7. 

centos6.5 下,需要升级内核到3.1,我遇到的坑是,虽然升级成功了,但是启动时,提示 “CPU已经被禁止”,而且按网上说的各种方式都没有填平,苦啊。可能和我的CPU family也有关系。

使用过的方法:  1) 修改虚拟机设置选项  2) 修改vmx 文件  3) 修改虚拟机bios  4) 确认本机(物理机)的cpu虚拟化等等~~~

2、使用centos7 的iso 安装

iso 安装版本为:CentOS-7-x86_64-DVD-1708。  

 3、安装docker

       1) 一开始使用yum命令行安装:

         yum install docker-io    

    -----成功

yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm  

    --失败,提示

错误:docker-ce conflicts with 2:docker-1.12.6-68.gitec8512b.el7.centos.x86_64
错误:软件包:docker-ce-17.03.0.ce-1.el7.centos.x86_64 (/docker-ce-17.03.0.ce-1.el7.centos.x86_64)
        需要:docker-ce-selinux >= 17.03.0.ce-1.el7.centos
您可以尝试添加 --skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va --nofiles --nodigest

        yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm

        ---失败,提示与docker-io版本不匹配


        2)换个思路,通过yum 安装 repo 库,然后让yum自己根据库找关联和依赖
a、 删除docker旧版本  (如果有才执行)
           yum remove docker docker-common container-selinux docker-selinux docker-engine


b、安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源( 系统自带 可以不执行)

           yum install -y yum-utils

c、添加yum源
          yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

d、更新索引

          yum makecache fast

e. 安装 docker-ce
          yum install docker-ce
       

f、启动 docker
          service  docker start

 
g. 验证是否安装成功
          docker info   

安装完成后,执行service docker  status 可以查看docker的状态:


3)验证docker 可以正常工作【网络需要保障】

我们也可以看看docker的hello-word,执行如下命令 docker run hello-world,由于第一次执行,本地docker 没有这个镜像,所以会先去下载,然后在docker容器中运行。



四、搭建gitlab 和redmine

最后,通过搭建一个gitlab和redmine来结束docker的安装实践。

1)gitlab 源码版本控制 
gitlab的运行环境由三个部分组成:postgresql 数据库;redis缓存服务;gitlab服务

a 、启动  postgresql数据库

docker run  --name  gitlab-postgresql -d --env  'DB_NAME=gitlabhg_production'  --env 'DB_USER=gitlab' --env 'DB_PASS=password'  sameersbn/postgresql:9.4-12

b、启动redis    

docker  run --name gitlab-redis  -d  sameersbn/redis:latest
 

c、启动gitlab

docker run --name  gitlab -d \
> --link  gitlab-postgresql:postgresql --link   gitlab-redis:redisio \
> --publish  10022:22  --publish  10080:80 \
> --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
> --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
> sameersbn/gitlab:8.4.4

       用下面URL   http://192.168.136.177:10080/ 进行登录,使用 root/5iveL!fe 账号和密码登录后,修改自己的密码,这样就可以使用gitlab了


          2) 搭建项目管理redmine 工具

使用docker 搭建 Redmine服务,需要2步

a、数据库下载运行

docker  run  --name=postgresql-redmine -d \
> --env='DB_NAME=redmine_production' \
> --env='DB_USER=redmine'  --env='DB_PASS=password' \
> sameersbn/postgresql:9.4-12
由于上面已经下载过数据库,所以本次要下载的内容小好多

b、运行redmine

docker run  --name=redmine -d \
> --link=postgresql-redmine:postgresql --publish=10083:80 \
> --env='REDMINE_PORT=10083' \
> sameersbn/redmine:3.2.0-4

      使用url  http://192.168.136.177:10083  可以打开redmine界面, 账号和密码  admin/admin, 界面如下:




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker实践(一)应用场景和安装 的相关文章

随机推荐

  • Cygwin编译JNI的环境配置

    一 什么是NDK NDK提供了一系列的工具 帮助开发者快速开发C 或C 的动态库 并能自动将so和java应用一起打包成apk 这些工具对开发者的帮助是巨大的 NDK 集成了交叉编译器 并提供了相应的mk文件隔离CPU 平台 ABI 等差异
  • MacBook怎么安装使用Windows软件和虚拟机?

    作为一名MacBook用户 你可能会发现有些软件和应用程序只适用于Windows操作系统 但别担心 今天我们将介绍两种方法 让你的MacBook轻松安装Windows软件和运行Windows虚拟机 为你的工作 学习和娱乐任务带来更多可能性
  • Vue 3 使用 vue-echarts 的柱状图 barItem 和 x, y 轴点击事件实现

    需求背景 最近使用 Vue 3 开发柱状图功能 图表已经绘制完成了 但是突然有需求加进来要可以点击柱状图的柱子 barItem 和 x y 轴的坐标 然后根据点击的位置 处理不同区域的点击事件 作为 CV 程序员 第一时间搜索网上的解决方案
  • 抖音养号步骤有哪些?最重要的3步你做到了吗?

    国仁网络资讯 为大家整理一份超详细的 短视频运营手册 回复私信限时免费领取 有人问我 新手养号怎么养 老账号养号要怎么养 其实 严格来说 养号不分新老 不管你是刚注册的抖音号 还是已经用过很久的抖音号 养号都是运营账号必做的事项之一 那么
  • C++文件的读取详解,以及使用eof出现末行数据被读取两次情况

    目录 0 前言 对文件流的读写 文件打开方式 1 写文本文件 2 读文本文档 2 1使用efo函数判断出现数据被读取两次 3 二进制方式写文件 4 二进制读文件 5 按指定格式读写数据stringstream 0 前言 对文件流的读写 if
  • text/html & text/plain的区别

    需要了解的概念 Content Type 用于定义用户的浏览器或相关设备如何显示将要加载的数据 或者如何处理将要加载的数据 MIME MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型 当该扩展名文件被访问的时候 浏览器会自
  • Red Hat Enterprise Linux 7.9 下载

    1 Red Hat Linux 所有版本 5 6 7 8 9 下载 https pan baidu com s 1eSYuljc2Bt9OXZmWdZQ96A 提取码 cqfu 推荐 https pan baidu com s 1RISly
  • c#:委托与回调函数示例

    c 委托与回调函数示例 上一篇文章已经给大家详细讲解过委托的意思 如何声明定义 如何通过委托调用函数 以及委托中的多播等 今天是刚刚学到委托新的用法 可以将方法当作参数来传递 并且不需用示例委托 所以今天来给大家再次拿出来详细讲解一下 一
  • Spring Boot日志配置logback

    目录 一 logback介绍 1 logback定义 2 logback启动加载文件 3 pom依赖 3 日志级别 二 配置文件详解 1 configuration 2 property 3 springProperty 4 logger
  • Flutter 自定义marquee垂直滚动

    自定义垂直marquee插件 用来向上垂直滚动列表 一般滚动公告 自定义类 import dart async import package flutter material dart class Marquee extends State
  • mongodb的sharding(分片)横向扩容的方法

    sharding是mongodb进行横向扩容的方法 sharding把一个集合的不同部分存储到不同的机器上 当一个数据库集合变得很大时 你只需要加入新的机器即可 sharding自动把集合的数据分布到新的服务器上 sharding自动实现数
  • uni-app小程序中v-show与display:flex一起使用时v-show不生效!

    问题 同时使用v show与display flex的时候 发现v show不能隐藏元素 原因 经排查原因后发现是因为display flex样式的优先级高于了v show中的display none 解决办法 display flex不要
  • xpah的使用

    目录 基本介绍 基本使用 案例 基本介绍 为什么要学习xpath scrapy框架支持xpath提取 selenium 经常使用xpath提取 使用简洁 语法稍稍复杂 xpath是什么 全称 xml path language 从xml中提
  • Jackson快速入门

    Java生态圈中有很多处理JSON和XML格式化的类库 Jackson是其中比较著名的一个 虽然JDK自带了XML处理类库 但是相对来说比较低级 使用本文介绍的Jackson等高级类库处理起来会方便很多 引入类库 由于Jackson相关类库
  • How to use jupyterlab in Ubuntu 22.04

    How to use jupyterlab in Ubuntu 22 04 Install Start Stop Install lwk qwfys pip install jupyterlab upgrade i http mirrors
  • matplotlib中颜色映射的使用

    matplotlib3 3中使用颜色映射 问题描述 在Python编程从入门到实践一书中15 2 8节 按照书中代码 在python3 8与matplotlib3 3中 camp plt cm Blues报错 解决 搜索发现应将此处语法改为
  • WDS桥接副路由器有线上网方法

    副路由器DHCP一定要关闭 或者IP池设置的范围不能包括有线设备IP
  • 替换字符串中出现的某段字符串的C语言和C++实现方式

    C语言实现方式 使用了循坏来重复替换操作 直到无法再找到需要替换的子串为止 具体实现如下 include
  • ajax地址url和action,jsp,ajax_JSP中 post url地址重写or action如何实现,jsp,ajax - phpStudy...

    JSP中 post url地址重写or action如何实现 求解在JSP中 post url地址 ctx web webuser getRights 这个是获取导航JSON ctx 是应用地址知道 后面 web webuser getRi
  • Docker实践(一)应用场景和安装

    随着互联网的发展 容器技术越来越得到大规模应用厂家的重视 Docker作为paas平台的容器 最近几年引起众多技术人士的关注 并且也越来越流行 一 Docker是什么 Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依