# docker-study **Repository Path**: wlyfree/docker-study ## Basic Information - **Project Name**: docker-study - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker ## 相关文档 **官方文档:** [https://docs.docker.com]() **Centos下安装Docker社区版:** ```shell # 内核要求3.10+ [root@VM_0_9_centos ~]# uname -r 3.10.0-957.el7.x86_64 # 安装依赖库 [root@VM_0_9_centos ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加稳定的存储库 [root@VM_0_9_centos ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 查找可用的docker [root@VM_0_9_centos ~]# yum list docker-ce --showduplicates | sort -r # 安装docker [root@VM_0_9_centos ~]# yum install docker-ce # 启动docker服务 [root@VM_0_9_centos ~]# systemctl start docker # 设置docker开机启动(非必须) [root@VM_0_9_centos ~]# systemctl enable docker # 验证安装结果 [root@VM_0_9_centos ~]# docker version ``` ## 概念相关 **参考博文:** ### 镜像(Image) ![](images\镜像.png) - 镜像就是一个可运行的只读文件,包含应用代码、类库、环境变量、配置文件等 - 镜像是由一层一层的镜像层组成,每一层都是基于其底层的变更 - 镜像层中包含一个指针和存储元数据的空间 ### 容器(Container) ![](images\容器.png) - 容器 = 镜像 + 读写层 - 容器中也包含一个指向下层的指针和存储元数据的空间 ### 运行期的容器 ![](images\运行期的容器.png) - 运行期的容器 = 容器 + 进程空间(包含内部的进程) - 运行中的容器可以理解为一个简易的linux环境(文件系统、用户控件、进程空间) ### 仓库(Repository) - 镜像仓库,包含很多别人打包好的镜像,类似于maven的仓库。在Docker中默认的仓库是Docker Hub。 ## 性质 ### 容器 VS 虚拟机
**Guest OS:**虚拟机安装的完整的操作系统内核,通过Hypervisor虚拟化技术 **Hypervisor:**硬件虚拟化平台,在Host OS以内核态驱动存在。 **Docker Engine:**Docker引擎,上层容器共享宿主机内核。 对比容器和虚拟机的架构图,Docker Engine替代了Guest OS和Hypervisor | | VM | Docker | | :------------: | :----------------------------------------------------------: | :------------------------------: | | 内核 | 虚拟机内安装OS,单独的内核,通过Hypervisor虚拟化技术操作硬件 | 共享宿主机内核,操作硬件 | | 体积 | 大 | 小 | | 启动速度 | 分钟级,需要重新引导、加载OS内核 | 秒级,共享宿主机OS,无需重新引导 | | 集成能力 | 弱 | 强 | | | 低,需要硬件虚拟化 | 高,直接操作 | | 系统环境隔离 | 虚拟化 | 内核自带的namespace | | 资源隔离 | 虚拟化 | Cgroup | | 根目录环境隔离 | 虚拟化 | 镜像 | ### 运行架构 ![](images\运行架构.jpg) Docker Engine是C/S架构的,Client端命令都是交给Docker daemon执行的,Client和daemon的交互使用Rest API。 使用docker build可以通过docker file新建Image 使用docker pull可以从远端仓库pull镜像 使用docker run可以把xx镜像运行为一个容器,run默认会检查本地是否存在镜像,不存在则从远端仓库自动拉取并运行。 ### 总体架构 ![](images/总体架构1.png) ![](images/总体架构2.png) ### 命令图 **参考博文:** ![](images/命令图1.png) ![](images/命令图2.png) ## 常用命令 ## Docker file ## Docker三剑客 ### Docker Compose ### Docker Machine ### Docker Swarm