docker介绍与安装
# Docker学习
Docker由Linux容器技术( LXC )演化改进而来,IBM关于LXC的描述为:"容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求.与虚拟化相比,这样既不需要指令级模拟,也不需要及时编译.容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制"
# 简单理解Docker
可将Docke容器理解为一种轻量级的沙盒,每个容器内运行着一个应用,不同的容器相互隔离,拥有独立的内部环境,容器之间可以通过网络通信。
# Docker与传统虚拟机
上图为docker与传统虚拟机的结构区别,传统虚拟机在硬件层面实现虚拟化,需要额外的虚拟机管理器和虚拟机操作系统层,Docker容器是在操作系统层面实现的虚拟化,直接服用本地主机的操作系统,因而更加轻量级。
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | MB级 | GB级 |
运行密度 | 单机上千个 | 单机几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 较弱 |
# Docker的使用
# Docker的一些基本概念
- Docker镜像
镜像类似于安装操作系统用的ISO文件,是一个只读模板,用于创建Docker。 例如,一个镜像可以只包含一个Ubuntu18.04操作系统环境,这就是一个Ubuntu镜像; 或者另有一个镜像包含了ubuntu操作系统和Apache应用程序以及必要的依赖,这个镜像可被称作一个Apache镜像。
通过版本管理和增量文件系统,创建和更新镜像的机制非常简单,或者可以直接从网上下载已经打包好的开箱即用的Docker镜像。
- Docker容器
Docker容器是基于Docker镜像创建的运行实例,可以启动、停止、重启和删除,这些容器是互相隔离的、互不可见的,只有通过配置Docker网段才能使它们相互连接。
容器是由一个简易的Linux系统环境以及包含在其中的应用程序打包而成的盒子
- Docker仓库
Docker仓库类似于代码仓库(如github),是Docker集中存放镜像的场所。一个仓库注册服务器(Registry)内往往有多个仓库,用于分门别类存放镜像,仓库内的镜像用标签(tag)区分。
例如某个公开Registry内有Ubuntu和CentOS两个操作系统镜像仓库,每个仓库内部为了区分操作系统版本,给镜像文件打上18.04、16.04、6、7等tag
仓库分公开仓库和私有仓库,目前最大的公开仓库是官方提供的Docker Hub,一些较大的云服务商如阿里云和腾讯云等也提供了公开仓库服务。当然,Docker也支持用户自行搭建公开或私有仓库,官方也提供了用于搭建仓库的镜像,方便使用。
# 安装Docker引擎
- Mac 和 windows系统
https://www.docker.com/products/docker-desktop (opens new window)
访问网址下载对应版本
PS: 由于windows版本需求Hyper-V虚拟化技术,需要windows10专业版以上以及对应的Server系统,win7与win10家庭版不能使用docker
- Linux系统
https://docs.docker.com/install/linux/docker-ce/ubuntu/ (opens new window)
官方文档,以Ubuntu为例,安装docker-ce版本,链接中另有其它Linux版本的安装方式 为了提高下载速度,在安装的第三步时,将download.docker.com换成mirrors.aliyun.com/docker-ce
- apt-get update
- apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- apt-key fingerprint 0EBFCD88
- add-apt-repository
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu
$(lsb_release -cs)
stable" - apt-get update
- apt-get install docker-ce docker-ce-cli containerd.io
# ubuntu下镜像存储路径的修改
- 停止docker进程
systemctl stop docker - 拷贝或移动docker文件至新目录
mv /var/lib/docker/* /opt/docker/ - 修改docker配置文件
/lib/systemd/system/docker.service - 在里面的EXECStart的后面增加后如下:
ExecStart=/usr/bin/dockerd --graph /home/docker
- 重新enable 一下docker 服务 重新进行软连接 以及进行一次 daemon-reload
systemctl disable docker
systemctl enable docker
systemctl daemon-reload
systemctl start docker