Docker容器简介、优缺点与安装

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker容器简介、优缺点与安装


Docker简介

Docker 是一个开源的应用容器引擎, 是一种运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器,基于 Go 语言 并遵从 Apache2.0 协议开源,是在 GitHub 上开发的 Moby 开源项目的一部分。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 创立,其标志如下图所示。Docker 公司起初是一家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。底层技术上,dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。

1.1

Docker的应用场景

1.简化不同环境配置差异虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件, 系统), Docker在降低额外开销的情况下提供了同样的功能. 它能让你将运行环境和配置放在代码汇总然后部署, 同一个Docker的配置可以在不同的环境环境中使用, 这样就降低了硬件要求和应用环境之间耦合度。

2.代码流水线管理代码从开发者的机器到最终在生产环境上的部署, 需要经过很多的中间环境,而每一个中间环境都有自己微小的差别, Docker给应用提供了一个从开发到上线均一致的环境, 让代码的流水线变得简单不少。

3.提升开发效率不同环境中, 开发者的共同目标:(1)让开发环境尽量贴近生产环境.(2)快速搭建开发环境开发环境的机器通常内存比较小, 之前使用虚拟的时候, 我们经常需要为开发环境的机器加内存, 而现在Docker可以轻易的让几十个服务在Docker中跑起来。

4.隔离应用开发时会在一个台机器上运行不同的应用.(1) 为了降低成本, 进行服务器整合(2)将一个整体式的应用拆分成低耦合的单个服务(微服务架构)

5.整合服务器Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用, 以及能在多个实例之间共享没有使用的内存, Docker可以比虚拟机提供更好的服务器整合解决方案。

6.调试能力Docker提供了很多的工具, 这些工具不一定只是针对容器, 但是却适用于容器. 他们提供了很多功能, 包括可以为容器设置检查点, 设置版本, 查看两个容器之间的差别, 这些特性可以帮助调试Bug.

7.多租户环境多租户环境的应用中, 它可以避免关键应用的重写.我们一个特别的关于这个场景的例子是为loT(物联网)的应用开发一个快速, 易用的多租户环境. 这种多租户的基本代码非常复杂, 很难处理, 重新规划以应用不但消耗时间, 也浪费金钱.

使用Docker, 可以为每一个租户的应用层的多个实例创建隔离的环境, 这不仅简单而且成本低廉, 因为Docker环境启动的速度快, diff命令很高效.

8.快速部署Docker为进程创建一个容器, 不需要启动一个操作系统, 时间缩短为秒级别.可以在数据中心创建销毁资源而无须担心重新启动带来的开销. 通常数据中心的资源利用率只有30% , 通过使用Docker并进行有效的资源分配可以提高资源的利用率。

9.环境标准化和版本控制Docker容器可以在不同的开发与产品发布生命周期中确保一致性,进而标准化你的环境。除此之外,Docker容器还可以像git仓库一样,可以让你提交变更到Docker镜像中并通过不同的版本来管理它们。设想如果你因为完成了一个组件的升级而导致你整个环境都损坏了,Docker可以让你轻松地回滚到这个镜像的前一个版本。这整个过程可以在几分钟内完成,如果和虚拟机的备份或者镜像创建流程对比,那Docker算相当快的,它可以让你快速地进行复制和实现冗余。此外,启动Docker就和运行一个进程一样快。

1.2 Docker的优缺点

优点

  • 跨平台可移植性:按统一标准打包(镜像中),可传播。
  • 面向应用:优化部署应用(设计哲学)→API,接口及文档(体现)。
  • 版本控制:追踪、查询、记录版本信息(应用程序更改史)和回滚版本等
  • 组件复用:组件式搭建(基础镜像)→Python(运行环境) | postgreasql(基础镜像)。
  • 共享性:公共的注册服务器(可免费下载源码)。

缺点Docker 的安装非常容易.目前,Docker支持所有的Linux系列系统,(Ubuntu,RHEL,Debian等).通过Boot2Docker虚拟工具,在OS X 和 Windows下也能够正常运行Docker.注: Docker运行环境的限制:

  • 必须是64位机器上运行,目前仅支持 x86_64和AMD64,32系统不支持.
  • 系统的Linux内核必须是3.8或者更高,内核支持Device Mapper,AUFS,VFS,btrfs等存储格式.
  • 内核必须支持cgroups和命名空间.

1.3 Docker运行时与编排引擎

多数技术人员在谈到 Docker 时,主要是指 Docker 引擎。

Docker 引擎是用于运行和编排容器的基础设施工具。有 VMware 管理经验的读者可以将其类比为 ESXi。

ESXi 是运行虚拟机的核心管理程序,而 Docker 引擎是运行容器的核心容器运行时。

其他 Docker 公司或第三方的产品都是围绕 Docker 引擎进行开发和集成的。

如下图所示,Docker 引擎位于中心,其他产品基于 Docker 引擎的核心功能进行集成。Docker 引擎可以从 Docker 网站下载,也可以基于 GitHub 上的源码进行构建。无论是开源版本还是商业版本,都有 Linux 和 Windows 版本。

Docker 引擎主要有两个版本:企业版(EE)和社区版(CE)。

每个季度,企业版和社区版都会发布一个稳定版本。社区版本会提供 4 个月的支持,而企业版本会提供 12 个月的支持。

社区版还会通过 Edge 方式发布月度版。

从 2017 年第一季度开始,Docker 版本号遵循 YY.MM-xx 格式,类似于 Ubuntu 等项目。例如,2018 年 6 月第一次发布的社区版本为 18.06.0-ce。

注:2017 年第一季度以前,Docker 版本号遵循大版本号.小版本号的格式。采用新格式前的最后一个版本是 Docker 1.13。

Docker的安装

Docker 可以安装在 Windows、Mac、 Linux 系统之上。既可以在云上安装,也可以在个人笔记本电脑上安装。

2.

Ubuntu安装Docker

安装新版本的Docker之前,需要先检查是否已安装旧版本的Docker,如果已安装先卸载。Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

$ apt-get remove docker docker-engine docker.io containerd runc

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker 。

(1)设置仓库

更新 apt 包索引。

$ apt-get update

安装 apt 依赖包,用于通过HTTPS来获取仓库:

$ apt-get install \  apt-transport-https \  ca-certificates \  curl \  gnupg-agent \  software-properties-common

添加 Docker 的官方 GPG 密钥

$ curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg | apt-key add -

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

root@ubuntu:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -OKroot@ubuntu:~# apt-key fingerprint 0EBFCD88pub   rsa4096 2017-02-22 [SCEA]      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88uid           [ unknown] Docker Release (CE deb) <docker@docker.com>sub   rsa

40962017-02-22 [S]

使用以下指令设置稳定版仓库

$ add-apt-repository \   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \  $(lsb_release -cs) \  stable"

(2)安装 Docker Engine-Community

更新 apt 包索引。

$ apt-get update

安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

$ apt-get install docker-ce docker-ce-cli containerd.io

要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本:

使用第二列中的版本字符串安装特定版本,例如 18.06.1~ce~3-0~ubuntu

$ apt-cache madison docker-ce

 docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages  docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages  docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages  docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages  ...  $ apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> c

ontainerd.io

安装完成后,运行下面的命令,验证是否安装成功。

$ docker version#或者 $ docker info

2.2

CentOS安装Docker

Docker 支持以下的 64 位 CentOS 版本:

CentOS 7CentOS 8更高版本…该 centos-extras 库必须启用。默认情况下,此仓库是启用的,但是如果已禁用它,则需要重新启用它。

卸载旧版本较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

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

安装 Docker Engine-Community使用 Docker 仓库进行安装在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

$ yum install -y yum-utils \  device-mapper-persistent-data \  lvm2

使用以下命令来设置稳定的仓库。

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

安装 Docker Engine-Community安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

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

如果提示您接受 GPG 密钥,请选是。

有多个 Docker 仓库吗?如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。

Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

$ yum list docker-ce --showduplicates | sort-r

docker-ce.x86_64  3:18.09.1-3.el7                    

docker-ce-stabledocker-ce.x86_64  3:18.09.0-3.el7                docker-ce-stabledocker-ce.x86_64  18.06.1.ce-3.el7                docker-ce-stabledocker-ce.x86_64  18.06.0.ce-3.el7                docker-ce-stable

2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1

$ yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> contain

erd.io

启动 Docker。

$ systemctl start docker

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

$ docker run hello-world


相关文章
|
15天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
152 77
|
5天前
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
102 64
|
23天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
2天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
19 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
7天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
24 3
实战~如何组织一个多容器项目docker-compose
|
6天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
61 24
|
7天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
59 24
|
6天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
73 11
|
2天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
15 4
|
17天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
59 3