• 对docker一些认知


    关于docker(应用容器引擎)        

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

    一个完整的Docker有以下几个部分组成:
    1. dockerClient客户端
    2. Docker Daemon守护进程
    3. Docker Image镜像
    4. DockerContainer容器
     docker容器为什么可以跨平台部署

        docker镜像和操作系统没关系,docker最大的价值就是提出了镜像打包技术。首先你的明白什么是docker,什么是镜像,什么是容器,然后你就能明白镜像和操作系统之间的关系。

    docker是一个引擎,是基于内核的一种技术。比如Linux内核,那么它就关心是不是Linux内核,它不关心你是Ubuntu还是CentOS。所以docker也实现了和操作系统的解耦。

    镜像呢是把服务的运行环境打成了一个包,比如tomcat,镜像里面是把除操作系统的内核以外,然后再加上tomcat的二进制包。然后通过docker引擎构建出来一个tomcat的镜像。

    容器呢,比如我们想创建一个tomcat服务,之前的方式是在服务器中通过tar或者是rpm安装一个tomcat,然后在start tomcat;如果我们要安装多台的话我们需要多次手动去操作部署。现在有了tomcat镜像以后,我们可以直接利用镜像创建出多个tomcat来(关系是一个tomcat镜像可以创建出多个tomcat容器-即tomcat服务),把容器看成是tomcat的进程就行。 

    简单来说,一个程序运行,需要操作系统的支持,并且需要访问自己的私有的数据和软件。
    docker是容器,它将所有的访问文件和操作系统的api重新定向了,让应用内感觉自己在一>个独立的操作系统上运行,而docker拦截了api调用,并且把那些全局的对操作系统的访问>进行了包装,使得程序不会真的访问它们。
    因为docker程序访问的是容器包装的api,理论上说,只要在另一个操作系统上实现了这些>容器的api,就可以把程序移植上去,因为程序不直接和操作系统打交道,感觉不到不同系>统的不同。

    为什么使用docker部署服务

    Docker是一个轻量级的虚拟化解决方案,你可以实现秒级的虚拟机启动、非常轻量级的虚拟化。个人使用理解看来,它可以实现一个类似于版本管理Git一样的轻量化的状态保存。
    Docker有两个非常重要的概念: 镜像和容器。
    镜像是呈载容器的实体,所有容器都是运行在镜像之上。用版本管理的角度来看,镜像就像是某一个节点,它可以派生出不同的分支,你可以在不同分支上做不同的事情。可以想象成一棵树,最基本的镜像是主树干,主树干可以分出旁支树干,而旁支树干可以分出更细的旁支,而树干上可以生长树枝。
    比如,你使用Docker,从官方仓库下载一个ubuntu镜像,把它作为最基础的镜像。然后在上面运行一个容器,这个容器里下载Nginx,再以这个容器为基础生成一个新的镜像,以后这个镜像生成的容器就都是ubuntu+nginx为基础。但是你工作环境可能需要你使用Apache来工作,你也想有一个ubuntu+apache为基础的镜像,于是你可以使用最基础的ubuntu镜像运行一个容器,在里面下载安装Apache,然后以这个容器为基础,保存一个ubuntu+apache的镜像,以后在这个镜像基础上运行的所有容器都拥有了一个apache环境。

    常用的一些操作:

    1.查看正在运行的容器

      docker ps  

      docker ps -a  为查看所有的容器,包括已经停止的

    2.查看容器日志:(动态查看)

      docker logs -f <容器名orID>  

    3.删除所有容器:(没有亲测)

      docker rm $(docker ps -a -q)

    4.删除单个容器:

      docker rm <容器名or ID>

    5.停止、启动、杀死一个容器:

    1. docker stop <容器名orID>
    2.  docker start <容器名orID>
    3.  docker kill <容器名orID>

    6.查看所有镜像:

      docker images

    7.查看容器的root用户密码:

      docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1

      ps:因为docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到redmine容器的root用户的密码了。

    8.在容器<IMAGE_ID>开启一个交互模式的终端:

      docker exec -it <IMAGE_ID>  /bin/bash :-t 分配一个虚拟终端;-i 标准输入给容器  /bin/bash 执行bash脚本

      

  • 相关阅读:
    程序员修炼之道阅读笔记02
    第十五周课堂练习-查找最长单词链
    文件读写总结
    第十五周
    暑假总结1
    软件工程课程总结
    第十六周总结
    用户场景分析
    学期课后个人总结
    第十五周总结
  • 原文地址:https://www.cnblogs.com/fancyl/p/9681965.html
Copyright © 2020-2023  润新知