zoukankan      html  css  js  c++  java
  • docker部署

    这两天使用docker容器部署了一下项目中的东西,在这里进行一些相关的资料整理。此篇博文的结构如下:

    一、我印象中的docker

    二、如何使用docker

    三、一些原理

    四、扩展学习

    一、我印象中的docker

      docker直译为码头搬运工人,而我更倾向于将之翻译为:集装箱管理员。

      docker可以为应用分配出一个个image(个人理解,image就是一个可以以线程运行的操作系统模版,这个操作系统里可以加入各种各样的软件,例如:tomcat、telnet等等)。这个image一旦运行起来,即是一个instance,或者可以理解为以线程运行的简化操作系统(这个进程是可以由docker进程,或者叫docker容器管理的)。

      简单说就是:docker维护了一个个独立的线程,而这些线程即是一个个简化的操作系统。在这些操作系统中,我们可以布置属于自己的应用或者工具,用于运维。

      

    二、如何使用docker

      按照如上理解,docker的使用至少需要进行如下步骤:

      (1)安装docker容器;

      (2)在docker容器中创建image;

      (3)通过docker中的image生成运行实例;

      (1)安装docker,这个没什么技术含量,相当于在linux上安装一个软件,附上帮助链接:

        (a)官方文档:http://www.docker.org.cn/book/install/supported-platform-17.html

        (b)我使用的参考博客:http://blog.csdn.net/fgf00/article/details/51893771

        (c)简单说来两行命令

          yum install -y epel-release

          yum install docker-io

      (2)在容器中创建image

        image可以通过三种方法获得

        (a)从docker云端仓库获得

          在docker hub中查找centos镜像:docker search -s 10 centos

          从docker hub中拉取centos镜像:docker pull centos

        (b)从本地上传镜像

          编写Dockerfile内容如下。

          内容规范参考https://www.cnblogs.com/wangmo/p/6811321.html或者https://docs.docker.com/engine/reference/commandline/search/#description

    #以tomcat:8-jre7 镜像为基础,生成镜像,此处tomcat:8-jre7 为centos系统为基础,搭建的jdk1.7、tomcat8的镜像
    FROM tomcat:8-jre7 
    
    #author
    MAINTAINER chendeming
    
    #environment,一个简要的环境说明
    ENV tomat8-java1.7
    
    #操作需要执行的操作
    RUN rm -rf /usr/local/tomcat/webapps/ROOT
    #将Dockerfile所在目录下的ROOT目录拷贝至镜像中/usr/local/tomcat/webapps/ROOT处
    COPY ./ROOT /usr/local/tomcat/webapps/ROOT

           将镜像构建生成(如下命令要在Dockerfile所在目录下执行)

          docker build -t "cloud:latest" .

          docker build –t “镜像名称:标签(默认标签为latest)” .(这个.不能少,用于指向当前目录)

          

          备注:成功标志为执行docker images能够找到cloud这个名字的镜像

        (c)使用导入的方式生成镜像

           docker import ./export.tar可导入通过docker export cloud > export.tar导出的镜像

           备注:也可以使用如下命令进行

        

      (3)通过镜像创建运行实例

        执行命令

          docker run –d –p 8081:8080 –-name cloud001 cloud
          docker run –d –p 对外发布端口:容器内使用端口 --name 运行实例名 镜像名

        成功标志

          docker ps 能够看到一个运行中的docker实例。若没有,执行docker ps -a 看看有没有没能运行起来的实例

      (4)日常的一些docker运维

        docker运行实例操作:

          # 创建一个新的容器并运行一个命令

          在运行实例中执行命令:docker run image_name echo "hello word" 

          在当前运行:docker run -i -t image_name /bin/bash 

          # 查看所有已存在的运行实例

          查看当前所有运行中的实例:docker ps

          查看当前所有状态的实例:docker ps -a

          # 删除运行实例(无论运行状态)

          docker rm `docker ps -a -q`

          docker rm Name/ID  

          # 停止、启动、杀死一个容器
          docker stop Name/ID
          docker start Name/ID
          docker kill Name/ID

          # 从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps
          docker logs Name/ID

          # 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的
          docker diff Name/ID

          # 显示一个运行的容器里面的进程信息
          docker top Name/ID

          # 从容器里面拷贝文件/目录到本地一个路径
          docker cp Name:/container_path to_path
          docker cp ID:/container_path to_path

          

          docker rmi <参数> <镜像>--> 删除某个镜像
          参数:
            -f 强制删除

          docker build <参数> <容器> -->利用DockerFile创建镜像
          参数:
            -t 给镜像添加一个标签[tag]
            -q 安装模式,直接输出结果

        docker云端仓库操作

          docker login -u 用户名 -p 密码 <仓库>--> 登陆到一个Docker镜像仓库[默认Docker Hub]

          # 登出Docker镜像

          docker logout 

    三、一些原理

      如上内容中,很多东西都是个人的理解,在这个部分我将把之前提到的一些说法转换为业界内的说法。

      

      Docker有三个组件和三个基本元素
      三个组件分别是:
        Docker Client是用户界面,它支持用户与Docker Daemon之间的通信
        Docker Daemon运行于主机上,处理服务请求。
        Docker Index是中央registry[仓库] Hub,支持拥有共有与私有访问权限的Docker容器镜像的备份

      三要素分别是:
        Docker Containers负责应用程序的运行,包括操作系统、用户添加的文件以及元数据。即我上面说的启动的线程。
        Docker Images是一个只读模板,用来运行Docker容器。即我上面说的image,或者镜像
        DockerFile是文件指令集,用来说明如何自动创建Docker镜像,这个是创建部分以本地方式上传中的Dockerfile。

        Docker 镜像是一个构建容器的只读模板,它包含了容器启动所需的所有信息,包括运行程序和配置数据。Docker镜像是由文件系统叠加而成的。自低而上分别是:引导文件系统[bootfs] -> root文件系统rootfs] -> 只读文件系统-> 读写文件系统

        root文件系统+只读文件系统被称为镜像,镜像是可以叠放的,最下层的称为基础镜像[base image、下面层的为父镜像,当docker容器启动时。docker会加载最顶层的读写文件系统,我们程序就是在读写层中执行的

        Docker 容器类似于一个轻量级的沙盒,Docker利用容器来运行和隔离应用[容器间是线程隔离的。容器是镜像创建的应用运行实例,容器中可以运行一个或多个进程。Docker容器可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。

     这里写图片描述

    四、扩展学习

      docker源码:http://www.infoq.com/cn/articles/docker-source-code-analysis-part2/

      基础概念:http://blog.csdn.net/u013468915/article/details/53977759

      docker命令:https://www.server110.com/docker/201411/11122.html

      docker导入导出:http://blog.csdn.net/opensure/article/details/46559071

  • 相关阅读:
    POJ 1680 Fork() Makes Trouble
    课堂改进意见
    梦断代码 读后感3
    梦断代码 读后感2
    找一问题
    软件评价——搜狗输入法
    《梦断代码》读后感1
    站立会议第十天
    站立会议第九天
    站立会议第八天
  • 原文地址:https://www.cnblogs.com/chendeming/p/8202477.html
Copyright © 2011-2022 走看看