Docker性能相关知识
-
Docker的性能损耗:以基因组分析流程为例IBM Research在2014年的一篇论文中,曾对比了Docker容器和虚拟机对CPU和内存的性能损耗,相比传统虚拟机技术,容器的性能更佳。那么对比物理机,Docker的性能又是怎样的呢?2015年9月的一篇论文『The impact of Docker containers on the performance of genomic pipelines』,通过对比基因组分析流程在物理机和Docker环境中运行,所花费的时间,评估Docker带来的性能损耗。以下为译文(计算生物学部分翻译若有不准确之处,还请理解):简介基因组程序通常会涉及多个第三方的软件,这些应用有很多是学院派的原型应用,安装、配置和部署都有一定困难。因为在一个特定环境中运行的程序,对其它程序,库和组件有很多隐含的依赖。这样一来,在一个环境中构造出来的计算分析流程,很难在另一个环境中顺利地运行起来。而且实验数据的经常变化,也造成了部署和生产环境中的很多问题。过去,我们会采用虚拟化技术来处理这种问题。但是,这种方式有一些重大缺陷。虚拟
-
JVM性能调优实践——JVM篇前言在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践——性能指标分析。JVM的调优和故障处理可以使用JDK的几个常用命令工具。因为本文是基于Docker容器内部的Springboot服务。需要调整一下docker容器的启动参数,才可以使用jmap等工具。jmap命令需要使用Linux的Capability的PTRACE_ATTACH权限。而Docker自1.10在默认的seccomp配置文件中禁用了PTRACE_ATTACH。目前使用的Docker version是17.04.0-ce。支持的Capability列表可以详看runtime-privilege-and-linux-capabilities。调整Capability的方式也比较方便。可以如下直接在运行参数后面加 cap_add,cap-drop$docker run --cap-add=ALL
-
使用 Docker 的用户名字空间功能用户名字空间User Namespaces 于 Docker 1.10 版本正式纳入其中,该功能允许主机系统将自身的 uid 和 gid 映射为容器进程中的另一个 uid 和 gid。这对 Docker 的安全性来说是一项巨大的改进。下面我会通过一个案例来展示一下用户名字空间能够解决的问题,以及如何启用该功能。创建一个 Docker Machine如果你已经创建好了一台用来试验用户名字空间的 docker 机器Machine,那么可以跳过这一步。我在自己的 Macbook 上安装了 Docker Toolbox,因此我只需用 docker-machine 命令就很简单地创建一个基于 VirtualBox 的 Docker 机器(这里假设主机名为 host1):# Create host1 $ docker-machine create --driver virtualbox host1 # Login to
-
不用安装docker也能构建docker镜像前提 docker 容器镜像仓库 这里举例可以公用的两个 dockerhub 阿里云容器镜像服务 前言 本文主要介绍的是google开源的一个java领域的docker构建工具jib. 目前在github上的start有8.5k,fork有784,是一款非常方便的java领域docker构建工具. 亮点是不需要Docker daemon,意味着即使本地没有安装docker也能通过jib构建docker镜像,并且可以构建符合OCI规范的镜像. 官方支持三种方式: maven插件 grade插件 jib代码库 本文使用的是springboot项目通过maven插件的方式进行讲述. 讲一下第
Docker性能相关课程
Docker性能相关教程
- 2.1 Docker Swarm Docker Swarm 是一个由 Docker 开发的调度框架。它的使用方式接近 Docker 本身,加之 Docker Machine 可以快速创建部署 Docker 宿主机,使得 Swarm 整体部署和使用非常简单,易于上手。2.1.1 功能特性集群管理集成进 Docker Engine;去中心化设计;声明式服务模型;服务扩容缩容;协调预期状态与实际状态的一致性;多主机网络;服务发现;负载均衡;安全策略;滚动更新。
- 3. Docker 安装 在不同的操作系统中都可以安装 Docker ,本节内容中只演示 Ubuntu 环境下的 Docker 安装。本次安装演示的 Ubuntu 版本为 Ubuntu 20.04.1 LTS 。apt 更换国内源在安装应用之前,我们需要把 apt 更换为国内源,这里我们选择阿里云的 mirros.aliyun.com。# 备份 apt 源列表文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak# 更换源为 mirros.aliyun.comsudo sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list# 更新源sudo apt-get cleansudo apt-get update更换完毕后,我们还需要安装 apt 的一些工具,如 https,curl 等。安装 apt 依赖包sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common获取 GPG 密钥证书我们这里使用阿里云的镜像来获取 GPG 密钥:curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -获取成功会返回 OK ,我们使用 apt-key finger 命令查看:apt-key finger# 输出密钥信息/etc/apt/trusted.gpg--------------------pub rsa4096 2017-02-22 [SCEA]9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88uid [ unknown] Docker Release (CE deb) <docker@docker.com>sub rsa4096 2017-02-22 [S]密钥添加成功后,我们就可以开始后续的安装了。添加 Docker 源为了更快速的安装 Docker,这里我们添加阿里云的 Docker 源,首先我们先使用 lsb_release -a 命令获取当前系统的 Codename:lsb_release -a# 输出系统信息No LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 20.04.1 LTSRelease: 20.04Codename: focal本系统的 Codename 也就是版本代码为 focal,我们在添加 Docker 源的时候就会使用这个版本:# 添加 docker-ce 源,系统为 ubuntu,系统版本为 focal, stable 为 docker 稳定版。sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable"执行完毕后,我们需要更新 apt 源:sudo apt-get updateDocker 安装更新完源后,我们就可以开始安装 Docker 组件了:sudo apt-get install docker-ce docker-ce-cli containerd.io执行这一行命令需要一点时间,稍等片刻。完成后我们就可以来查看 Docker 是否安装成功了。查看 Docker 版本使用 docker -v 来查看 Docker 版本:docker -v# 输出 docker 版本信息Docker version 19.03.13, build 4484c46d9d看到版本信息输出就说明我们的 Docker 源安装成功了。Tips: 如果安装失败,需要注意系统的版本和添加的 Docker 源是否能使用。安装成功后,我们来添加 Docker Image 镜像源。添加 Docker Image 镜像源使用阿里云的 Docker Image 镜像源,需要登录阿里云官网开启 容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors添加 Docker Image 镜像源为阿里云镜像,这里同学们使用自己账号的加速器地址即可:sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]}EOF添加完毕后,我们就可以启动我们的 Docker 服务了。启动 Dockerservice docker start# 输出启动信息* Starting Docker: docker 启动完成,接下来我们进行测试。Docker 测试执行测试命令:docker run hello-world输出:Unable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world0e03bdcc26d7: Pull complete Digest: sha256:4cf9c47f86df71d48364001ede3a4fcd85ae80ce02ebad74156906caff5378bcStatus: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/我们看到这段信息就说明,我们的 Docker 测试成功了。那么接下来,我们就可以使用 Docker 来安装 Zookeeper 服务。
- 4.2 Docker 容器 Docker 容器与我们之前的容器在本质上没有区别,我们之前的容器更偏向抽象的技术概念,而受到在 Docker 管理约束的容器就是 Docker 容器,它会带有 Docker 产品的一些特征和功能。Docker镜像 和 Docker容器 的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。从文件系统来看,Docker容器比Docker镜像多一层可读写的文件系统挂载层,从生命周期来看,Docker容器可以被创建、启动、停止、删除、暂停等。
- 2. Docker 介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 系统或 Windows 系统上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。首先我们来简单了解一下 Docker 的组成。在 Docker 中有 4 个基本组成:Docker Image 镜像Docker Container 容器Docker Client 客户端Docker Daemon 守护进程Docker 和 Zookeeper 同样是 C/S 的架构,Docker 服务端通过 Docker Daemon 守护进程来维持长时间的运行,Docker Client 客户端通过 CLI 的 API 来对 Docker 服务端的 Docker Image 镜像和 Docker Container 容器来进行操作。我们通过 API 去 Docker Hub 的官网拉取 Image 镜像,然后通过 Image 镜像来创建 Container 容器。在我们使用 Docker 来搭建 Zookeeper 集群的时候,也同样的先去 Docker Hub 的官网拉取 Zookeeper 的镜像,然后通过这个 Zookeeper 镜像就能创建 Zookeeper 的容器实例了。这个 Zookeeper 的容器实例就是一个 Zookeeper 服务,我们就可以通过 Zookeeper 客户端来进行连接和操作了。简单了介绍了 Docker ,接下来我们介绍如何安装 Docker。
- 1. CentOS 安装 Docker Tips:CentOS8 的推荐的新包管理工具是 dnf,所以我们使用 dnf 来安装 Docker。 CentOS7 的版本只需要将 dnf 替换成 yum 即可。1. 添加软件源:dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo2.执行下面这条命令更新软件包索引:dnf update3. 安装需要的依赖:目前 Centos8 软件源中的 containerd.io 版本偏低,我们需要手动安装一个新版本,这样才能顺利安装 docker-ce 19.03,否则只能安装老版本的 docker-ce。Centos7 用户可以跳过此步。dnf install -y https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.2.el7.x86_64.rpm4. 安装 Docker-ce:dnf install -y docker-ce5.配置网络与防火墙systemctl stop firewalldiptables -P INPUT ACCEPTiptables -Fecho "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.confsysctl -psystemctl start firewalldfirewall-cmd --add-masquerade --permanentfirewall-cmd --reload6. 将 Docker 设定为开机启用:systemctl enable docker7. 启动 Docker 服务:systemctl start docker8. 使用 查看 docker 版本:Tips:如果使用的是非root用户,需要先将当前用户加入到Docker用户组并重启Docker服务sudo usermod -aG docker `whoami`newgrp dockersystemctl restart docker执行docker version查看安装版本信息Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:46:54 2020 OS/Arch: linux/amd64 Experimental: falseServer: Docker Engine - Community Engine: Version: 19.03.12 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:45:28 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683如果可以成功输出上面的版本号,说明我们的 Docker 已经安装成功了!
- 5. Docker Compose Docker Compose 的定位是:定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)。Docker Compose 中有两个重要的概念:服务 service :一个应用的容器,实际上可以包括多个运行相同镜像的容器实例。项目 project :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。通过 Docker Compose,我们可以使用 docker-compose.yml 文件来配置应用程序需要的所有服务,然后使用 up 命令,就可以从 docker-compose.yml 文件配置中创建并启动所有服务。首先我们来安装 Docker Compose。
Docker性能相关搜索
-
daima
damain
dart
dataset
datasource
datediff
datediff函数
datepicker
datetime
db4o
dbi
dcloud
deallocate
debian安装
debugger
debugging
declaration
declarations
declare
decode函数