docker简介和安装

什么是docker?

Docker 的英文翻译是“搬运工”的意思,他搬运的东西就是我们常说的集装箱Container,
Container里面装的是任意类型的App,我们的开发人员可以通过Docker将App变成一种标准化的,可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

从概念上来看Docker和我们传统的虚拟机比较类似,只是更加轻量级,更加方便,Docker和虚拟机最主要的区别有以下几点:
1、虚拟化技术依赖的是物理CPU和内存,是硬件级别的;而我们的Docker是构建在操作系统层面的,利用操作系统的容器技术,所以Docker同样的可以运行在虚拟机上面。
2、我们知道虚拟机中的系统就是我们常说的操作系统镜像,比较复杂;而Docker比较轻量级,我们的可以用Docker部署一个独立的Redis,就类似于在虚拟机当中安装一个Redis应用,但是我们用Docker部署的应用是完全隔离的。
3、我们知道传统的虚拟化技术是通过快照来保存状态的;而Docker引入了类似源码管理的机制,将容器的快照历史版本--记录下来,切换成本非常之低。
4、 传统的虚拟化技术在构建系统的时候非常复杂;而Docker可以通过一个简单的Dockerfile文件来构建整个容器,更重要的是Dockerfile可以手动编写,这样应用程序开发人员可以通过发布Dockerfile来定义应用的环境和依赖,这样对于持续交付非常有利。

image.png
image.png

为什么要用容器

应用容器是个啥样子呢,一个做好的应用容器长得像一个装好了一组特定应用的虚拟机一样,比如我现在想用Redis,那我就找个装好了Redis的容器就好了,然后运行起来,我就能直接使用了。

那为什么不直接装一个Redis呢?肯定是可行的,但是有的时候根据每个人电脑的不同,在安装的时候可能会爆出各种各样的错误,万一你的机器中毒了,你的电脑挂了,你所有的服务都需要重新安装。但是有了Docker或者说有了容器就不一样了,你就相当于有了一个可以运行起来的的虚拟机,只要你能运行容器,Redis的配置就省了。而且如果你想换个电脑,没问题,很简单,直接把容器“端过来”就可以使用容器里面的服务了。

Docker Engine

Docker Enginer 是一个C/S架构的应用程序,主要包括下面几个组件:

  1、常驻后台进程的Dockerd(docker daemon)
  2、一个用来和dockerd交互的 REST API Server
  3、命令行CLI接口,通过和REST API进行交互(我们经常使用的docker命令)
image.png

docker架构

Docker使用C/S(客户端/服务器)体系的架构,Docker客户端与docker守护进程通信,Docker守护进程负责构建,运行和分发Docker容器。Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程使用REST API通过UNIX套接字或网络接口进行通信。


image.png
 1、Docker Daemon: dockerd,用来监听Docker API的请求和管理Docker对象,比如镜像、容器、网段和Volume。
 2、Docker Client: docker,docker client是我们和docker进行交互的最主要的方式方法,比如我们可以通过docker run命令来运行一个容器,然后我们的这个client会把命令发送给上面的Dockerd,让他来做真正的事情。
 3、Docker Registry:用来存储Docker镜像仓库,Docker Hub是docker官方提供的一个公共镜像仓库,而且Docker默认也是从Docker Hub上查找镜像的,当然你也可以很方便的运行一个私有仓库,当我们使用docker pull或者docker run命令时,就会从我们配置的Docker镜像仓库中拉取镜像,使用docker push命令时,会将我们构建的镜像推送到对应的镜像仓库中。
 4、Images:镜像,镜象是一个只读模板,带有创建Docker容器的说明,一般来说的,镜像会基于另外的一些基础镜像并加上一些额外的自定义功能。比如,你可以构建一个基于CentOS的镜像,然后在这个基础镜像上面安装一个Nginx服务器,这样就可以构成一个属于我们自己的镜像了。
 5、Containers:容器,容器是一个镜像的可运行的实例,可以使用Docker REST API或者CLI来操作容器,容器的实质是进程,但与直接在宿主机执行的进程不同,容器进程运行于属于自己独立的命名空间,甚至自己的用户ID空间。容器内的进程试运行一个隔离的环境里,使用起来,就好像是在一个独立于宿主机的系统下操作一样,这样特性使得容器封装的应用比直接在宿主运行更加安全。
 6、底层技术支持:Namespaces(做隔离),CGroups(做资源限制)、UnionFS(镜像和容器分层)the-underlying-technology Docker 底层架构分析

docker安装(https://docs.docker.com/install/

直接前往官方文档选择合适的平台安装即可,比如我们这里想要在centos系统上安装 Docker,这前往地址https://docs.docker.com/install/linux/docker-ce/centos/根据提示安装即可。

安装依赖软件包:

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件仓库,我们这里使用稳定版 Docker,执行下面命令添加 yum 仓库地址:

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

然后直接安装即可:

$ sudo yum install docker-ce

如果要安装指定的版本,可以使用 yum list 列出可用的版本:

$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable

比如这里可以安装18.03.0.ce版本:

$ sudo yum install docker-ce-18.03.0.ce

要启动 Docker 也非常简单:

$ sudo systemctl enable docker
$ sudo systemctl start docker

另外一种安装方式是可以直接下载指定的软件包直接安装即可,前往地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 找到合适的.rpm包下载,然后安装即可:

$ sudo yum install /path/to/package.rpm
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容