前言
最近在B站学习Docker的使用,于是决定记一下学习笔记,如果有哪里写的有问题,还希望大家指出。
一、Docker为什么会出现
任何一个东西的产生都是有原因的,那么Docker的出现也不例外。举个栗子:一款产品从开发到上线,一般是有两套环境的,即开发人员的本地的应用环境和配置和项目上线后运维的部署环境。那么很容易产生一种问题:版本更新导致服务不可用,这对于运维人员来说考验巨大,毕竟环境配置是十分麻烦的一件事,比如每台机器都要配置jdk,hadoop集群,redis集群等等,费时又费力。(小声bb:我是大数据专业的,我的基本所有专业课有一半的时间都是水在搭建集群环境!!!)
而Docker就很好的解决了这个问题,传统的过程通俗点来说就是开发打个jar包过来,然后环境部署配置就由运维来做;现在有了docker项目打包部署一套流程做完,或者可以理解为有了docker,在打包项目的时候可以把环境连(镜像)同打包,只需要到Docker仓库下载发布的镜像,直接运行程序即可,十分的nice。
二、Docker概述
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
这些都是官方文档中所描述的,听起来比较高大上,就我的理解来看它与传统的虚拟机的区别就是:它虚拟的不是一个完整的操作系统,容器中的应用直接运行在宿主机的内核,容器是没有自己的内核的,也没有虚拟硬件,所以相比传统的虚拟机更轻便,并且每个容器间是隔离的,每个容器都有自己的文件系统,互补影响。
三、Docker的基本组成
镜像(image):docker的镜像就好比一个模板,可以通过这个模板来创建容器服务。通过这个镜像可以创建多个容器(最终项目或服务运行就是在容器中的)。
容器(container):docker利用容器技术,独立运行一个或一组应用,通过镜像来创建。这里我是简单的把它理解成一个简易的“轻量”操作系统。
仓库(repository):仓库就是存放镜像的地方,分为公有和私有。同maven仓库的概念一样。
四、Docker安装
要求:Linux内核3.8以上,Centos7,通过MobaXterm连接到服务。
[root@node1 ~]# uname -r
3.10.0-1062.el7.x86_64
系统版本
[root@node1 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
下载需要的安装包
yum install -y yum-utils
设置镜像仓库
这里需要注意,默认的是使用的国外的镜像源,特别慢,推荐使用阿里或者清华的镜像源。
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装docker相关的依赖
这里我们选的是docker-ce 社区版
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
测试验证helloworld
docker run hello-world