☁️
云安全攻防入门
  • 👨‍💻简介
  • 第一章 云上攻防体系介绍
    • 🐭云计算概念
    • 😀什么是云安全
    • 😁本章小结
  • 第二章 Linux攻防快速入门(上)
    • 🛠️Linux基础快速入门
    • 🏴󠁧󠁢󠁳󠁣󠁴󠁿文件管理和IO重定向
    • 🏴󠁧󠁢󠁳󠁣󠁴󠁿反弹SHell原理与检测思路
    • 🦊echo命令在攻击中应用
    • 🦉用户组在攻防场景中的应用
    • 🦤特殊权限管理与提权
    • 🦆SUDO授权与提权
    • 🐥文本三剑客
  • 第三章 Linux攻防快速入门(下)
    • 🎨Bash基础入门与应用
    • 🖥️Bash进阶-攻防实战场景应用
    • 🙉进程和计划任务
    • 🐸Linux服务-SSH攻防
  • 第四章 公有云攻防
    • 🐶云平台介绍
    • 🐱云产品概念
    • 🐭云安全中心简介
    • 🐹弹性计算服务攻防
    • 🐰对象存储攻防
    • 🦊基础设施即代码
    • 🐻云函数攻防
    • 🐼防御思路
  • 第五章 私有云与虚拟化攻防
    • 🐻‍❄️私有云与虚拟化
    • 🐨虚拟化介绍
    • 🐯虚拟化技术分类
    • 🦁KVM
    • 🐮Vmvare vSphere
    • 🐷OpenStack渗透场景
  • 第六章 云原生攻防
    • 🙉什么是云原生
    • 🙊云原生技术栈
    • 🐒Docker基础入门
      • 🐔镜像管理
      • 🐧Docker基础命令
      • 🐦Docker镜像制作
      • 🐤Docker数据管理
      • 🐣Docker网络管理
      • 🐥Docker仓库管理
    • 🦆Docker常见攻击方式
    • 🦤Kubernetes基础入门
    • 🦇Kubernetes常见攻击方式
      • 🐺Kubernetes ATT&CK
      • 🐗扩展知识
  • 第七章 云原生应用的DevOps
    • 🐴代码托管平台渗透场景
    • 🦄Jenkins渗透场景
    • 🐝CICD top 10 Security Risk
    • 🐛CICD渗透场景
Powered by GitBook
On this page

Was this helpful?

  1. 第六章 云原生攻防

Docker基础入门

Previous云原生技术栈Next镜像管理

Last updated 1 year ago

Was this helpful?

容器介绍

Docker是什么

Docker是基于Linux内核实现,最早是采用了 LXC技术,后来Docker自己研发了runc技术运行容器。

它基于Google Go语言实现,采用客户端/服务端架构,使用API来管理和创建容器。

虚拟机 VS Docker

Namespace

  • 内核命名空间属于容器非常核心的一部分,能够将操作系统进行拆分,使一个系统看起来像多个互相独立的操作系统一样。

  • Docker容器是由各种命名空间组合而成的,本质就是命名空间

  • 每个容器都由自己的PID、NET、MNT、IPC、UTS构成。

主要通过以下技术实现容器运行空间的相互隔离:

隔离类型

功能

系统调用参数

内核版本

MNT Namespace

提供磁盘挂载点和文件系统的隔离能力

CLONE_NEWNS

2.4.19

IPC Namespace

提供进程间通信的隔离能力,信号量、消息队列和共享内存

CLONE_NEWIPC

2.6.19

UTS Namespace

提供主机名隔离能力

CLONE_NEWUTS

2.6.19

PID Namespace

提供进程隔离能力

CLONE_NEWPID

2.6.24

Net Namespace

提供网络隔离能力,包括网络设备,端口栈,端口等

CLONE_NEWNET

2.6.29

User Namespace

提供用户隔离能力

CLONE_NEWUSER

3.8

安装Docker

#Centos7安装
wget /etc/yum.repos.d/Centos-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
yum -y install docker-ce
 
#Docker CE 镜像源站
https://developer.aliyun.com/article/110806
 
#查看进程关于Docker
ps aux|grep -E "containerd|docker"

容器创建过程

docker container run --name ctrl -it alpine:latest sh

  • 当执行如上命令时,Docker Client会将其转换为合适的API格式,并发送到的API端点。

  • daemon接收到创建容器的命令,会向containerd发出调用。

    • 虽然名字叫containerd但是它不负责创建新容器,而是指挥runc去做。

    • containerd将Docker镜像转换为OCI bundle,并让runc基于此创建一个新的容器。

  • daemon使用一种CRUD风格的API,通过GRPC与containerd进行通信。

    • (gRPC是google开发的一款高性能,开源和通用的RPC框架)

  • 然后runc与操作系统内核接口进行通信,基于所必要的工具(Namespace、CGroup等)来创建容器。

    • 容器进程作为runc的子进程启动,启动完后runc将会退出。

  • shim是实现daemon的容器

    • containerd指挥runc创建新容器,实际上创建容器时都会fork一个新的runc实例。

    • 一旦容器进程的父进程runc退出,相关联的containerd-shim就会成为容器的父进程。

    • shim职责是保持所有STDIN和STDOUT流是开启状态,从而当daemon重启的时候,容器不会因为PIPE的关闭而终止,并且将容器退出状态反馈给daemon。

Docker架构

  • Docker Client

    • docker run命令实际调用了Docker API将命令发送到dockerd进而运行。

  • Docker daemon

    • 守护进程(dockerd)侦听Docker API发来的请求,作为服务端接受来自客户端的请求,主要功能包括镜像管理、镜像构建、REST API、身份验证、安全、核心网络以及编排。

    • 守护进程还可以与其他守护进程通信以及管理Docker服务。

  • Docker Registry(仓库)

    • 用于存储镜像,而Docker默认配置为在Docker Hub查找镜像

    • Docker Hub是一个镜像仓库

    • Harbor由vmware提供带Web界面自带认证功能的镜像私有仓库

  • Docker Objects

    • Images(镜像)

  • 运行容器前需要本地存在对应的镜像,如果不存在默认会从Docker Hub镜像仓库下载。

  • 镜像是容器运行时的只读模板,每一个镜像由一系列的层(layers)组成,用文件系统FS来将这些层联合到单独的镜像中,允许独立文件系统中的文件和文件夹被透明覆盖,形成一个单独连贯的文件系统

    • Containers

  • 容器和文件夹类似,一个容器包含了所有的某个应用运行所需的环境

  • 每一个容器都是从镜像创建的,不同的容器带有额外的可写层。

  • 容器可以运行、开始、停止、移动和删除等操作。

  • runC

    • runc是一个轻量级的针对Libcontainer进行了包装的命令行交互工具,取代了早期Docker架构中的LXC。

    • runc只有一个作用,创建容器。

🐒