专栏首页AlbertYang的编程之路【云+社区年度征文】Docker教程(1)—Docker简介与安装
原创

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

一. 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发布。

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

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. 卸载旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.2.2.安装依赖软件包

sudo yum install -y yum-utils

2.2.3.设置镜像仓库

默认国外可能比较慢:

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

可以使用阿云镜像安装:

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,即社区版和企业版,因为企业版需要官方授权,所以我们一般用社区版。

sudo yum install docker-ce docker-ce-cli containerd.io

2.2.5. 启动Docker

sudo systemctl start docker

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

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

sudo docker run hello-world

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

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

2.3 卸载Docker

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

sudo yum remove docker-ce docker-ce-cli containerd.io

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

sudo rm -rf /var/lib/docker

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

三. 腾讯云镜像加速

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

此处以腾讯云为例。​

3.1. 配置镜像加速器

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

vim /etc/docker/daemon.json

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

{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

3.重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

3.2 检查加速器是否生效

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

docker info

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【云+社区年度征文】Docker教程(3)—Docker安装Tomcat,Nginx与可视化工具Portainer

    前面我们讲了Docker的安装使用,以及一些常用的命令。俗话说只说不练假把式,接下来我们使用安装Docker安装一些常用的镜像,练习一下Docker命令的使用。

    AlbertYang
  • 【云+社区年度征文】Docker教程(2)—Docker常用基础命令

    可选参数:列出所有镜像,-a, --all 。只显示镜像id ,-q, --quiet。

    AlbertYang
  • 【云+社区年度征文】Deepin 安装 Postgres 及 docker 持久化

    PostgreSQL: The World's Most Advanced Open Source Relational Database

    caoayu
  • 【干货合集】Docker快速入门与进阶

    Docker 在众多技术中,绝对是当红炸子鸡。这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术?Docker 也是云计算技术中较为热门的...

    云加社区
  • 云+社区【玩转腾讯云】视频征稿活动获奖名单公布

    由腾讯云+社区主办的云+社区【玩转腾讯云】之视频征稿活动在2021年04月19号圆满的落下帷幕。视频征稿活动自2021年03月发布后,吸引了众多社区内的小伙伴。...

    云加社区
  • PaddlePaddle发布基于Docker的AI系统开发流程

    继两周前(2017年3月11日)PaddlePaddle社区发布新的PythonAPI之后,最近又发布了对应的新版Docker镜像,并优化了镜像的体积和组织方式...

    用户1386409
  • Docker最全教程之使用Docker搭建Java开发环境(十七)

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。J...

    雪雁-心莱科技
  • Docker最全教程之使用Docker搭建Java开发环境(十八)

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。J...

    心莱科技雪雁
  • 【干货合辑】毕业季,如何敲开「IT世界」的大门

    现在 IT 新技术日新月异,IT 行业的工作也变得赤手可热。刚毕业的大学生也蜂拥而至,但是在校的学习经验并没有一定的专业领域的实操经验,而被企业拒之门外。那么,...

    云加社区
  • 【云+社区年度征文】我与腾讯云。

    我是一个程序员,因此比较需要一台自己的服务器,配置呢不需要太高,平时跑一些小项目,和数据库的测试。一次偶然的机会,接触到腾讯云,当时是一百元一年,一口气就买了三...

    崔笑颜
  • 01 . 容器编排简介及Kubernetes核心概念

    ``docker run -H " 我的 Swarm 集群 API 地址 " " 我的容器 "`

    常见_youmen
  • Docker简介、安装、基本配置

    主要架构为:镜像(images)、容器(container)、仓库(repository)

    PayneWu
  • 如何在Ubuntu 14.04上使用Fluentd和ElasticSearch集中Docker日志

    Fluentd是一个开源数据收集器,旨在统一日志记录基础架构。它旨在通过简化和扩展日志来收集和存储日志,从而将运营工程师,应用工程师和数据工程师聚集在一起。

    信姜缘
  • Docker学习教程笔记第二篇:Docker从入门到熟练使用详解

    Docker的基础是Linux容器(LXC)等技术,(LXC系统提供工具来管理容器,具有先进的网络和存储支持,还有最小容器操作系统模版的广泛选择)。

    聚优云惠
  • 年轻人的第一个 Docker 应用,大大提高生产力!

    哈哈,标题我抄了雷总的,不重要哦,重要的是 Docker 真的很年轻,虽然现在才不到 8 岁,但却是个冉冉升起的巨星,火得一塌糊涂。

    Java技术栈
  • 1024程序员节献礼 | 精通Docker的50个必备教程、工具、资源

    ? 作者:Angela Stringfellow 译者:海松 原题:Master Docker: The Complete Toolkit Includi...

    yuanyi928
  • Docker安装教程

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

    微笑的小小刀
  • 一篇文章,四种方法教你在Linux上安装MariaDB

    2008年1月16日,MySQL AB 宣布它已经同意被Sun微系统集团以大约10亿美元的价格收购。该项收购已于2008年2月26日完成。而这也意味着,MySQ...

    Mintimate
  • 在Rocky Linux 8.3 RC1上安装Docker CE

    生产环境:Rocky Linux release 8.3, Docker CE 20.10.6

    欧巴云

扫码关注云+社区

领取腾讯云代金券