不知不觉已是容器化时代,这篇文章带你快速入门Docker容器技术

 人工智能技术     |      2019-12-04 14:06

前言

码头工人真的这么神奇吗?部署一组系统应用程序不到一个小时。如果我们在部署过程中遇到任何问题,估计很难在一天内解决。使用多克技术可以大大缩短部署时间吗?让我们今天就了解这项技术吧!

什么是码头工人

当我们需要部署应用程序服务时,我将以Zabbix监控系统的部署为例。我们传统的部署方法是先在物理服务器上安装一个操作系统如Linux系统,然后在依赖环境如LAMP(Linux+Apache+Mysql+PHP)和Zabbix应用服务(Zabbix服务器、Zabbix数据库、Zabbix网站等)中部署Zabbix监控系统。)。下图显示了传统应用服务的部署模式。

这种部署模式存在一些问题,最明显的资源将被浪费。当前的物理服务器总是有十几个中央处理器内核、数百克内存和几个测试硬盘。如果只部署了一个应用程序服务,则根本不需要如此高的配置。通常情况下,中央处理器和内存使用率低于10%。因此,我们后来了解到,利用虚拟化技术,通过VMware虚拟化软件使用虚拟机管理程序虚拟化技术,将一台物理服务器划分为多个虚拟机,并根据应用服务需求合理分配CPU和内存资源。然后,安装不同的操作系统来部署不同的应用服务,从而相对有效地利用这种部署模式下的资源。

事实上,虚拟机仍然没有充分利用资源。即使您最初只将1个核心CPU和2G内存划分为一个虚拟机,物理资源实际上是被占用的,但是有时您运行的应用程序服务只需要占用一点点资源。因此,我们的目标是尽可能将物理资源直接分配给应用程序服务。例如,我们部署的Zabbix监控系统将包含许多依赖项和服务。所有这些相关服务的集合(LAMP环境+Zabbix服务器、Zabbix数据库、Zabbix网站等)。)可以理解为应用程序,在码头工人中称为容器容器。每个容器相当于运行一个应用程序服务,它是相互隔离的,不会相互影响。此外,我们传统的应用程序部署方法不利于迁移和扩展。例如,我是一个在Linux平台上的应用服务。现在我想把它移植到视窗平台。这绝对不可能迁移。我们必须建立另一个基于视窗平台的环境。然而,如果它是一个码头集装箱,它可以在不同的操作系统平台上平稳运行。它所需要做的就是在新环境中启动所需的容器。这大大节省了我们在部署上花费的时间,并降低了部署过程中出现问题的风险。这是码头工人最基本的功能。更多信息可以在码头工人的官方网站www.docker.com上找到。

码头工人的三个核心概念

为了学习码头集装箱技术,我们必须理解它的三个最重要的概念图像,集装箱和仓库。大多数操作都是围绕这三个核心概念进行的。

Image:镜像是创建容器的基础,可以理解为是一个只读模板。例如我们Zabbix监控系统需要多台服务器上进行部署,那么你就可以把Zabbix监控系统应用程序及其依赖打包到一个Image文件,创建出一个Zabbix监控系统镜像作为一个模板,想要部署的服务器相当于去拷贝这个镜像文件就可以了。 Container:容器是从镜像创建的一个运行实例,它可以被启动、停止、删除等,所创建的每一个容器都是相互隔离的。容器运行着我们所需要的应用服务,例如Docker部署Zabbix监控系统相当于先从一个标准的Zabbix监控系统镜像拷贝到本地服务器上,然后根据这个Image文件生成容器实例运行,并且你可以对其进行相关配置修改。 Repository:仓库是用来集中保存镜像的地方,当你创建完自己的镜像以后,你可以使用push推送命令将它上传到仓库,这样一来当下次要在另一台服务器上使用这个镜像的时候,你只需要使用pull命令从仓库上下载下来就可以了。Repository分为公有和私有,最常用的Repository是官方的Docker Hub ,这也是默认的Repository,并且拥有大量的官方镜像可以使用。网址为:hub.docker.com/ 。

码头安装

摘要分为两个版本:社区版和企业版。社区版本包括满足大部分需求的大部分核心功能。企业版包括一些个人用户不常使用的收费服务。因此,我以CentOS7系统中Docker CE的安装为例。可以参考官方网站文件安装Https://docs.docker.com/install/linux/docker-ce/centos/

1.安装码头工人取决于系统的一些必要工具。

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

2.添加百胜源的docker ce版本,这里是官方的。当然,你也可以用国内百胜源来代替,比如阿里云。

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

3.安装docker ce。

# yum install -y docker-ce 

4.安装后启动码头工人。

# systemctl start docker 

这就完成了码头工人的安装。

码头工人基本用途

我们之前说过Docker的三个核心概念,其中镜像是最重要的,也是运行容器的先决条件。然后,我们可以使用pull命令,首先从默认的图像存储库Docker Hub网站(如tomcat应用程序服务图像)中提取您需要的图像。

# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat 844c33c7e6ea: Downloading 19.32MB/45.38MB … 81f4cc5808bc: Pull complete Digest: sha256:996d406c509a4ebe2f4e96eeda331a354f1663b7ec0ff06685b75c4decef7325 Status: Downloaded newer image for tomcat:latest docker.io/library/tomcat:latest 

在本地下载图像后,使用images命令查看图像

# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 6408fdc94212 8 days ago 507MB 

如果您想删除镜像。

# docker rmi tomcat 

容器是镜像的运行实例。当我们在本地获得tomcat图像时,我们可以基于tomcat图像创建容器。使用run命令创建一个名为mytomcat的容器。如果您需要在后台运行它,请使用-d参数,以便docker容器作为守护进程在后台运行。

# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0acdd7e8a944 tomcat "catalina.sh run" 35 seconds ago Up 34 seconds 8080/tcp mytomcat 

检查当前mytomcat容器是否已经运行。

# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0acdd7e8a944 tomcat "catalina.sh run" 35 seconds ago Up 34 seconds 8080/tcp mytomcat 

然而,tomcat在码头集装箱下面运行。如果需要外部访问,则需要端口映射,例如将mytomcat容器的8080端口映射到这台机器的8000端口。

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

如果你想停止运行我的猫容器。

# docker stop mytomcat 

如果你想删除我的猫容器。

#码头工人rm mytomcat

容器通常在后台运行。我们看不到集装箱的信息。如果我们需要进入容器,我们可以使用exec命令进行交互操作。通过-it参数打开标准输入,并指定一个虚拟端子。

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

可以看到,一个新的bash终端打开了,就好像我们已经进入了另一个Linux系统,当前路径是/usr/local/tomcat。事实上,我们可以理解在每个容器的底部是一个Linux系统,但是这个系统占用的资源非常少。

码头建筑

通过以上对Docker的介绍,我相信每个人都能很容易地理解这个Docker架构图。Docker采用客户机-服务器架构模式。用户通过码头工人相关命令在码头工人客户端创建镜像,例如码头工人构建、码头工人运行从镜像运行容器、码头工人拉取将镜像从镜像仓库下载到本地仓库等。在后台向系统服务进程发送请求。Docker守护进程(Docker Daemon),即服务器端,在接收到请求后执行不同的任务,例如要求镜像从镜像仓库下载镜像并生成正在运行的容器等。

摘要

本文简要介绍了码头集装箱技术的一些基本概念和基本操作,希望让大家对码头有一定的了解。稍后,如果您对Docker容器技术感兴趣,您可以构建一个类似的环境来安装和使用Docker,并学习得更深入!