zoukankan      html  css  js  c++  java
  • Docker学习

    Docker是什么

    1、Docker通俗解释

    就像一个码头工人,把可以运行的 Linux 系统装载到一个个容器(container)里,这些容器就像一个个“装载了 Linux 系统”的集装箱。就像每个集装箱都有自己的货物一样,每个容器都像一个独立的 Linux 系统一样可以运行指定的程序。比如,一个容器可以作为 Web 服务器,另一个容器作为数据库服务器。集装箱之间互不影响。同样,容器之间也都是独立的,一个容器不能操作另一个容器的资源,因此可以很好地隔离运行环境。每个容器都像一个独立的操作系统,拥有操作系统运行需要的所有配置和代码。

    Docker,或者准确一点说,容器技术,在近几年里几乎成为了应用分发和集群部署的默认技术了。

    准确定义:

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。 

    Docker通常用于如下场景:

    • web应用的自动化打包和发布;
    • 自动化测试和持续集成、发布;
    • 在服务型环境中部署和调整数据库或其他的后台应用;
    • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

    2、Docker在 Windows 上能用吗?

    可以的。

    但是 Docker 是起源于 Linux 上的技术。

    Docker 是基于 Linux 内置的 Namespace 和 CGroup 等系统内隔离机制而抽象出来的一种轻虚拟化技术。与虚拟机相比,它以一种轻量级的方式实现了运行空间的隔离。如果物理机是一幢住宅楼,虚拟机就是大楼中的一个个套间,而容器技术就是套间里的一个个隔断。不难理解,Docker 作为一种隔断,它并不能基于一种内核(Linux)提供另一种内核(Windows)的虚拟化运行环境。所以,基于 Linux 的 Docker 是不支持运行 Windows 应用的。

    早在 Docker 之前,Linux 就已经提供了今天的 Docker 所使用的那些基础技术。当年 Docker 仿佛一夜之间突然火爆全球的背后,技术上的积累并不是瞬间完成的。这一切在 Windows 上显得有些滞后。在 Docker 已经众所周知的时候,Windows 系统却根本没有类似的机制,更别提 Windows 独有的工具链和实践方法了。所以,我们看到,早期 Windows 与 Docker 的交集只是为其提供应用开发环境。

    3、boot2docker 与 Docker for Windows
    可以在 Windows 开发面向 Docker 部署的应用程序——Windows 的桌面体验比 Linux 好太多,所以很早就出现了在异构操作系统上以虚拟机的形式运行 Docker 的项目出现,也就是 boot2docker。它既支持 Windows,也支持 macOS。

    后来,Docker 公司开始推出自己的 Docker for Windows 工具包,它旨在为开发人员在 Windows 上开发面向 Docker 的应用程序提供完整的工具链,其中包括运行环境、客户端,Docker Swarm 编排工具和其他工具。Docker for Windows 中负责运行环境配置的工具是 Docker Machine。与 boot2docker 类似,Docker Machine 也会在 Windows 上创建一个 Linux 虚拟机,用于运行 Docker 引擎。也就是说,这个环境也只支持 Linux 的应用程序格式的,并不支持 Windows 应用程序的运行。

    4、下面是更官方的解释:

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于2013年3月以 Apache2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。

    Docker 使用 Google 公司推出的 Go 语言进行开发和实现,在 Linux 操作系统上提供了一个软件抽象层和操作系统层虚拟化的自动管理机制。Docker 利用了 Linux 的资源分托机制(cgroups 以及命名空间)来创建独立的软件容器。Linux 对命名空间的支持完全隔离工作环境中的应用程序,包括进程树,网络,用户 ID 与挂载文件系统;而 cgroups 则提供了资源隔离,包括 CPU,内存等。Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大简化了容器的创建和维护,使得 Docker 技术比虚拟机技术更为轻便快捷。

    5、Docker 的初衷

    是创建软件程序可移植的轻量容器,让软件可以在任何安装了 Docker 的主机上运行,而不用关心底层操作系统 

    Docker安装

    ubuntu18.04安装docker最新版

    Docker国内镜像源 

    可以在阿里云创建自己的容器镜像。

    阿里云容器  服务:https://cr.console.aliyun.com/

    首页点击“创建我的容器镜像”  得到一个专属的镜像加速地址,类似于“https://1234abcd.mirror.aliyuncs.com”

    Docker重要概念

    1、Docker程序

    Docker系统有两个程序:docker服务端和docker客户端

    其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

    检查docker的版本,这样可以用来确认docker服务在运行并可通过客户端链接。

    提示:可以通过在终端输入docker命令来查看所有的参数。

     docker version 【linux上安装,执行】

    2、仓库

    用仓库来包括用户构建的镜像

    分 公有:Docker Hub(官方)

       私有

    3、镜像

    容器的基石。容器基于镜像启动和运行,镜像好比容器的源代码

    它是一个层叠的只读文件系统【分层文件】

    1、搜索可用的docker镜像

    使用docker最简单的方式莫过于从现有的容器镜像开始。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是: index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。

    使用命令行的工具来检索名字叫做tutorial的镜像。

    命令: docker search tutorial

    2、使用docker命令来下载镜像

    使用docker pull命令即可。在docker的镜像索引网站上面,镜像都是按照 用户名/ 镜像名的方式来存储的。

    有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用 镜像名来检索到。

    执行pull命令的时候要写完整的名字,比如"learn/tutorial"。

     docker pull learn/tutorial

    4、容器 

    通过镜像来启动 。【有点像类(镜像)和对象(容器)】

    容器是docker的执行单元,容器中可包括客户的一个或多个进程。

    启动和执行阶段,,会增加一个可写层

    更多参考:Null的博客

  • 相关阅读:
    [LeetCode] 329. Longest Increasing Path in a Matrix
    [LeetCode] 1180. Count Substrings with Only One Distinct Letter
    [LeetCode] 1100. Find K-Length Substrings With No Repeated Characters
    [LeetCode] 312. Burst Balloons
    [LeetCode] 674. Longest Continuous Increasing Subsequence
    [LeetCode] 325. Maximum Size Subarray Sum Equals k
    [LeetCode] 904. Fruit Into Baskets
    [LeetCode] 68. Text Justification
    [LeetCode] 65. Valid Number
    [LeetCode] 785. Is Graph Bipartite?
  • 原文地址:https://www.cnblogs.com/peterYong/p/11589408.html
Copyright © 2011-2022 走看看