一、前言
本文档在CentOS7.3(1611)下基于Docker安装部署Gitlab社区中文版。Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本。
1.1容器和虚拟机
虚拟机(如VMware hyper-v)需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
容器技术是和宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器技术是实现操作系统虚拟化的一种途径,可以在资源受到隔离的进程中运行应用程序及其依赖关系。通过下面这幅图可以很直观的反映出这两者的区别所在。
1.2 Docker
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的Linux容器解决方案。Linux容器是Linux发展出了另一种虚拟化技术,简单来讲,Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。总体来说有了 Docker,用户可以方便地创建和使用容器,把自己的应用放入容器。
1.3 Docker 三个基本概念
Docker中包括三个基本的概念,Image(镜像)、Container(容器)、Repository(仓库),镜像是Docker运行容器的前提,仓库是存放镜像的场所,Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像(Image)是只读的,容器 (container) 和镜像 (image) 几乎一模一