Docker 基础入门
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
dockerdcommand). - 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
dockercommand).

可以使用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
当你运行这个命令后,会发生如下事情:
- 如果你本地没有ubuntu,docker会去你配置的仓库拉取,和手动运行docker pull ubuntu 一样。
- docker创建了一个新的容器,和手动运行docker container create 命令一样。
- docker分配一个可读写的文件给容器作为它的最后一层,它允许容器在本地环境中去创建或修改。
- docker会通过默认网络去连接容器,这个是因为你没有给他分配任何网络选项,包含分配一个IP地址给容器。默认情况下,容器会通过主机的网络去连接外部网络。
- docker 启动容器并执行/bin/bash。因为容器以交互的方式连接到终端(由于-i 和-t 标签),你可以用你的键盘去输入内容而通过终端去显示输出结果。
- 当你输入 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 基础入门的更多相关文章
- Docker基础入门
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- 小白学 Python 爬虫(4):前置准备(三)Docker基础入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- Docker基础入门及示例
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...
- docker基础入门理解
本文简单的介绍了一下docker的一些优点,以及使用方法 1. 理解docker 1.1 docker是什么? 1.2 为什么要使用Docker? 2. docker安装 3. docker-容器,镜 ...
- docker基础入门之二
一.docker文件系统: linuxFS包括boot file system 和 root file system boot file system (bootfs),包含bootloader和ke ...
- 容器技术之Docker基础入门
前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...
- Docker系列01—Docker 基础入门
一.初识Docker和容器 1.1 什么是docker 容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. 容器? 容器就是在隔离的环 ...
- docker基础入门之一
一.概述 1.传统虚拟化技术: 纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统: 硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Intel-VT技术等,具有更高的运行效率: 解决方 ...
- Docker基础入门实践
原文地址 基本概念 Docker三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 镜像 镜像可以理解为只读模板,如包含一个centos操作系统环境 容器 Do ...
随机推荐
- mysql学习笔记(三):unsigned理解以及特殊情况
UNSIGNED UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的unsigned含义相同.例如,INT的类型范围是-2 147 483 648 - 2 147 483 647 ...
- C语言:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,
//将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数返回. //关注点:使用*(t+n)的方式可以不改变指针的指向,像数组一样处理 ...
- jdk rpm安装实现
wget https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211 ...
- Linux - 删除文件的正确方式
mv <file> /tmp/ cp <file> /opt/file.bak rm
- pikachu-搜索型注入 #手工注入
1.搜索型注入漏洞产生的原因: 在搭建网站的时候为了方便用户搜索该网站中的资源,程序员在写网站脚本的时候加入了搜索功能,但是忽略了对搜索变量的过滤,造成了搜索型注入漏洞,又称文本框注入. 2.搜索型注 ...
- SQL 函数 排序 等基础操作 DDL DML DQL 用法和<> <=>等
sql基础汇总 --根据函数别名排序 --排序规则,默认是升序 sleect LENGTH(NAME) nameLength from user ORDER BY nameLength DESC -- ...
- Java IO流详解(一)——简单介绍
文件在程序中是以流的形式来传输的.所以用Java来传输文件就得使用到Java IO流. 1.流的概念和作用 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象<Thinkin ...
- kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)
一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...
- Update(Stage4):sparksql:第5节 SparkSQL_出租车利用率分析案例
目录: 1. 业务2. 流程分析3. 数据读取5. 数据清洗6. 行政区信息 6.1. 需求介绍 6.2. 工具介绍 6.3. 具体实现7. 会话统计 导读 本项目是 SparkSQL 阶段的练习项目 ...
- 与英特尔分道扬镳,苹果的5G业务掉队了吗?
5G概念已经大热,越来越多的厂商推出相关产品,中国骄傲之华为不仅在5G通信标准制定方面参与感非常强,也先于竞争对手推出5G智能终端,连同三星/Vivo等也纷纷推出5G终端,而作为智能手机市场绝对的利润 ...