Docker 入门介绍
Docker是什么
从发布到现在 docker一直很受关注,在一定程度是改变了软件行业
如果你还不知道 docker 是什么是不是有点out了,接下来我们来介绍docker是什么,解决了什么问题,好处在哪里。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
docker的优点
1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
- 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
- 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
* 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
docker 的安装
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。
你可以在 https://docs.docker.com/desktop/ 参考官方文档来安装 ce版本
安装完成之后 我们可以使用 docker 命令来 管理docker
HelloWorld
接下来我们使用docker run 命令来在容器内输出hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
各个参数解析:
docker: Docker 的二进制执行文件。
run: 与前面的 docker 组合来运行一个容器。
ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
容器是如何工作的
Docker架构的核心组件包括:
- Docker客户端:Client
- Docker服务器:Docker daemon
- Docker镜像:Image
- Registry
- Docker容器:Container
Docker采用的是Client/Server架构。客户端向服务器发送请求,服务器负责构建、运行和
分发容器。客户端和服务器可以运行在同一个Host上,客户端也可以通过socket或RES
API与远程的服务器通信。
Docker客户端
最常用的Docker客户端是docker命令。通过docker我们可以方便地在Host上构建和
运行容器。
docker支持很多操作(子命令)除了docker命令行工具,用户也可以通过RESTAPI与服务器通信。
Docker服务器
Docker daemon是服务器组件,以Linux后台服务的方式运行
Docker daemon运行在Dockerhost上,负责创建、运行、监控容器,构建、存储镜像
默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户
端请求,需要在配置文件中打开TCP监听,步骤如下:
编辑配置文件/etc/systemd/system/multi-user.target.wants/docker.service,在环境变量
ExecStart后面添加-Htcp://0.0.0.0,允许来自任意IP的客户端连接,[Service]
Type-not y
ExecStart=/usr/bin/dockerd-H fd://-H tcp://0.0.0.0.0
ExecReload=/bin/kill-s HUP SMAINPID
如果使用的是其他操作系统,配置文件的位置可能会不一样。
- 重启Dockerdaemon
rooteubuntu:~# systemctl daemon-reload
rooteubuntu:~# systemctl restart docker.service
- 服务器IP为192.168.56.102,客户端在命令行里加上-H参数,即可与远程服务器
info子命令用于查看Docker服务器的信息。
Docker镜像
可将Docker镜像看成只读模板,通过它可以创建Docker容器。
例如某个镜像可能包含一个Ubuntu操作系统、一个ApacheHTTPServer以及用户开发的Web应用。
镜像有多种生成方法:
- 从无到有开始创建镜像;
- 下载并使用别人创建好的现成的镜像;
- 在现有镜像上创建新的镜像。
可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作Dockerfile,通过执
行 docker build 命令可以构建出 Docker 镜像
Docker容器
Docker容器就是Docker镜像的运行实例。
用户可以通过CLI(Docker)或是API启动、停止、移动或删除容器。可以这么认为,对
于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。
Registry
Registry是存放Docker镜像的仓库,Registry分私有和公有两种。
Docker Hub(https://hub.docker.com/)是默认的Registry,由Docker公司维护,上面有数
以万计的镜像,用户可以自由下载和使用。
出于对速度或安全的考虑,用户也可以创建自己的私有Registry。后面我们会学习如何搭
建私有Registry。
docker pull 命令可以从 Registry下载镜像。
dockerrun命令则是先下载镜像(如果本地没有),然后再启动容器。
Docker 入门介绍的更多相关文章
- 学习Mysql过程中拓展的其他技术栈:Docker入门介绍
一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...
- Docker入门-介绍和安装
Docker容器 Docker是什么 Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于 ...
- Docker入门介绍
Docker是一种虚拟化技术 刚開始看Docker,感觉非常抽象"An open platform for distributed applications for develo ...
- Docker入门教程(一)介绍
http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...
- Docker入门教程(九)10个镜像相关的API
Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...
- Docker入门教程(八)Docker Remote API
Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...
- Docker入门教程(七)Docker API
Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...
- Docker入门教程(六)另外的15个Docker命令
Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...
- Docker入门教程(五)Docker安全
Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...
随机推荐
- Java学习的第五十五天
1.例11.1继承学生类 import java.util.Scanner; import java.util.*; public class Cjava { public static void m ...
- python制作电脑可执行exe文件
python获取IP.主机名.mac地址 关注公众号"轻松学编程"了解更多. 制作get_IP.py文件: import socket import uuid # 获取主机名 ho ...
- K8s之实践Pod深入理解
K8s之实践Pod深入理解 1.同一pod下的nginx+php+mysql nginx+php+mysql.yaml文件 --- apiVersion: v1 kind: Secret meta ...
- mysql存储过程加事务
create procedure sp_sw2() begin declare error int default 0; declare continue handler for SQLEXCEPTI ...
- 【webSocket】实现原理
服务端文件: import base64 import hashlib import socket # 将请求头格式化成字典 def get_headers(data): ""&q ...
- Git常用命令【ZeyFra】
// 账户设置 git config --global user.name "ZeyFra" git config --global user.email "zeyfra ...
- http代理阅读4 响应缓存处理
if (c->read->ready) { ngx_http_upstream_process_header(r, u); //读事件触发 准备处理http头部信息 return; } 向 ...
- ceph erasure默认的min_size分析
引言 最近接触了两个集群都使用到了erasure code,一个集群是hammer版本的,一个环境是luminous版本的,两个环境都出现了incomplete,触发的原因有类似的地方,都是有osd的 ...
- Ceph根据Crush位置读取数据
前言 在ceph研发群里面看到一个cepher在问关于怎么读取ceph的副本的问题,这个功能应该在2012年的时候,我们公司的研发就修改了代码去实现这个功能,只是当时的硬件条件所限,以及本身的稳定性问 ...
- 记最近一次ceph故障修复
前言 所谓吃一堑长一智,每次面对问题才是最好的学习机会,在面对问题的时候,尽量是能够自己去解决,或者去尝试能够最接近答案,确实无法解决再去寻求他人帮助,这样成长的会更快一些,在学校读书做题的时候,老师 ...