前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云+社区年度征文】Docker教程(1)—Docker简介与安装

【云+社区年度征文】Docker教程(1)—Docker简介与安装

原创
作者头像
AlbertYang
修改2020-11-26 10:09:40
7710
修改2020-11-26 10:09:40
举报

一. Docker介绍

1.1 我们为什么需要Docker?

我们开发一个项目的时候通常会有两个环境,本地测试环境和线上环境。项目开发上线的时候,我们通常会把项目打成一个jar包或war包上传到线上的服务器,此时为了让项目能够运行,我们还要为线上的服务器配置项目的运行环境JDK,Tomcat,ES,Mysql,Redis,Hadoop等等,配置非常麻烦,特别对于搭建集群的时候更麻烦。有时候还会因为本地环境和线上环境的不一致导致很多问题,我们都应该都听说过这句话,我本地运行没问题啊。

Docker给以上问题提出了解决方案,它可以让我们发布项目的时候,能带上项目的运行环境打包。(jar+JDK+Mysql+Redis+ES)。

1.2 Docker的历史

2010年一帮年轻人创办了一家专门做PAAS平台的公司。

2013年,他们将公司内的核心技术(容器化技术)对外开源,命名为Docker。

2014年4月9日,Docker1.0发布。

Docker作者
Docker作者

1.3 Docker的思想

Docker 是一个基于 Go语言的开源的应用容器引擎。Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。

比较Docker和虚拟机技术的不同:

1.虚拟机是虚拟出操作系统所需要的的一系列硬件,然后运行一个完整的操作系统,在这个系统上安装软件和应用。 2.容器直接运行在宿主的操作系统上,容器没有自己的内核,也没有虚拟一系列硬件。 3.每个容器之间是相互隔离的,每个容器内都有自己独有的文件系统和运行环境,和其他容器互不影响。

1.4 Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

1.5 Docker 的优点

1.5.1 快速,一致地交付您的应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  • 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
  • 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

1.5.2 响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

1.5.3 在同一硬件上运行更多工作负载

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。服务器的性能可以被压榨到极致。

1.6 Docker 架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker

面向对象

容器

对象

镜像

技术分享图片
技术分享图片

二. Docker的安装

2.1 环境准备

腾讯云服务器:购买链接:https://curl.qcloud.com/d3kWSkyu

操作系统:centos7

代码语言:javascript
复制
PS C:\Users\Albert> ssh root@42.192.5.212 -p 22
root@42.192.5.212's password:
Last failed login: Sun Nov 22 21:43:31 CST 2020 from 209.126.2.233 on ssh:notty
There were 939 failed login attempts since the last successful login.
Last login: Sun Nov 22 11:47:56 2020 from 106.34.108.106
[root@VM-0-5-centos ~]# uname -r
3.10.0-1127.19.1.el7.x86_64
[root@VM-0-5-centos ~]# cd /
[root@VM-0-5-centos /]# 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"

[root@VM-0-5-centos /]#

2.2 安装Docker

2.2.1. 卸载旧版本

代码语言:javascript
复制
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.2.2.安装依赖软件包

代码语言:javascript
复制
sudo yum install -y yum-utils

2.2.3.设置镜像仓库

默认国外可能比较慢:

代码语言:javascript
复制
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo 

可以使用阿云镜像安装:

代码语言:javascript
复制
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.2.4. 安装Docker CE

Docker有两个分支版本:Docker CE和Docker EE,即社区版和企业版,因为企业版需要官方授权,所以我们一般用社区版。

代码语言:javascript
复制
sudo yum install docker-ce docker-ce-cli containerd.io

2.2.5. 启动Docker

代码语言:javascript
复制
sudo systemctl start docker

2.2.6. 验证是否正确安装了安装Docker CE

通过运行hello-world 映像来验证是否正确安装了Docker Engine 。

代码语言:javascript
复制
sudo docker run hello-world

此命令下载测试图像并在容器中运行它。容器运行时,打印出Hello from Docker!说明安装成功。

执行docker run hello-world之后Docker运行流程:

2.3 卸载Docker

1. 卸载Docker Engine,CLI和Containerd软件包:

代码语言:javascript
复制
sudo yum remove docker-ce docker-ce-cli containerd.io

2.删除Docker工作目录 (默认工作目录 /var/lib/docker docker ):

代码语言:javascript
复制
sudo rm -rf /var/lib/docker

3.手动删除所有已编辑的配置文件。

三. 腾讯云镜像加速

国内从 DockerHub 拉取镜像非常慢,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

此处以腾讯云为例。​

3.1. 配置镜像加速器

1.打开 /etc/docker/daemon.json 配置文件

代码语言:javascript
复制
vim /etc/docker/daemon.json

2.按 i 切换至编辑模式,添加以下内容,并保存。

代码语言:javascript
复制
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

3.重启docker

代码语言:javascript
复制
sudo systemctl daemon-reload
sudo systemctl restart docker

3.2 检查加速器是否生效

在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

代码语言:javascript
复制
docker info

参考链接:https://docs.docker.com/engine/install/centos/

今天的学习就到这里了,由于本人能力和知识有限,如果有写的不对的地方,还请各位大佬批评指正。如果想继续学习提高,欢迎关注我,每天学习进步一点点,就是领先的开始,加油。如果觉得本文对你有帮助的话,欢迎转发,评论,点赞!!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. Docker介绍
    • 1.1 我们为什么需要Docker?
      • 1.2 Docker的历史
        • 1.3 Docker的思想
          • 1.4 Docker的应用场景
            • 1.5 Docker 的优点
              • 1.5.1 快速,一致地交付您的应用程序
              • 1.5.2 响应式部署和扩展
              • 1.5.3 在同一硬件上运行更多工作负载
            • 1.6 Docker 架构
            • 二. Docker的安装
              • 2.1 环境准备
                • 2.2 安装Docker
                  • 2.2.1. 卸载旧版本
                  • 2.2.2.安装依赖软件包
                  • 2.2.3.设置镜像仓库
                  • 2.2.4. 安装Docker CE
                  • 2.2.5. 启动Docker
                  • 2.2.6. 验证是否正确安装了安装Docker CE
                • 2.3 卸载Docker
                • 三. 腾讯云镜像加速
                  • 3.1. 配置镜像加速器
                    • 3.2 检查加速器是否生效
                    相关产品与服务
                    容器镜像服务
                    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档