docker容器的基本概念和部署(代码片段)

王大雏 王大雏     2022-12-13     237

关键词:

一、Docker的概述

1、Docker是什么?

  • Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源
  • 是在Linux容器里运行应用的开源工具
  • 是一种轻量级的“虚拟机”
  • Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

2、Docker的Logo

  • Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱
  • 鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序

3、Docker的设计宗旨(一次封装,到处运行)

Build,Ship and Run Any App, Anywhere

  • 即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行"的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

4、容器化越来越受欢迎的原因

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级: 容器利用并共享主机内核。
  • 可互换:可以即时部署更新和升级。
  • 便携式:可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:可以增加并自动分发容器副本。
  • 可堆叠:可以垂直和即时堆叠服务。

二、Docker与虚拟机的区别

  • 容器在Linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量
  • 虚拟机运行的是一个完整的操作系统,通过虚拟的管理程序对主机资源进行虚拟访问,相比之下需要的资源更多
特性Docker容器虚拟机vmware sphere
启动速度秒级分钟级
计算能力损耗几乎无损耗50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制
namespace/cgroup
完全隔离

容器在内核中支持2种重要技术:

  • docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离通过cgroup实现资源限制,通过写时复制技术( copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。

三、Docker的使用场景

  • 打包应用程序简化部署
  • 可脱离底层硬件任意迁移
    • 例:服务器从腾讯云迁移到阿里云

四、Docker的核心概念

镜像一个面向Docker容器引擎的只读模板
容器从镜像创建的运行实例
仓库集中保留镜像的地方,分为共有仓库和私有仓库

1、镜像

  • Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向Docker容器引擎的只读模板。
  • 通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
  • Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

2、容器

  • Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每–个容器都是相互隔离、互不可见,以保证平台的安全性。
  • 可以把容器看做是要给简易版的1inux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

3、仓库

  • Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public) 或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
  • 仓库分为
    • 公有仓库:Docker官方仓库
    • 私有仓库:个人化、私有化的仓库

Docker的镜像、容器、日志等内容全部都默认存储在/var/lib/docker 目录下。

总结:Docker是容器管理工具,容器由镜像创建而来,镜像从仓库中获取而来,仓库分为公有、私有。

五、Linux文件系统和Docker文件系统?

  • Linux文件系统:由bootfs和rootfs组成,bootfs主要包含bootloader和kernel,bootloader主要是引导加载kernel,当kernel被加载到内存之后bootfs就被卸载掉了。rootfs包含的就是典型linux系统中/dev, /proc, /bin, /etc等标准目录。

  • Docker文件系统:Docker容器是建立在Aufs分层文件系统基础上的,Aufs支持将不同的目录挂载到同一个虚拟文件系统下,并实现一种layer的概念。每一层文件系统我们叫做一层layer, Aufs可以对每一层文件系统设置三种权限:只读(read-only),读写(read-write)以及写出(whiteout-able)。docker 镜像中每层文件系统都是read-only。

  • 传统的Linux加载bootfs时会先将root fs设为read-only,然后在系统自检之后将rootfs从read-only改为read-write,然后我们就可以在rootfs.上进行写和读的操作了。

  • 同一个内核版本的所有Linux 系统的bootfs 是相同的,而rootfs 则是不同的。在Docker 中,基础镜像中的roofs会一直保持只读模式,Docker 会利用AUFS 来在这个rootfs上增加更多的只读文件系统,最后它们看起来就像一个文件系统即容器的rootfs。


由此可见在一个Linux系统之中

  • 所有Docker 容器都共享主机系统的bootfs即Linux 内核
  • 每个容器有自己的rootfs,它可以来自不同的Linux 发行版的基础镜像,包括Ubuntu, Debian 和SUSE 等
  • 所有基于一种基础镜像的容器都共享这种rootfs

五、Docker安装

Docker两种安装方式

  • 1、使用CURL获得Docker的安装脚本进行安装
  • 2、使用YUM仓库来安装Docker

1、此时可参考docker官方网站

docker官方网站:https://docs.docker.com/

使用谷歌浏览器,首先点击右上角三竖点,并且点击设置,将语言设置为中文

直接点击左上角刷新按钮,此时可以看到页面已经自动翻译为中文了
点击下载并安装


代码清单

-----------------安装 Docker---------------------------
目前 Docker 只能支持 64 位系统。

systemctl stop firewalld.service
setenforce 0

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 
--------------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------

#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli

systemctl start docker.service
systemctl enable docker.service 
---------------------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。
Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
-------------------------------------------------------------------------------------------------------------
#查看 docker 版本信息
docker version

#查看docker信息
docker info

详细步骤

1、卸载docker旧版本

不管曾经是否安装,都建议卸载一下

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

2、安装工具包及设置阿里云镜像源

#安装工具包
sudo yum install -y yum-utils
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker引擎

安装之前建议先清空一下yum缓存

yum makecache fast

yum install docker-ce docker-ce-cli containerd.io	 		
systemctl start docker
systemctl enable docker

通过运行hello-world 映像验证 Docker Engine 是否已正确安装。

 sudo docker run hello-world


4、安装阿里云镜像加速器

阿里云官网:https://account.aliyun.com/



sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'

  "registry-mirrors": ["https://y33hqxx2.mirror.aliyuncs.com"]

EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

5、安装完成验证



总结

Docker的核心概念

①镜像

  • 一个面向Docker容器引擎的只读模板

②容器

  • 从镜像创建的运行实例

③仓库

  • 集中保留镜像的地方

仓库分为
公有仓库:Docker官方仓库
私有仓库:个人化、私有化的仓库

总结:Docker是容器管理工具,容器由镜像创建而来,镜像从仓库中获取而来,仓库分为公有、私有。

openshift基本概念(代码片段)

...来了许多架构变化,并引入了新的概念和组件。它围绕在Docker 容器中运行的应用程序 ,Kubernetes项目提供的调度和管理支持 以及顶部的增强部署,编排和路由功能构建。围绕容器模型以及如何监控和互连最重要的变... 查看详情

docker基本部署(代码片段)

一、基本概念docker    1.镜像(Image)  Docker镜像就是一个只读的模板。  例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或用户需要的其它应用程序。  镜像可以用来创建Docker容器。  Do... 查看详情

docker架构镜像及容器的安装和基本操作(代码片段)

Docker概念Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟机。Docker的宗旨:Build,ShipandRunAnyAPP,Anywhere,即通过对应用组件的分装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次分装,到处运行”... 查看详情

docker基本部署及基本控制命令(理论篇)(代码片段)

Docker基本部署及基本控制命令Docker概述?Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机... 查看详情

centos7部署docker环境基本命令使用及简单实战(代码片段)

Docker是一个开源的应用容器引擎,属于Linux容器的一种封装,是目前最流行的Linux容器解决方案。docker可以为任何应用创建一个轻量级、可移植的容器,然后容器可以运行在任何安装有docker的平台上。Docker的优势:1、更快速的交... 查看详情

docker入门-基本概念

Docker是什么Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。 Docker的应用场景Web应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译... 查看详情

linux运维容器篇docker入门简介和部署(代码片段)

文章目录一、docker简介docker的历史docker的概念docker和虚拟机的区别docker命名空间docker镜像docker状态二、部署docker设置仓库和拓展安转docker引擎开启镜像加速网络优化验证安装总结一、docker简介docker的历史2010年几个年轻人成立了... 查看详情

docker部署asp.netcore应用(代码片段)

1容器概念  使用Docker前我们首先要简单了解一下容器的概念。MSDN上有一张虚拟机和容器的对比图,很好的展示了虚拟机和容器的区别,如下所示,虚拟机包括应用程序、必需的库或二进制文件以及完整的来宾操作系统,每台... 查看详情

docker-容器部署consul集群(代码片段)

原文:Docker-容器部署Consul集群目录说明简介了解ConsulConsul使用场景Consul优势Consul中的概念安装准备Consul镜像安装单个Consul组装集群Consul总结引用和附件说明本文主要介绍怎么使用Docker在Linux环境部署Consul集群,如果你对Docker不了... 查看详情

强力的应用容器引擎——docker的安装和镜像容器的基本操作!(代码片段)

docker的安装和基本使用介绍一、Docker概述1.1Docker初识1.2容器的特点1.3容器和Docker与虚拟机的区别1.3.1容器与虚拟机的区别1.3.2Docker与虚拟机的区别1.3.3容器在内核中支持2种重要技术1.4Docker核心概念1)镜像2)容器3)仓... 查看详情

docker基本管理(代码片段)

Docker基本管理文章目录Docker核心概念Docker镜像操作Docker容器操作Docker概述Docker是什么?是一种轻量级的“虚拟机”在Linux容器里运行应用的开源工具Docker的使用场景打包应用程序简化部署可脱离底层硬件任意迁移Docker的核心概念... 查看详情

dcoker心得#1docker的基本概念和原理(代码片段)

基本原理Docker的实现,主要归结于三大技术:命名空间(Namespaces)控制组(ControlGroups)联合文件系统(UnionFileSystem)命名空间(Namespaces)?,是linux核心在2.4版本后逐渐引入的一项用于运行隔离的模块,利用PIDNamespace,Docker就实现了容器中... 查看详情

黑马二docker容器的数据卷&docker应用部署(代码片段)

一、Docker容器的数据卷1.1、数据卷的概念思考:Docker容器删除后,在容器中产生的数据也会随之销毁Docker容器和外部机器可以直接交换文件吗?容器之间想要进行数据交互?数据卷数据卷是宿主机中的一个目录或... 查看详情

docker学习(代码片段)

为什么使用docker?主要归纳一下几点:更高效的利用系统资源更快速的启动时间一致的运行环境持续交付和部署更轻松的迁移更轻松的维护和扩展对比传统虚拟机总结特性容器虚拟机启动秒级分钟级硬盘使用一般为MB一般为GB性能... 查看详情

docker基本管理(镜像容器)(代码片段)

目录一、Docker概述1、容器化2、Docker与虚拟机的区别3、Docker核心概念4、Linux文件系统和Docker文件系统的区别二、安装Docker三、Docker镜像操作1、搜索镜像2、获取镜像3、镜像加速下载4、查看镜像信息5、查看下载的镜像文件信息6、... 查看详情

docker简易使用手册(代码片段)

1.Docker介绍Docker中文社区文档Docker是一个开源的软件部署解决方案。Docker包括三个基本概念:镜像(Image)Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创... 查看详情

docker快速入门-情况介绍和安装(代码片段)

很高兴您想学习Docker。这个页面包含了如何开始使用Docker的循序渐进的说明。Docker快速入门培训模块教你如何:设置Docker环境(在本页)构建并运行您的镜像在DockerHub上共享镜像Docker概念Docker是一个供开发人员和系统管理员构建... 查看详情

linux运维容器篇docker入门简介和部署(代码片段)

文章目录一、docker简介docker的历史docker的概念docker和虚拟机的区别docker命名空间docker镜像docker状态二、部署docker设置仓库和拓展安转docker引擎开启镜像加速网络优化验证安装总结一、docker简介docker的历史2010年几个年轻人成立了... 查看详情