前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云原生 | Docker篇】轻松学会原理|架构|安装|加速(一)

【云原生 | Docker篇】轻松学会原理|架构|安装|加速(一)

原创
作者头像
Lansonli
发布2022-04-28 12:06:30
3820
发布2022-04-28 12:06:30
举报
文章被收录于专栏:Lansonli技术博客

轻松学会原理|架构|安装|加速

​前言

一文精讲一个知识点,多了你记不住,一句废话都没有

经典语录:人情绪的尽头不是脏话不是发泄,人情绪的尽头是沉默

一、Docker架构

  • Client: 客户端;操作docker服务器的客户端(命令行或者界面)
  • Docker_Host:Docker主机;安装Docker服务的主机
  • Docker_Daemon:后台进程;运行在Docker服务器的后台进程
  • Containers:容器;在Docker服务器中的容器(一个容器一般是一个应用实例,容器间互相隔离)
  • K8S:CRI(Container Runtime Interface)
  • Images:镜像、映像、程序包;Image是只读模板,其中包含创建Docker容器的说明。容器是由Image运行而来,Image固定不变。
  • Registries:仓库;存储Docker Image的地方。官方远程仓库地址: https://hub.docker.com/search

Docker用Go编程语言编写,并利用Linux内核的多种功能来交付其功能。 Docker使用一种称为名称空间的技术来提供容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。 这些名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于该名称空间。

Docker

面向对象

镜像(Image)

容器(Container)

对象(实例)

容器与虚拟机

二、Docker隔离原理

  • namespace 6项隔离 (资源隔离)

namespace

系统调用参数

隔离内容

UTS

CLONE_NEWUTS

主机和域名

IPC

CLONE_NEWIPC

信号量、消息队列和共享内存

PID

CLONE_NEWPID

进程编号

Network

CLONE_NEWNET

网络设备、网络栈、端口等

Mount

CLONE_NEWNS

挂载点(文件系统)

User

CLONE_NEWUSER

用户和用户组

  • cgroups资源限制 (资源限制)

cgroup提供的主要功能如下:

  • 资源限制:限制任务使用的资源总额,并在超过这个 配额 时发出提示
  • 优先级分配:分配CPU时间片数量及磁盘IO带宽大小、控制任务运行的优先级
  • 资源统计:统计系统资源使用量,如CPU使用时长、内存用量等
  • 任务控制:对任务执行挂起、恢复等操作

cgroup资源控制系统,每种子系统独立地控制一种资源。功能如下

子系统

功能

cpu

使用调度程序控制任务对CPU的使用。

cpuacct(CPUAccounting)

自动生成cgroup中任务对CPU资源使用情况的报告。

cpuset

为cgroup中的任务分配独立的CPU(多处理器系统时)和内存.

devices

开启或关闭cgroup中任务对设备的访问

freezer

挂起或恢复cgroup中的任务

memory

设定cgroup中任务对内存使用量的限定,并生成这些任务对内存资源使用情况的报告

perf_event(LinuxCPU性能探测器)

使cgroup中的任务可以进行统一的性能测试

net_cls(Docker未使用)

通过等级识别符标记网络数据包,从而允许Linux流量监控程序(TrafficController)识别从具体cgroup中生成的数据包

三、Docker安装

以下以centos为例; 更多其他安装方式,详细参照文档: https://docs.docker.com/engine/install/centos/

1、移除旧版本

代码语言:javascript
复制
sudo yum remove docker*

2、设置docker yum源

代码语言:javascript
复制
sudo yum install -y yum-utils

使用官方源地址(比较慢)

代码语言:javascript
复制
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

可以选择国内的一些源地址:

阿里云

代码语言:javascript
复制
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源

代码语言:javascript
复制
sudo yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

3、安装最新docker engine

代码语言:javascript
复制
sudo yum install docker-ce docker-ce-cli containerd.io

4、安装指定版本docker engine

1、在线安装

代码语言:javascript
复制
#找到所有可用docker版本列表 
yum list docker-ce --showduplicates | sort -r
# 安装指定版本,用上面的版本号替换<VERSION_STRING> 
sudo yum install docker-ce-<VERSION_STRING>.x86_64 docker-ce-cli- <VERSION_STRING>.x86_64 containerd.io 
#例如: 
#yum install docker-ce-3:20.10.5-3.el7.x86_64 docker-ce-cli-3:20.10.5- 3.el7.x86_64 containerd.io 
#注意加上 .x86_64 大版本号

2、离线安装

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

rpm -ivh xxx.rpm 可以下载 tar 解压启动即可

https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux

5、启动服务

代码语言:javascript
复制
systemctl start docker 
systemctl enable docker

6、镜像加速

代码语言:javascript
复制
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ 
    "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"] 
}
EOF 
sudo systemctl daemon-reload 
sudo systemctl restart docker

以后docker下载直接从阿里云拉取相关镜像

/etc/docker/daemon.json 是Docker的核心配置文件。

7、 可视化界面-Portainer

1、什么是Portainer

https://documentation.portainer.io/

  • Portainer社区版2.0拥有超过50万的普通用户,是功能强大的开源工具集,可让您轻松地在Docker, Swarm,Kubernetes和Azure ACI中构建和管理容器。
  • Portainer的工作原理是在易于使用的GUI后面隐藏使管理容器变得困难的复杂性。通过消除用户使用CLI,编写YAML或理解清单的需求,Portainer使部署应用程序和解决问题变得如此简单,任何人都可以做到。
  • Portainer开发团队在这里为您的Docker之旅提供帮助。

2、安装

代码语言:javascript
复制
# 服务端部署 
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
# 访问 9000 端口即可 
#agent端部署
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent

界面显示

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 轻松学会原理|架构|安装|加速
  • ​前言
  • 一、Docker架构
  • 二、Docker隔离原理
  • 三、Docker安装
    • 1、移除旧版本
      • 2、设置docker yum源
        • 3、安装最新docker engine
          • 4、安装指定版本docker engine
            • 1、在线安装
            • 2、离线安装
          • 5、启动服务
            • 6、镜像加速
              • 7、 可视化界面-Portainer
                • 1、什么是Portainer
                • 2、安装
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档