Docker是一个开放的平台,将应用和基础设施分隔开来, 方便快速的交付软件。利用docker的提供的方法可以快速的测试和部署代码,显著的减少写代码和部署直接的延迟。

Docker 平台(The Docker platform):

  container:单独的可以打包运行应用的环境。这些隔离、安全的环境可以让你在主机上同时运行许多container,因为不需要多余的虚拟机监控程序,因此container是很轻量级的,但是它可以直接运行在主机的内核上,因此相比虚拟机,你可以在你给的硬件上运行更多的容器。

Docker provides the ability to package and run an application in a loosely isolated environment called a container.

  Docker 提供了工具和平台让你管理你容器的生命周期。

  • 在容器中开发你的应用和支持组件
  • 容器成为你开发和测试的独立单元
  • 当你准备好在生产环境部署你的应用时,它可以作为一个容器或者编排的服务。无论在你的生产环境是本地数据中心还是云提供的,或者二者的混合,容器的工作方式都是一样的。

Docker 引擎(Docker Engine):

  • Docker 引擎是客户端-服务端的应用(c/s client-server),有如下重要的组件:
  • 守护进程:A server which is a type of long-running program called a daemon process (the dockerd command).
  • REST API: A REST API which specifies interfaces that programs can use to talk to the daemon and instruct it what to do.
  • 客户端:A command line interface (CLI) client (the docker command).

    

  可以使用CLI或者REST API 通过脚本或者CLI命令和docker 守护进程进行交互。

  守护进程创建并管理docker对象。如容器,镜像,网络和卷等。

使用Docker可以做什么?

快速,持续交付你的应用(Fast, consistent delivery of your applications)

Containers are great for continuous integration and continuous delivery (CI/CD) workflows.

响应式部署和扩展(Responsive deployment and scaling)

在同样的硬件上运行更多的工作负载(Running more workloads on the same hardware)

Docker架构(Docker architecture)

Docker 采用C/S架构,客户端发送命令给docker守护进程,去构建,运行,分发你的docker容器。客户端和守护进程可以运行在同一个机器上,也可以通过客户端连接远程的docker守护进程。docker客户端和守护进程通过REST API,UNIX 端口 或者网络接口进行通信。

  

Docker守护进程 Docker daemon (dockerd):

  监听dockerAPI 请求和管理docker对象(镜像,容器,网络,卷)一个docker的守护进程同样可以与其他docker守护进程交互去管理其他docker服务。

Docker客户端 Docker client(docker):

  docker客户端是和docker交互的主要方式,当你使用命令例如:docker run,客户端会通过Docker API发送请求给dockerd。docker客户端可以和多个守护进程交互。

Docker registries:

  用来存储docker镜像。You can even run your own private registry. If you use Docker Datacenter (DDC), it includes Docker Trusted Registry (DTR).

  当使用docker pull 或者docker run命令,需要的镜像会在你配置的仓库拉取下来。当你用docker push命令,你的镜像就会推送到你配置的远程仓库。

Docker 对象(Docker objects):

  镜像(IMAGES):An image is a read-only template with instructions for creating a Docker container. Often, an image is based on another image, with some additional customization.

  容器(CONTAINERS):A container is a runnable instance of an image. You can create, start, stop, move, or delete a container using the Docker API or CLI.

  docker run command:

$ docker run -i -t ubuntu /bin/bash

  当你运行这个命令后,会发生如下事情:

  1. 如果你本地没有ubuntu,docker会去你配置的仓库拉取,和手动运行docker pull ubuntu 一样。
  2. docker创建了一个新的容器,和手动运行docker container create 命令一样。
  3. docker分配一个可读写的文件给容器作为它的最后一层,它允许容器在本地环境中去创建或修改。
  4. docker会通过默认网络去连接容器,这个是因为你没有给他分配任何网络选项,包含分配一个IP地址给容器。默认情况下,容器会通过主机的网络去连接外部网络。
  5. docker 启动容器并执行/bin/bash。因为容器以交互的方式连接到终端(由于-i 和-t 标签),你可以用你的键盘去输入内容而通过终端去显示输出结果。
  6. 当你输入 exit 结束 /bin/bash 命令,容器停止了但是并未删除,你可以重新启动它或者删除它。

SERVICES:

  允许跨多个docker守护进程扩展容器,这些守护进程通过docker API进行通信。一个服务允许你定义所需的状态,例如在给定时间提供足够数量可用的服务。默认情况下,服务会负载到每一个工作节点。

CentOS安装docker:https://docs.docker.com/install/linux/docker-ce/centos/

Docker run hello-world

启动docker:systemctl start docker

运行hello world:docker run hello-world

[root@tiandz ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:d1668a9a1f5b42ed3f46b70b9cb7c88fd8bdc8a2d73509bb0041cf436018fbf5
Status: Downloaded newer image for hello-world:latest Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
. The Docker client contacted the Docker daemon.
. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/ For more examples and ideas, visit:
https://docs.docker.com/get-started/

官方文档:https://docs.docker.com/engine/docker-overview/

Docker 基础入门的更多相关文章

  1. Docker基础入门

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

  2. 小白学 Python 爬虫(4):前置准备(三)Docker基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  3. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  4. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  5. docker基础入门理解

    本文简单的介绍了一下docker的一些优点,以及使用方法 1. 理解docker 1.1 docker是什么? 1.2 为什么要使用Docker? 2. docker安装 3. docker-容器,镜 ...

  6. docker基础入门之二

    一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和ke ...

  7. 容器技术之Docker基础入门

    前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...

  8. Docker系列01—Docker 基础入门

    一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...

  9. docker基础入门之一

    一.概述 1.传统虚拟化技术: 纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统: 硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Intel-VT技术等,具有更高的运行效率: 解决方 ...

  10. Docker基础入门实践

    原文地址 基本概念 Docker三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 镜像 镜像可以理解为只读模板,如包含一个centos操作系统环境 容器 Do ...

随机推荐

  1. Hadoop学习2—伪分布式环境搭建

    一.准备虚拟环境 1. 虚拟环境网络设置 A.安装VMware软件并安装linux环境,本人安装的是CentOS B.安装好虚拟机后,打开网络和共享中心 -> 更改适配器设置 -> 右键V ...

  2. Hadoop学习1—浅谈hadoop

    大数据这个词越来越热,本人一直想学习一下,正巧最近有时间了解一下.先从hadoop入手,在此记录学习中的点滴. 什么是hadoop? What Is Apache Hadoop? The Apache ...

  3. JavaScript - 代码片段,Snippets,Gist

    求n个数字的累加和 递归实现 function getSum(x) { if (x == 1) { return 1; } return x + getSum(x - 1); } var result ...

  4. docker aufs存储驱动文件系统

    Docker aufs存储驱动layer.diff.mnt目录的区别 /var/lib/docker/aufs layer子目录: 镜像.镜像历史列表.容器.容器INIT分别有对应的文件.文件名和di ...

  5. Mybatis中mapper.xml的使用

    详解多对多,mybatis多对多查询(xml方式和注解方式) 链接:https://blog.csdn.net/qq_42524262/article/details/98383977 链接:http ...

  6. ANSYS 瞬态热分析---零件在水中冷却

    目录 1. 案例 2. APDL分析 1. 案例 一个温度为300℃的铜环和一个温度为200℃的铁环,放置到22℃的水中进行淬火.水桶为铁质的圆形.分析中忽略水的流动. 材料参数 热性能 铜 铁 水 ...

  7. xadmin 后台管理

    xadmin后台管理 安装:luffy虚拟环境下 >: pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 注册 ...

  8. Ext里dialog弹窗关闭与父窗口刷新问题总结

    1.弹出弹窗的js代码 var dlg = new J.dialog({ id: 'unDelTel', title:'缴费', page:encodeURI('<%=basePath%> ...

  9. sql server alter column identity

    上网找 alter column identity 语句,将表中的一个字段调整成自动新增.发现没有. 跟踪了一下sql server 执行这一动作的语句,发现是新建了新表,将字段修改成自动新增,然后将 ...

  10. Android的界面组件使用之ImageButton和ImageView,ImageSwitcher和GridView

    (一)ImageButton和ImageView ImageButton与Button的功能完全相同,只是ImageButton上显示的是图像,并且每个ImageButton组件都必须指定一个id,以 ...