Docker 入门及安装
Docker 简介
docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可适用于自动化测试、打包,持续集成和发布应用程序等场景。
值得注意的是,docker现已改名为moby。
docker基于容器化,沙箱机制,可使你用较少的命令和脚本快速部署应用。一次构建,多处移植使用。再配合shell等脚本语言,可实现脚本化一键部署。
另外,docker大部分的工作都是依赖命令来执行的,简单易上手。
如火如荼的docker,现已被很多大公司所采用。同时docker也成为了实现serverless(无服务器架构)服务的基础架构。包括阿里云,亚马逊在内的云计算服务商都采用了docker来打造serverless服务平台。
如此同时,基于docker的微服务架构也如火如荼地出现。
由此可见,docker容器技术的重要性非同一般。
Docker 优点
- 简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
- 避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
- 节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
架构
Docker daemon 守护进程
用Redis 举例来说 Client 就相当于 redis-cli 的客户端,Host 是 redis 的服务器端,而 Registry 相当于 github。
用 Java 来说 image 相当于 class 文件,Containers 相当于实例
-
镜像
docker镜像是使用Dockerfile脚本,将你的应用以及应用的依赖包构建而成的一个应用包,它通常带有该应用的启动命令。而这些命令会在容器启动时被执行,也就是说你的应用在启动容器时被启动。镜像时基于联合(Union)文件系统的一种层式的结构,由一系列指令一步一步构建出来。
-
容器
容器是使用 docker run --name 容器名 镜像 命令创建的,独立于宿主机(服务器)的沙箱,也可以理解为一个带有特殊结构的盒子,它在创建时会自动执行镜像自带的一些指令,从而实现该应用的运行。
狭隘地讲,容器的主要作用就在于给镜像提供运行空间和环境,并执行镜像的指令。
-
仓库
顾名思义,仓库是用来存东西的,但不是存容器,而是存储docker镜像。你可以把你的docker镜像通过push命令推送到docker仓库,然后就可以在任何能使用docker命令的地方通过pull命令把这个镜像拉取下来。有公共仓库和私有仓库两种。
-
联系
docker是沙箱机制,容器化部署技术,它主要作用在于通过运行容器来实现应用部署,而容器则基于镜像运行。因此,首先要有镜像,有了镜像才能基于镜像创建容器,才能把镜像存储在仓库。
于是可以这么理解,镜像是基础,容器是镜像使用者,仓库是镜像的管理员。容器和仓库都是围绕着镜像来运作的,是对镜像的管理和使用。
镜像是Docker 生命周期中的构建或打包阶段,容器则是启动或者执行阶段。
安装
- Docker 要求 Centos 系统的内核版本高于3.10 。通过 uname -r 命令查看内核版本
$ uname -r
2. 使用 root 权限登录 Centos,确保 yum 包更新到最新
$ yum -y update
3.卸载旧版本的Docker,如果有安装过的
$ yum remove docker docker-common docker-selinux docer-engine
4.安装需要的软件包
$ yum install -y yum-utils device-mapper-persistent-data lvm2
5.设置 yum 源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6.查看所有仓库的 docker 版本(使用社区版)
$ yum list docker-ce --showduplicates | sort -r
7.安装 Docker
$ sudo yum install docker re # repo中默认只开启 stable 仓库,这里安装的是最稳定版本
$ sudo yum install <FQPN> # sudo yum install docker-ce-18.03.1.ce
报错 问题
1:执行yum clean all 清除缓存目录下的软件包及旧的headers;
2:接着执行 yum list 重新列出所有已经安装和可以安装的软件包;
3:重新执行上述命令,发现yum编译成功;
注意:如果执行 yum list 报错,那就检查一下yum仓库是否有问题;并清除/etc/yum.repos.d/下多余.repo文件!
正确安装后
8.启动并加入开机启动
$ systemctl start docker
$ systemctl enable docker
9.验证是否安装成功(有client 和 service)
$ docker version
10.查看是否运行
$ ps -ef | grep docker
10.1 查看docker 程序是否正常工作
# docker info
返回所有容器和镜像得数量、使用得执行驱动和存储驱动,以及Docker 得配置
## 镜像加速器
使用 阿里云的镜像加速器。 https://q5mbujdh.mirror.aliyuncs.com
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://q5mbujdh.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker