Docker 系列一(概念原理和安装).

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

一、概念原理

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

    之前一直有一个误区,老听人说 Docker 是一个容器,应用程序打包好镜像,然后在这个容器中运行,以此达到 "一次封装,处处运行"(Build,Ship and Run Any App,Anywhere)的目的。其实不然,Docker 只是一个应用程序引擎(引擎的基础是Linux自带的容器(Linux Containers,LXC)技术),然后每一个进程都是一个容器 —— 运行于 Docker引擎上的容器。

    Docker 在运行时分为 Docker 引擎(也就是服务端守护进程)和客户端工具。Docker 的引擎提供了一组 REST API,被称为 Docker Remote API,而如 docker 命令这样的客户端工具,则是通过这组 API 与 Docker 引擎交互,从而完成各种功能。因此,虽然表面上我们好像是在本机执行各种 docker 功能,但实际上,一切都是使用的远程调用形式在服务端(Docker 引擎)完成。也因为这种 C/S 设计,让我们操作远程服务器的 Docker 引擎变得轻而易举。

    Client 和 Server可以运行在同一台集群,也可以通过跨主机实现远程通信。

 

     传统的虚拟机技术和容器技术的区别?

    传统虚拟机技术是虚拟出一套硬件后(内存分一点,磁盘分一点),在宿主上运行一个完整操作系统,在该系统上再运行所需要的应用进程;而容器内没有自己的内核,而且也没有进行硬件虚拟,应用进程直接运行于宿主的内核,而且进程和进程之间是相隔离的,是一个操作系统级别的虚拟化技术。

    Docker 的优势:

1、更高效的利用系统资源(不需要进行硬件虚拟以及运行完整操作系统等额外开销,一个相同配置的主机,往往可以运行更多数量的应用。单机支持上千个容器)
2、更快速的启动时间
3、一致的运行环境
4、持续交付和部署
5、更轻松的迁移
6、更轻松的维护和扩展

    Docker 包括三个基本概念:

镜像:是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。镜像不包含任何动态数据,其内容在构建之后也不会被改变,任何用户程序都可以成为镜像的一部分。

          镜像=操作系统+软件运行环境+用户程序。

容器:镜像和容器的关系,就像是面向对象程序设计中类和实例的关系,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

          容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立命名空间。容器内的进程是运行在一个隔离的环境中,使用起来,就好像是在一个独立于宿主的系统下操作一样。

          每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,容器存储层的的生命周期和容器一样,容器消亡时,容器存储层也随之消亡。按照 Docker 的最佳实践,容器不应该向存储层写入任何数据,容器存储层要保持无状态变化。所有的文件写入操作,都应该使用 数据卷(Volume) 、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储) 发生读写,其性能和稳定性更高。

Docker Register:一个集中的存储、分发镜像的服务,一个Docker Register 中可以包含多个仓库(打包好的软件镜像);每个仓库可以包含多个标签(一个软件的多个版本镜像);

tips:官方的镜像库 https://hub.docker.com/

         国内阿里云的镜像库 https://cr.console.aliyun.com/

二、安装

    下面仅介绍 CentOS 安装 Docker CE,支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。

    1、内核版本

    2、系统版本

    3、使用以下命令卸载旧版本的 Docker 

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

    4、安装依赖包并添加国内源

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
$ sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

    5、安装 Docker CE

$ sudo yum makecache fast
$ sudo yum -y install docker-ce

    6、启动 Docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

    7、建立 docker 用户组

    默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。完成前面的步骤,会自动建立 docker 用户组。

    建立 docker 用户组:

$ sudo groupadd docker

    添加用户到 docker 用户组:

$ sudo usermod -aG docker $USER

    8、测试是否安装成功

    退出当前终端并重新登陆(必须),输入如下命令验证是否成功:

    9、安装镜像加速

    修改 /etc/docker/daemon.json 文件,写入以下内容:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

    重启服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

 

 

参考资料:《Docker — 从入门到实践》

目录
相关文章
|
9天前
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
121 64
|
11天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
75 24
|
11天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
67 24
|
17天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
76 24
|
10天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
139 11
|
1月前
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
1513 3
【最新版正确姿势】Docker安装教程(简单几步即可完成)
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
878 12
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
19天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
97 6
|
1月前
|
Kubernetes 负载均衡 调度
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
115 6
|
1月前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
49 1

热门文章

最新文章