docker基础

docker是什么

  Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
  Docker的初衷也就是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进而发布到不同的平台上运行方案.
  资源独立,环境隔离的一个进程。

docker做什么

Docker能把应用的运行环境及依赖打包成镜像,

在不同的环境无差别地运行成容器。

Docker容器轻量级,即用即销,方便扩缩容。

采用标准框架的应用可将框架(容器)和应用包剥离,不同的应用包都能复用框架提供不同服务。

docker基本概念


docker用GO语言编写
docker 采用C/S模式
docker -d 即可启用daemon模式
docker client有丰富的api实现

  images可以用来创建docker containers,docker提供了一个很简单的机制来创建images或者更新现有的images,你甚至可以直接从其他人那里下载一个已经做好的images

Docker images
  Docker images 就是一个只读的模板。比如:一个image可以包含一个rhel的操作系统,里面安装了apache或者你需要的应用程序。
在这里插入图片描述
Docker registries
  Docker registries 也叫docker 仓库,它有公有仓库和私有仓库2种形式,他们都可以用来让你上传和下载images。公有的仓库也叫 Docker Hub。它提供了一个巨大的image库可以让你下载,你也可以在自己的局域网内建一个自己的私有仓库。

Docker containers
  Docker containers也叫docker容器,容器是从image镜像创建的。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、安全的平台。
在这里插入图片描述

docker底层原理

在这里插入图片描述
namespace:
Namespace是Linux内核提供一种资源隔离的机制。
PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。
每个Namespace里面的资源对其他Namespace都是透明的。
在这里插入图片描述
Cgroup(control group):
Cgroups是Linux内核提供的一种可以限制和审计进程组所使用的物理资源的机制。
在这里插入图片描述
AUFS (AnotherUnionFS):
是支持将不同目录挂载到同一个VFS下的文件系统,并为它们分别设置读写权限。AUFS里有一个类似分层的概念, 对 readonly 权限的层可以逻辑上进行修改。

docker编排工具

Kubernetes: Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能。Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。
Mesos :Mesos最初是由加州大学伯克利分校的AMPLab开发的,后在Twitter得到广泛使用。
Swarm :Swarm是Docker公司在2014年12月初新发布的容器管理工具。和Swarm一起发布的Docker管理工具还有Machine以及Compose。我们来看下Rancher对它们有什么评价。
Fleet: Fleet是一个来自CoreOS的集群管理工具,自诩为“底层的集群引擎”,也就意味着它有望形成一个“基础层”的更高级别的解决方案,如Kubernetes 。Fleet最显著的特点是基于systemd (systemd提供单个机器的系统和服务初始化)建立的,Fleet将其扩展到集群上,Fleet能够读取systemd单元文件,然后调度单个机器或集群。

常用命令

Docker Hub镜像中心、Quary.io和Google Container Registry

docker build -t [name] :构建镜像
docker images :列出本地存储的镜像
docker run --name [imageName] p hostPort:Port -d [baseImage] :基于基础镜像创建一个新容器。这个容器与命令行分离(-d),这意味着可以在后台运行。本机上的端口与容器内端口映射。
curl ip:port :通过ip:port访问应用
docker ps [-a] :列出运行中的容器,展示容器大部分的基础信息。-a答应所有容器,包括运行中的和已经停止的。
docker inspect [containerName] :获取更多的容器信息
docker exec -it [containerName] bash :在已有的容器内部运行shell。已有的容器内部运行bash,bash进程回合主容器进程拥有相同的命名空间。这样可以从内部探索容器:-i,确保标准输入流保持开放。需要在shell中输入命令;-t:分配一个伪终端(TTY)。同时使用两个选项可像平时一样使用shell(缺少第一个选项无法输入任何命令,缺少第二个选项,命令提示符不会显示,并且一些命令会提示TERM变量没有设置)。 ps aux(从容器内列出进程)
docker stop [containerName] :停止容器
codker rm [containerName] :删除容器
docker tag oldImageName newImageName :通过附加标签标注镜像,一个容器镜像可以有多个标签
docker push imageName :推送镜像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值