Docker入门1——安装和启动
昨天是1024,多了很多访问量,本着不鸽的原则,今天开始更新一下docker的连载,这一篇主要是docker的介绍和安装启动
Docker初了解
Docker是什么
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
看docker的图标,我们发现他是鲸鱼
顶着几个集装箱在海面上,集装箱之间互不干扰,其实这就是docker的初衷,把货物在集装箱里封装,docker给我们运过来,我们一次带走。
我们在不用容器之前,主要是使用虚拟机,什么VMWare或者OpenStack,大家都耳熟能详了,想在虚拟机里正常模拟使用场景,得安装软件吧,装个qq装个微信,在虚拟机和主机里,我们可以分开运行,互不干扰,甚至你多开几个虚拟机,能使用好几个“子机”,都是相互隔离互不影响的。虚拟机是虚拟化技术,而Dokcer是容器技术,也是虚拟化技术的一种,属于轻量级的虚拟化。用过VMWare的都知道,启动老半天,还特别吃配置,还要分配虚拟内存balabala,懂的都懂。但Docker不需要,它不需要模拟整个操作系统,只需要模拟一个小规模的环境,启动只需要几秒钟,也不占资源(一个主机可以运行几千个Docker容器)。
Docker解决了什么问题
比如我们后端工程师开发完了一个项目,需要在前端或者运维工程师的电脑里跑起来,可能依赖的环境很复杂,包括又不限于jdk、mysql、redis、es、mq等,那总不能给别人电脑也装一个?这个时候我们可以把项目打包发布在Docker中,让Docker在服务器中运行即可。
Docker的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Docker的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
- 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
- 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
- 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
Docker官方
Docker官网:http://www.docker.com
Docker中文网站:https://www.docker-cn.com
Docker Hub官网:https://hub.docker.com (仓库)
Docker再了解
Docker的基本组成
镜像(image)
镜像就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器
容器(container)
Docker利用容器独立运行的一个或一组应用。容器是用镜像创建的运行实例。
它可以被启用,开始,停止,删除。每个容器都是相互隔离的,保证安全的平台。
可以把容器看作是一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一摸一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的
仓库(repository)
仓库是集中存放镜像文件的场所。
仓库和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签
仓库分为公开仓库(public)和私有仓库(private)两种形式
最大的开放仓库是Docker Hub: https://hub.docker.com/ 存放了数量庞大的镜像供用户下载。
国内的公开仓库包括阿里云,网易云等
Docker的架构图
小结:
需要正确的理解仓储/镜像/容器这几个概念 :
- Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个 可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生 成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。 同一个 image 文件,可以生成多个同时运行的容器实例。
- image 文件生成的容器实例,本身也是一个文件,称为镜像文件。
- 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例, 也就是我们的容器
- 至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来 就可以了。
Docker安装
经过前面对docker的初步了解,可以上手了xdm,把服务器打开,别告诉我你要在本地装哈。
Docker官方建议我们在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。
检查环境、版本
由于我买的阿里云服务器是CentOS的,因此这里我们将Docker安装到CentOS上。
注意这里官方建议我们把Docker安装在CentOS6.5及以上,我们自己买的服务器版本一般都没有问题,太老的版本可能会产生意想不到的问题。
我们可以用 uname -r 命令查看当前系统信息(内核版本号、硬件架构、主机名称和操作系统类型 等)
[root@feng ~]# uname -r
3.10.0-514.26.2.el7.x86_64
查看版本信息 cat /etc/os-release
[root@feng ~]# 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"
安装
如果是虚拟机,确保虚拟机可以上网,服务器直接整就完事儿
(1)首先把yum包更新到最新版本
sudo yum update
(2)yum安装需要的软件包
yum install -y yum-utils
(3)设置yum源为阿里云,配置国内的镜像库(下载快一点)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装docker
sudo yum install docker-ce
安装结束后查看docker版本 docker -v
Complete!
[root@xueshan ~]# docker -v
Docker version 19.03.13, build 4484c46d9d
[root@xueshan ~]#
到这里虽然安装完了,但我们要把镜像加速配置一下,不然默认去国外的镜像加载,小鲸鱼都跑不起来啊
配置阿里云镜像加速
1、登录阿里云容器镜像服务
https://www.aliyun.com/product/acr
2、点击镜像加速器
3、复制该链接
直接拿去运行都行
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://*****.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
配置完毕
启动docker
#启动docker
systemctl start docker
#测试几个命令
#查看docker版本
docker version
#启动docker的hello-world
docker run hello-world
#查看docker镜像
docker images
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#查看docker的状态
systemctl status docker
#开机启动:
systemctl enable docker
#查看docker概要信息:
docker info
#查看docker帮助文档:
docker --help
最后这个docker–help可以加深印象,如果遇到命令不清楚,使用这个相当于唤起快速帮助,告诉你命令怎么用,需要加什么参数
如
[root@xueshan ~]# docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
启动一个docker服务
我们测试docker的HelloWorld
运行
docker run hello-world
那Docker启动时又做了什么呢?
Docker工作原理浅谈
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户 端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们 前面说到的集装箱。
下一篇更新详细的docker命令!