zoukankan      html  css  js  c++  java
  • docker的使用教程

    让我们带着问题学习docker

    Docker是什么?为什么要使用docker?

      可能云计算的方向的并不陌生,Docker属于Linux容器的一种封装,提供简易容器使用接口,是目前流行的容器解决方案. Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就产生一个虚拟的容器.

       为什么使用Docker?

      1)  更快速的交付和部署,而且容器启动很快的,秒级别,但是在spring boot项目整合,启动时间依然很长,后续如果找到原因会分享出来

      2)更高效的虚拟化和更轻松的迁移和扩展:一次打包,到处运行

      3)更简单的管理

    Docker打包建议在linux环境下,我的linux是Centos 7

      补充一下yum安装原理

    /**
    
    使用yum没少安装linux中软件,有想过其中的原理吗?
    
    YUM(缩写"Yellow dog Updater Modified"),是一个软件包管理器,yum从指定的
    自动下载RPM包并安装,能够很好解决依赖关系的问题地方
    
    YUM的基本工作原理
    
    服务器端:: 在服务器端存放所有RPM软件包,然后分析每个RPM文件的依赖关系,将
    这些数据记录成文件存放在服务器的某指定目录内
    
    客户端:如果需要安装某个软件时,先下载服务器上面的记录的依赖性关系文件,可通过WWW或者FTP方式,通过对服务器端下载的记录数进行分析,然后取得相关软件,一次全部下载下来进行安装
    
    
    **/

    Docker的三个主要概念

      Docker image  :镜像是只读的,镜像中包含所需运行的文件,镜像用来创建container,一个镜像可以运行多个container,镜像可以创建Dockerfile创建,也可以从Docker hub/registry上下载

      Docker container:容器是Docker的运行的组件,启动一个镜像就是一个容器,容器是一个隔离的环境,多个容器之间不会相互影响

    Docker安装

        安装docker只需运行下面的命令

    yum install docker

    安装完成之后,启动docker服务,并设置开机启动

    //开启服务
    systemctl  start docker.service
    //设置开机启动
    systemctl enable docker.service

    查看版本信息

    docker version

    常用的命令

    //拉取docker镜像
    docker pull image_name
    //查看宿主机器上的镜像,docker镜像保存在/var/lib/docker目录下
    docker images
    //删除镜像
    docker rmi  image_name/镜像id
    //查看当前有哪些容器正在运行
    docker ps
    //启动  停止,重启容器的命令
    docker start/stop/restart 容器名字/容器的id
    //后台启动一个容器,如果想进入容器的命令
    docker attach container的名字/id
    //删除容器的命令
    docker 人民 container名字/id
    查看容器的命令
    docker info

    Dockerfile概念

     docker镜像是一个特殊的文件系统,除了提供容器所虚的程序,库,资源,配置文件外.还包含运行时的一些配置参数(如匿名卷,环境变量,用户),镜像中不包含动态的参数,其内容在构建之后就不会再改变了,镜像的定制实际上就是定制每一层所添加的配置文件,如果把每一层修改,安装和构建的命令写入到一个脚本,用这个脚本来构建,定制镜像,这个脚本就是Dockerfile

       Dockerfile是一个文本文件,其内包含一条条的指令(Instruction),有了Dockerfile,当我们需要定制自己额外的需求,只需在Dockerfile上添加或者修改即可,重新生成image

    dockerfile目录及格式

    FROM frolvlad/alpine-oraclejdk8:slim
    VOLUME /tmp
    ADD service-zuul-1.0.0-SNAPSHOT.jar app.jar
    #RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    EXPOSE 80

    这是zuul的dockerfile脚本文件,这里简单减少指令作用

    01 From  构建的镜像继承自某个base image

    FROM <image>
    FROM <image>:<tag>
    FROM <image>@<digest>

      from指令Dockerfile的第一指令,其中tag和和digest是可选的,如果不提供则使用latest

    02 Run  在镜像的构建过程中执行特定的命令,并生成一个中间的镜像

    03  EXPOSE 为构建镜像设置监听端口,使容器在运行时监听

      EXPOSE指令并不会让容器监听host的端口,如果需要,需要在doceker run -p参数来发布到host的某个端口

    04  ENV

    在构建的镜像中设置环境变量,在后续的Dockerfile指令中可以直接使用

    05  ADD

    在构建镜像时,复制上下文中的文件到镜像,这里复制的打包好的springboot 的jar文件

    06 ENTRYPOINT

    指定镜像的执行程序,CMD和ENTRYPOINT至少得使用一个

    07 VOLUME

    指定镜像内的目录为数据卷

    在容器运行的时候,dockerfile会把镜像的数据卷的内容复制到容器中去

    springboot+maven+docker项目搭建

    http://www.cnblogs.com/ityouknow/p/8599093.html

  • 相关阅读:
    [SQL Basics] Indexes
    [DS Basics] Data structures
    [Algorithm Basics] Search
    [Algorithm Basics] Sorting, LinkedList
    [Java Basics] multi-threading
    [Java Basics] Reflection
    [Java Basics] Collection
    SSH basics
    纯css实现三角形
    2015年百度实习生前端笔试题上海卷a
  • 原文地址:https://www.cnblogs.com/developerxiaofeng/p/9120786.html
Copyright © 2011-2022 走看看