Docker学习笔记1-docker介绍及安装
什么是Docker
Docker是一个开源工具,它可以将你的应用打包成一个标准镜像文件,并且以容器的方式运行。Docker容器将一系列软件包装在一个完整的文件系统中,这个文件系统包含应用程序运行所需的一切:代码、运行时工具、系统工具、系统依赖,几乎所有可以安装在服务器上的东西。这些策略保证了容器内应用程序运行环境的稳定性,不会被容器外的系统环境影响。就像集装箱一样,你所要做的是是把货物扔到集装箱内,至于承载集装箱的载具完全不需要关心,各个集装箱之间也都是相互隔离的,互相不会产生影响。
Docker与虚拟机对比
不太严谨的理解可以把Docker当作是一个轻量级的虚拟机,他为应用提供所需的一切资源,但应用不需要的系统资源则不会进行虚拟维护(进程级虚拟)。而传统的虚拟机及时应用再小,需要的资源再少也需要虚拟并维护一个完整的操作系统,这就导致系统开销较大,浪费了大量的资源维护不必要的环境(系统级虚拟)。同时由于Docker将运行环境封装到了镜像文件中,为开发者提供了稳定统一的运行环境,省去了在不同平台配置运行环境的繁琐流程。
Docker特点
- 轻量级
占用资源少,资源利用率高- 开放
Docker容器可以运行在主流linux发行版和windows操作系统上- 安全
容器将各个应用程序隔离开,这给所有的应用程序提供了一层额外的安全防护- 消除环境不一致
将应用程序的配置和所有依赖打包成一个镜像到容器中,可以保证应用在任何环境中都可以按照预期来运行,再也不用担心不得不在不同环境中安装相同软件和配置的问题。
利用容器合作开发
Docker镜像可以存储到DockerHub中,和他人合作分享。可以把他理解成github的一个Docker版,只不过上传的不是代码而是Docker镜像。
Docker架构
Docker包括三个基本概念:
- 镜像(image): Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(container): 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(repository): 仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
Docker安装
- CentOS7安装Docker
- 利用
uname -r
命令查看当前系统的内核版本,Docker系统的版本需要高于3.10版本.- 更新yum包到最新
sudo yum update
- 如果安装过旧版本的docker需要先卸载,没有则可以跳过这步。
sudo yum remove docker docker-common docker-selinux docker-engine
- 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖
sudo yum install -y yum-utils device-mapper-persisitent-data lvm2
- 设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 查看所有仓库中的docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
- 安装docker
sudo yum install docker-ce
该命令安装默认最新稳定版
sudo yum install docker-ce-指定的版本号.ce
该命令安装你指定的版本- 启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
- 验证安装是否成功
docker version
如果能显示版本信息则表示安装成功- 切换国内镜像源
docker默认使用的是国外的镜像源,因为GFW的原因访问速度特别的慢,使用体验很差。因此最好将其切换成国内的源。在/etc/docker/
路径下创建一个名为daemon.json的文件,文件里添加如下内容:
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://registry.aliyuncs.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
使用systemctl restart docker.service
命令重启docker即可完成国内源切换。