Linux----Docker简介与部署

docker简介

docker是一个开源的项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的go语言实现。项目后来加入了Linux基金会,遵从了Apache2.0协议,项目代码在GitHub上进行维护

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

一个完整的Docker有以下几个部分组成:

Docker Client:客户端

Docker Daemon:守护进程

Docker Images:镜像

Docker Container:容器

Docker Registry:镜像仓库

Docker特性

建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。

  1. 构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。
  2. PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础
  3. 因为其标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来
  4. 因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源

docker与传统虚拟化的比较

     

从对比图中可以看出docker的优势

1.更快速的交付和部署

  • docker在整个开发周期都可以完美的辅助你实现快速交付。
  • docker允许开发者在装有应用和服务本地容器开发。可以直接集成到可持续开发流程中
  • docker容器的启动时间是秒级的,大量地节约了开发、测试、部署的时间

2.高效的部署和扩容

  • docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、pc、服务器。
  • 这种兼容性可以让用户把一个应用程序从平台直接迁移到另外一个
  • docker的兼容性和轻量型可以很轻松的实现负载的动态管理,可以快速扩容或者方便的下线应用和服务,趋近于实时

3.更高的资源利用率

  • docker对系统资源的利用率很高,一台主机上可以同时运行数据个docker容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行10个不同的应用就要10个虚拟机,而docker只需要启动10个隔离的应用即可

4.更简单的管理

  • 使用docker,只需要小小的修改,就可以替代以往的大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理

docker的核心组成

1.image(镜像)

  • Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。可以把它称为一个Apache镜像。

2.repository(仓库)

  • Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。
  • 根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最大的公开仓库是官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下载。国内不少云服务提供商(如时速云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。

3.container(容器)

Docker容器类似于一个轻量级的虚拟机,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。

4.docker的引擎

  • 创建和管理容器的工具,通过读取镜像来生成容器,并负责从仓库拉取镜像或提交镜像到仓库中

docker的架构

  • docker使用c/s架构,client通过接口与server进程通信实现容器的构建,运行和发布。
  • client和server可以运行在同一台集群中,也可以实现跨主机远程通信

docker的部署以及镜像加速

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

加载docker源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker
yum install -y docker-ce

关闭安全性功能(可以选择永久性关闭),开启docker服务


关闭防火墙
systemctl sto firewalld
systemctl disable firewalld

永久关闭保护功能
setenforce 0
vim /etc/selinux/config
SELINUX=disabled(enabled改为disabled)

开启docker服务
systemctl start docker
systemctl enable docker

由于直接下载镜像,速度很慢,而一般镜像有比较大,所以我们进行镜像加速,使用阿里云的源,即开启阿里云的镜像加速

镜像加速服务配置

重新加载
systemctl daemon-reload

重启服务
systemctl restart decker

下载nginx镜像

[root@localhost docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
c499e6d256d6: Pull complete 
74cda408e262: Pull complete 
ffadbd415ab7: Pull complete 
Digest: sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

[root@localhost tmp]# docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        8 days ago          127MB

 

发布了78 篇原创文章 · 获赞 5 · 访问量 2562

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/105398987