docker容器概述及部署优化、镜像加速(提供一些报错的解决方法)

  • Docker概述
  • Docker的应用场景
  • Docker 的优点
  • 1、快速,一致地交付您的应用程序
  • 2、响应式部署和扩展
  • 3、在同一硬件上运行更多工作负载
  • +++++++虚拟机与容器的优缺点对比+++++++++
  • Docker 包括三个基本概念
  • 部署docker
  • 1:安装依赖包
  • 2:设置阿里云镜像源
  • 3:安装Docker-CE
  • 4、关闭防火墙、核心防护,并且开启docker
  • +++++++++网络优化++++++++++++
  • +++++++++镜像加速+++++++++++


Docker概述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker的应用场景

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2、响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

+++++++虚拟机与容器的优缺点对比+++++++++

虚拟机

容器

占用资源多

占用资源少

开启时间30~60秒

毫秒

系统隔离

内核共享

弹性扩展执行时间长

弹性扩展执行时间短

Docker 包括三个基本概念

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

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

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker

面向对象

容器

对象

镜像


部署docker

1:安装依赖包

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

#yum-utils提供了yum-config-manager
#device mapper存储驱动程序需要device-mapper-persistent-data和 lvm2#Device Mapper是 Linux2.6内核中支持逻辑卷管理的通用设备映射机制,
它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

2:设置阿里云镜像源

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

3:安装Docker-CE

yum install -y docker-ce

这里安装docker有可能会出现以下的报错:

需要:container-selinux >= 2:2.74
错误:软件包:3:docker-ce-19.03.13-3.el7.x86_64 (docker-ce-stable)
          需要:container-selinux >= 2:2.74
 您可以尝试添加 --skip-broken 选项来解决该问题
 您可以尝试执行:rpm -Va --nofiles --nodigest
Error: Package: docker-ce-18.03.1.ce-1.el7.centos.x86_64 (docker-ce-edge)
           Requires: container-selinux >= 2.9
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

群晖 docker 镜像文件_docker

解决方法:

container-selinux >= 2.9 

这个报错是container-selinux版本低或者是没安装的原因

yum 安装container-selinux 一般的yum源又找不到这个包

需要安装epel源 才能yum安装container-selinux

然后在安装docker-ce就可以了。

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  

 yum install epel-release   #阿里云上的epel源

然后yum install container-selinux

最后再次执行yum install -y docker-ce

本次的报错,参考以下博客:

4、关闭防火墙、核心防护,并且开启docker

systemctl stop firewalld
setenforce 0

vim /etc/selinux/config
SELINUX=disabled

systemctl start docker.service
systemctl enable docker.service
systemctl status docker

通过docker version(查看docker版本)验证docker是否安装完成

群晖 docker 镜像文件_群晖 docker 镜像文件_02

+++++++++网络优化++++++++++++

[root@localhost ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

[root@localhost ~]# systemctl  restart network

+++++++++镜像加速+++++++++++

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

群晖 docker 镜像文件_镜像加速_03

群晖 docker 镜像文件_docker_04


群晖 docker 镜像文件_容器_05

群晖 docker 镜像文件_镜像加速_06

我这里采用的是centos的,Ubuntu和centos的代码是一样的(这个可以自行查看一下试试),把画框的代码直接复制一份,然后执行命令就可以了

mkdir -p /etc/docker  ####随便创建一个目录

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hhv92m1r.mirror.aliyuncs.com"]
}
EOF     #####把镜像加速的文件直接拷贝粘贴到命令行直接执行就可以了

 systemctl daemon-reload     ####重新加载一下
 systemctl restart docker    #####重新启动一下docker