前言

之前发过Zabbix监控系统的搭建,ELK日志分析平台的搭建等几篇文章,那是很多网友给我发了消息。 他说不用做那么麻烦的事,用Docker导入就行了,自己就可以了。 Docker真的很厉害吗? 我们通常不花时间部署一套系统APP。 如果在部署过程中遇到任何问题,一天内很难解决,使用Dorcker技术能大幅缩短部署时间吗? 今天学习这个技术吧。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

需要部署

Docker是什么

APP服务时,以部署Zabbix监视系统为例。 传统的部署方法是在物理服务器上安装操作系统(如Linux系统)和依赖环境(如lamp(LinuxApacheMySQLPHP )和Zabbix ),以部署Zabbix监视系统

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

这样的部署方法有几个问题,最明显的资源会产生浪费。 现在的物理服务器动不了的有十几个核心的CPU、10g的内存、几t的硬盘。 如果只部署一个APP服务,则完全不需要这样高的配置。 CPU和内存利用率经常低于10%。 之后发现,有了虚拟化技术,通过VMware等虚拟化软件,利用虚拟机管理程序虚拟化技术将一台物理服务器分割为多个虚拟机,根据APP服务的需要适当分配CPU、内存资源。 然后,通过安装不同的操作系统部署不同的APP服务,可以相对有效地利用这种部署方法的资源。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

实际上,虚拟机还没有充分利用资源。 即使最初只分割一个核心的CPU,将2G内存分配给一台虚拟机,其物理资源实际上正在使用,但运行中的APP服务有时只需要很少的资源。 因此,我们的目标是能否将物理资源直接分配给APP服务,可以根据需要分配任意数量的APP服务。 例如,如果部署Zabbix监视系统,将包括许多依赖和服务。 所有这些依赖服务的集合(LAMP环境zabbix服务器、zabbix数据库、Zabbix Web等)在Docker中可以理解为被称为容器——的APP。 每个容器相当于运行一个APP服务,彼此隔离,互不影响。 另外,我们传统的APP部署方法不利于迁移和扩展。 例如,我的APP服务在Linux平台上。 我现在正在尝试将其迁移到Windows平台。 这一定不能转移。 此外,还必须基于Windows平台构建环境。 使用Docker Container,您只需要在各种操作系统平台上顺利运行,并在新环境中启动所需的容器即可。 这样可以大大减少部署时间,从而降低部署过程中出现问题的风险。 这是Docker的基本作用。 更多资料请访问Docker官方网站www.docker.com。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

要学习

Docker三大核心概念

docker容器技术,必须了解三个最重要的概念: Image、Container和Repository。 大部分操作围绕这三个主要概念进行。

Image :镜像是创建容器的基础,可以理解为只读模板。 例如,如果部署Zabbix监视系统需要多台服务器,则可以将Zabbix监视系统APP应用程序及其依赖关系打包到一个Image文件中,以创建Zabbix监视系统的镜像作为模板。 想要部署的服务器和复制这个镜像文件一样。 容器:容器是通过镜像创建的执行实例,可以启动、停止、删除等,创建的每个容器都是相互隔离的。 集装箱正在运行我们需要的APP服务。 例如,Docker部署Zabbix监视系统就像从标准Zabbix监视系统镜像到本地服务器,然后基于该Image文件生成并运行容器实例一样。 此外,还可以更改配置。 存储库:仓库是集中存储镜像的地方,zydlc在创建自己的镜像后,可以使用推送命令将其上传到仓库。 这样一来,现在在其他服务器上使用该镜像时,只需要使用pull命令从仓库下载即可。 资产管理系统

ry分为公有和私有,最常用的Repository是官方的Docker Hub ,这也是默认的Repository,并且拥有大量的官方镜像可以使用。网址为:hub.docker.com/ 。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

Docker安装

Docker分为两个版本:社区版(Community Edition,缩写 CE)和企业版(Enterprise Edition,缩写 EE)。社区版本包括了大部分的核心功能满足大部分的需求。企业版包含了一些收费服务,个人用户一般用不到。所以我以CentOS7系统安装Docker CE为例。可参考官网文档进行安装https://docs.docker.com/install/linux/docker-ce/centos/

1.安装docker依赖于系统的一些必要工具。

# yum install -y yum-utils device-mapper-persistent-data lvm2

2.添加docker ce版本yum源,这里是官方的,当然你也可以换为国内的yum源,比如阿里云等。

# yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装docker ce。

# yum install -y docker-ce

4.安装完成后启动docker。

# systemctl start docker

这样Docker就安装完成了。

Docker基本使用

我们之前说Docker的三大核心概念,其中镜像是最重要的,它是运行容器的前提。那么我们可以使用pull命令先从默认镜像仓库Docker Hub网站拉取你需要的镜像,比如tomcat应用服务镜像。

# docker pull tomcatUsing default tag: latestlatest: Pulling from library/tomcat844c33c7e6ea: Downloading 19.32MB/45.38MB…81f4cc5808bc: Pull completeDigest: sha256:996d406c509a4ebe2f4e96eeda331a354f1663b7ec0ff06685b75c4decef7325Status: Downloaded newer image for tomcat:latestdocker.io/library/tomcat:latest

下载镜像到本地后使用images命令查看镜像

# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtomcat latest 6408fdc94212 8 days ago 507MB

如果想要删除镜像。

# docker rmi tomcat

容器是镜像的一个运行实例,当我们获取tomcat镜像到本地后,那么我们就可以根据这个tomcat镜像来创建容器了。使用run命令创建一个名为mytomcat的容器,如果需运行在后台使用-d参数,这样docker容器在后台以守护进程形式运行。

# docker run –d –name mytomcat tomcat

查看当前的mytomcat容器已经运行。

# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0acdd7e8a944 tomcat “catalina.sh run” 35 seconds ago Up 34 seconds 8080/tcp mytomcat

但是tomcat是在docker容器下运行的,如果外部需要访问就要做一个端口映射,比如把mytomcat容器的 8080 端口映射到本机的 8000 端口上。

# docker run -d –name mytomcat -p 8000:8080 tomcat

如果想要停止运行mytomcat容器。

# docker stop mytomcat

如果想删除mytomcat容器。

# docker rm mytomcat

容器一般会在后台运行,我们无法看到容器的信息,如果需要进入容器使用exec命令进行交互式操作。通过-it参数打开标准输入并且分配一个伪终端。

# docker run -d –name mytomcat -p 8000:8080 tomcat01382c5529da079070da8933a0056e0d469f89eda79a80a26b9872cb1699d291# docker exec -it mytomcat /bin/bash root@01382c5529da:/usr/local/tomcat#

可以看到打开了一个新的bash终端,仿佛我们进入到了另外一个Linux系统了,且当前的路径为/usr/local/tomcat,其实我们就可以理解为每个容器底层它就是一个Linux系统,只是这个系统占用的资源是非常小的。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

Docker架构

通过以上Docker的介绍相信大家这张Docker架构图就很容易看懂了吧,Docker 采用的是客户端-服务器 (C/S) 架构模式。用户在Docker Client端通过docker相关命令,如docker build创建镜像,docker run从镜像运行容器,docker pull 从镜像仓库下载镜像到本地仓库等发送请求到Docker Daemon后台的系统服务进程,Docker Daemon即Server端收到请求后执行不同的任务,比如需要镜像从镜像仓库下载镜像,生成运行容器等。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

总结

本篇文章就简单介绍了一下Docker容器技术的一些基本概念及基本操作,希望能够使大家对Docker有了一定的了解,后面大家如果对Docker容器技术有兴趣可以搭建类似的环境安装使用一下Docker,并做更深入地学习!

快三技巧准确率100Etomcat latest 6408fdc94212 8 days ago 507MB

如果想要删除镜像。

# docker rmi tomcat

容器是镜像的一个运行实例,当我们获取tomcat镜像到本地后,那么我们就可以根据这个tomcat镜像来创建容器了。使用run命令创建一个名为mytomcat的容器,如果需运行在后台使用-d参数,这样docker容器在后台以守护进程形式运行。

# docker run –d –name mytomcat tomcat

查看当前的mytomcat容器已经运行。

# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0acdd7e8a944 tomcat “catalina.sh run” 35 seconds ago Up 34 seconds 8080/tcp mytomcat

但是tomcat是在docker容器下运行的,如果外部需要访问就要做一个端口映射,比如把mytomcat容器的 8080 端口映射到本机的 8000 端口上。

# docker run -d –name mytomcat -p 8000:8080 tomcat

如果想要停止运行mytomcat容器。

# docker stop mytomcat

如果想删除mytomcat容器。

# docker rm mytomcat

容器一般会在后台运行,我们无法看到容器的信息,如果需要进入容器使用exec命令进行交互式操作。通过-it参数打开标准输入并且分配一个伪终端。

# docker run -d –name mytomcat -p 8000:8080 tomcat01382c5529da079070da8933a0056e0d469f89eda79a80a26b9872cb1699d291# docker exec -it mytomcat /bin/bash root@01382c5529da:/usr/local/tomcat#

可以看到打开了一个新的bash终端,仿佛我们进入到了另外一个Linux系统了,且当前的路径为/usr/local/tomcat,其实我们就可以理解为每个容器底层它就是一个Linux系统,只是这个系统占用的资源是非常小的。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

Docker架构

通过以上Docker的介绍相信大家这张Docker架构图就很容易看懂了吧,Docker 采用的是客户端-服务器 (C/S) 架构模式。用户在Docker Client端通过docker相关命令,如docker build创建镜像,docker run从镜像运行容器,docker pull 从镜像仓库下载镜像到本地仓库等发送请求到Docker Daemon后台的系统服务进程,Docker Daemon即Server端收到请求后执行不同的任务,比如需要镜像从镜像仓库下载镜像,生成运行容器等。

docker 菜鸟教程(唇语快速入门)-冯金伟博客园

总结

本篇文章就简单介绍了一下Docker容器技术的一些基本概念及基本操作,希望能够使大家对Docker有了一定的了解,后面大家如果对Docker容器技术有兴趣可以搭建类似的环境安装使用一下Docker,并做更深入地学习!