离线服务器下docker的部署与应用

一分钟内形成docker的模糊概念

网上很多文章避免将docker与虚拟机混为一谈,但对于初学者来说,完全可以将docker当做一种虚拟机技术,只需要牢牢记住一点最重要的区别:docker依赖于物理机的内核,所以在linux下“生成的docker”,一般不能直接在windows下运行。(虚拟机是完完全全模拟了一台物理机,这是一个很大的区别)。
当你有了这样的一个模糊概念,接下来只需要快速了解docker的三个基础组成部分,仓库、镜像、容器,就可以快速的应用起来。类比虚拟机,镜像就相当于安装虚拟机时用的iso文件,仓库自然就是一个官方存放镜像的地方,方便用户直接“下载”,当你的虚拟机运行起来后,就相当于一个容器

我为什么使用docker,需求是什么

在很多项目中,我们需要对一些url进行定时拨测,获取这些url的各种指标,例如响应时间、渲染时间等等,网上有许多开源的工具供我们挑选使用,sitespeed就是其中之一。sitespeed可以对访问过程进行度量,形成各种指标。访问过程进行录相、截图。指标分为浏览(体验)类指标、评分指标、DNS指标等几个维度。关于sitespeed更为详细的介绍可自行搜索。
然后由于其使用图形界面的浏览器,不太适合做为服务端程序运行,同时其各种依赖库的安装配置较为麻烦,故以docker的方式运行是比较合适的。https://www.sitespeed.io/在sitespeed.io的官方介绍上也指出所提供的docker镜像部署了所有的运行环境,对于用户只需直接使用即可。

离线安装docker:部署yum源或者rpm/deb包安装

对于某些特定环境,服务器是不允许访问互联网的,因此不能直接从软件源下载docker进行安装,这就造成了很多依赖包安装的麻烦。在此可以有几种不同的离线安装方式可供选择:

  • 对于ubuntu系统,你只需一台联网的同环境的虚拟机就可以得到deb安装包和所有的依赖包
    apt-get install --download-only docker这条命令的具体用法可以自行搜索,解决令人头疼的依赖问题简直舒服。
  • 对于centos系统,同样可以搜索所有的依赖包,通过rpm包的方法安装。但更加推荐部署本地yum源的方式,简单高效一劳永逸,部署步骤可自行搜索。

    镜像文件的导入导出

    不能访问互联网,意味着docker提供的官方仓库也不可访问,因此需要我们在本地虚拟机docker pull sitespeed.io相应的镜像,可以简单测试是否可用。

    [~]$ docker images
    REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
    docker.io/hello-world                latest              e38bc07ac18e        7 weeks ago         1.85 kB
    docker.io/sitespeedio/sitespeed.io   latest              38463a656de8        8 weeks ago         1.77 GB
    [~]$ docker run hello-world
    Hello from Docker!

    通过docker images看到本地存放了两个镜像,docker run *命令可以简单的在某个镜像文件基础上启动一个容器。
    接下来要做的就是将镜像文件使用save命令导出为tar文件:
    docker save 38463a656de8> /root/sitespeed.tar
    通过物理设备传输至离线服务器上,通过load命令导入镜像:
    docker load < /root/sitespeed.tar
    导入完成后,用docker images命令查看,惊奇的发现REPOSITORY和TAG列均为,所以save命令保存的并不是所有的信息,具体的区别自行搜索即可。不过不影响使用,我们只要修改一下就可以正常使用了。
    docker tag 38463a656de8 docker.io/sitespeedio/sitespeed.io:latest

    docker镜像是如何制作的

    基于docker提供的服务,我们想要制作自己特定功能的docker镜像,只需要按照格式编写一个Dockerfile文件即可。一个简单的Dockerfile如下:

    FROM ubuntu14.04
    COPY start.sh /start.sh
    RUN apt-get install -y gcc
    CMD
    ENTRYPOINT ["/start.sh"]

    FROM命令用于指定一个基础镜像(当然可以指定一个空镜像scratch),COPY和RUN都是字面意思,CMD和ENTRYPOINT 指定docker启动时的运行命令,关于二者的区别,在此不细说,推荐使用ENTRYPOINT。
    编写完成后,运行命令:docker build -t my_name:my_tag
    通过docker images命令就可以看到本地已经有了刚刚创建的镜像,通过
    docker run my_name:my_tag就可以启动并运行。
    不得不提的是,Dockerfile中的每一条命令都会创建一个临时层,(类似于套娃的感觉)所以要注意命令的书写方式,比如多条RUN命令合为一条书写。同时,减少不必要的操作。例如,新建一个文件,在后面步骤又删除了,这样两次操作都会存储在最终的docker镜像中,生成镜像的体积也会增大,这就是网上一些不成熟的镜像体积很大的原因。
    关于docker启动时的很多参数都可以自己按需查找,个人觉得-v和--entrypoint参数结合使用,会对大家测试一些小东西很有帮助。

    -v 指定一个本地目录挂载到容器中指定位置
    --entrypoint 指定docker运行入口,覆盖Dockerfile中的CMD和ENTRYPOINT

    例如:

    docker run --entrypoint /app/start.sh -v /root/app:/app docker_img.io

    首先通过-v将本地的/root/app目录挂载到镜像中的/app目录,之后再通过--entryponit指定运行入口为/app/start.sh。
    有了这样的用法,我们可以通过Dockerfile建立一个包含各种运行环境的基础镜像,通过这样的方式,测试我们自己的小程序(虽然应用场景有限)。当然还是要牢记文章开头所说的,docker是需要基于物理机的内核。

本文主要叙述了一些简单的docker使用场景,若果个别地方有错误,请不吝指出。

原文地址:https://www.cnblogs.com/LeeMouRen/p/9125972.html

时间: 2024-10-10 23:12:39

离线服务器下docker的部署与应用的相关文章

CentOS6.8下docker安装部署

1 docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器.它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了.它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc.它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作. Docker 扩展了 Linux 容器(Linux Containers),或着说 L

linux下docker安装部署项目(全)

一 .系统安装 基于CentOS-7-x86_64-Minimal-1708.iso安装系统 1.2.  配置系统 1.2.1  在线更新内核版本(建议更新,旧版内核会有docker BUG) 1.2.1.1 导入ELRepo软件仓库的公共秘钥,安装ELRepo软件仓库的yum源. rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-

docker安装步骤及基于docker容器部署web应用LNMP服务器环境

docker的介绍 docker的定义: 1.docker的三个概念:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器Docker 镜像 - Docker images: Docker 镜像是 Docker 容器运行时的只读模板Docker 仓库 - Docker registeries: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库(Docker Hub)Docker 容器 - Docker containers:每一个 Docke

MVC项目实践,在三层架构下实现SportsStore-08,部署到IIS服务器

SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管理.图像上传......是不错的MVC实践项目,但该项目不是放在多层框架下开发的,离真实项目还有一段距离.本系列将尝试在多层框架下实现SportsStore项目,并用自己的方式实现一些功能. 本篇为系列第八篇,包括: ■ 10.部署到IIS服务器    □ 10.1 使用Visual Studio发布   

使用Docker Compose 部署Nexus后初次登录账号密码不正确,并且在nexus-data下没有admin,password

场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/101111611 在上面已经实现部署Nexus后,初次登录的默认账户密码: admin admin123 但是在进行登录时却提示 密码不正确后者没权限,根据提示密码文件的位置在nexus-data/admin.password下. 因为上面在docker-compose.yml文件

CentOS7.X环境下基于docker安装部署RabbitMQ集群

1.IP地址规划(将信息配置到/etc/hosts中)主机名 IP地址RabbitMQ01 192.168.8.131RabbitMQ02 192.168.8.132RabbitMQ03 192.168.8.133RabbitMQ04 192.168.8.1342.RabbitMQ集群安装(1)四个节点同时运行,下载RabbitMQ镜像[[email protected]~]# docker pull rabbitmq:3-management(2)四个节点分别运行,启动RabbitMQ容器 [

使用docker安装部署Spark集群来训练CNN(含Python实例)

使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器,每台有8个tesla-GPU,然而平时做实验都只使用了其中的一个GPU,实在暴遣天物! 于是想用spark来把这些GPU都利用起来.听闻d

运维人员的解放----Docker快速部署

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 因为VM 的 Hypervi

基于docker 如何部署surging分布式微服务引擎

1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎,再把业务进行剥离, 通过配置路径就能驱动加载业务模块,这样的细粒度设计,能更加灵活从业务中针对于对象加以细分,能更加灵活的拆分聚合服务.而这篇文章我们来谈谈基于docker 如何部署 surging源码下载 2.概述 容器,就是用来存放镜像的器皿,而镜像是构建成的一个轻量的.独立的.可执行