siscoord.francomontoro.com.br · web viewiniciou-se por volta de 1970, com a arquitetura do ibm...

19
VIRTUALIZAÇÃO COM DOCKER RODRIGUES, C. W. N. 1 CANATO, R. L. C. 2 RESUMO: A virtualização de recursos já se consolidou como opção de baixo custo, flexível e escalável, e as empresas têm investido cada vez mais nesse cenário. No entanto, a virtualização de máquinas virtuais apresenta alguns pontos a serem considerados, como por exemplo, como criar ambientes isolados, que possam rodar simultaneamente diferentes aplicações, onde a divisão é realizada em nível de recursos disponíveis. Com base nesta afirmação, este trabalho pretende apresentar uma introdução ao Docker, uma tecnologia de virtualização baseada em contêiner, suas principais vantagens e possíveis desvantagens em comparação a virtualização baseada em máquinas virtuais. PALAVRAS-CHAVE: Docker. Contêiner. Máquinas Virtuais. Virtualização. ABSTRACT: Resource virtualization has already been consolidated as a low-cost, flexible and scalable option, and companies have invested more and more in this scenario. However, virtualization of virtual machines presents some points to be considered, such as how to create isolated environments that can simultaneously run different applications, where the division is performed at the level of available resources. Based on this assertion, this paper intends to present an introduction to Docker, a container-based virtualization technology, its main advantages and possible disadvantages compared to virtualization based on virtual machines. KEYWORDS: Docker. Container. Virtual Machines. Virtualization. 1. INTRODUÇÃO A crescente demanda por computação em nuvem tem impulsionado e consolidado a tecnologia de virtualização. A virtualização não é uma tecnologia nova. Iniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode 1 [email protected] 2 [email protected] Faculdade Municipal Professor Franco Montoro 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3 4 5 6

Upload: others

Post on 04-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

VIRTUALIZAÇÃO COM DOCKER

RODRIGUES, C. W. N. 1

CANATO, R. L. C. 2

RESUMO: A virtualização de recursos já se consolidou como opção de baixo custo, flexível e escalável, e as empresas têm investido cada vez mais nesse cenário. No entanto, a virtualização de máquinas virtuais apresenta alguns pontos a serem considerados, como por exemplo, como criar ambientes isolados, que possam rodar simultaneamente diferentes aplicações, onde a divisão é realizada em nível de recursos disponíveis. Com base nesta afirmação, este trabalho pretende apresentar uma introdução ao Docker, uma tecnologia de virtualização baseada em contêiner, suas principais vantagens e possíveis desvantagens em comparação a virtualização baseada em máquinas virtuais.

PALAVRAS-CHAVE: Docker. Contêiner. Máquinas Virtuais. Virtualização.

ABSTRACT: Resource virtualization has already been consolidated as a low-cost, flexible and scalable option, and companies have invested more and more in this scenario. However, virtualization of virtual machines presents some points to be considered, such as how to create isolated environments that can simultaneously run different applications, where the division is performed at the level of available re-sources. Based on this assertion, this paper intends to present an introduction to Docker, a container-based virtualization technology, its main advantages and possible disadvantages compared to virtualiza-tion based on virtual machines.

KEYWORDS: Docker. Container. Virtual Machines. Virtualization.

1. INTRODUÇÃOA crescente demanda por computação em nuvem tem impulsionado e

consolidado a tecnologia de virtualização. A virtualização não é uma tecnologia nova.

Iniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema

operacional VM pode apresentar várias máquinas virtuais completas para diferentes

programas em execução no mesmo computador (Coulouris, 2013).

De extrema utilidade no nosso cotidiano, a virtualização de servidores (criação

de máquinas virtuais) permite a execução de uma variedade de sistemas operacionais

através da alocação de recursos de hardware, como por exemplo, memória RAM,

armazenamento, processamento, etc., que são gerenciados através de uma camada

de virtualização, o hipervisor, que consiste em um software, firmware ou hardware que

1 [email protected] [email protected]

Faculdade Municipal Professor Franco Montoro

12

123456789

1011121314151617181920212223242526272829

30

31

32

33

34

35

36

37

38

39

3456

Page 2: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

2

possibilita a criação e monitoramento de máquinas virtuais, que entre outras tarefas,

traduzem as solicitações para o hardware da máquina física.

Inúmeras são as vantagens de uma máquina virtual em comparação a

instalação de sistemas operacional diretamente no hardware físico, sendo uma das

principais, o isolamento proporcionado pela máquina virtual, assegurando que não

haverá interferência do que é executado em uma máquina virtual em um ambiente

físico e o que é executado no ambiente físico também não vá interferir no ambiente

virtual. No entanto, por necessitar de uma camada de sistema operacional para cada

aplicação, demanda mais recursos, consumindo mais espaço em disco e reduz o nível

de portabilidade. Dessa forma, o objetivo deste trabalho é apresentar uma introdução

ao Docker, uma tecnologia de virtualização baseada em containeres, suas principais

vantagens e possíveis desvantagens em comparação a virtualização tradicional.

1.1 MOTIVAÇÃOApesar da sua ampla utilização, as máquinas virtuais tradicionais necessitam de

um sistema operacional inteiro, bibliotecas e kernel parcial que são simulados através

de um hardware artificial. Dessa forma, como manter o desempenho, levando em

consideração o crescente número de aplicações e serviços alavancados pela

computação em nuvem? Uma das alternativas propostas tem sido a utilização do

Docker, uma tecnologia recente de virtualização baseada em container, utilizado para

“empacotar” uma aplicação (Gomes, 2017). Diferentemente da virtualização tradicional,

a virtualização com o Docker faz uso compartilhado das estruturas com o sistema

operacional hospedeiro, o que resulta em maior desempenho na virtualização, com

container leves, já que ao invés de simular o hardware, os containeres fazem

simulação do sistema operacional, proporcionando economia significativa de recursos,

maior disponibilidade, similaridade do sistema e consequentemente a sua

padronização e replicação, ou seja, o Docker busca adotar a filosofia, construa uma

vez, execute onde quiser (Gomes, 2017). As motivações de uso da ferramenta Docker

são diversas, entre as principais podemos citar: a facilidade de replicação, velocidade

no desenvolvimento e ambiente de produção com mesmas versões e sistemas

operacionais. Um comparativo entre a virtualização tradicional (baseada em máquinas

78

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

Page 3: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

3

virtuais) e a virtualização com o Docker (baseada em containers) poder ser verificado

na Figura 1 a seguir:

Figura 1: Virtualização máquinas virtuais x containers.

Fonte: Adaptado de (IBM, 2015).

2. CONCEITOS FUNDAMENTAIS

2.1 DockerDe acordo com (GOMES, 2017), o Docker é uma plataforma de virtualização

open source, desenvolvida para facilitar a implantação e execução de aplicações em

ambientes isolados, desenhada com o objetivo de disponibilizar uma aplicação de

forma mais rápida possível. Com o Docker é possível gerenciar facilmente a

infraestrutura da aplicação, o que resulta em mais agilidade nos processos de criação,

manutenção e modificação de um serviço (GOMES, 2017). O Docker possibilita a

compilação de imagens e execução de aplicações distribuídas em um ambiente isolado

de forma flexível, definido como container.

910

71

72

73

747576

77

78

7980

81

82

83

84

85

86

87

88

Page 4: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

4

O Docker foi desenvolvido utilizando a linguagem de programação GO, criada

pela Google (GO, 2009) e mantida pela Docker Inc., sediada em São Francisco,

Califórnia (DOCKER, 2013).

Com o uso do Docker é possível ter acesso a ambientes prontos, que são

compartilhados através de uma nuvem pública disponibilizada pelo Docker,

possibilitando que possam ser criados ambientes específicos através de customizações

dos ambientes disponibilizados. Um exemplo dessa utilização é a configuração de

módulos específicos de um determinado software, de acordo com a necessidade da

aplicação, criando um ambiente customizado, com o menor esforço possível.

Segundo (GOMES, 2017), normalmente os ambientes em Docker são

viabilizados com maior velocidade, visto que, neste caso, o ambiente não consiste em

um sistema operacional inteiro, mas sim, do início de um processo, sendo o tempo de

disponibilização inferior ao da virtualização tradicional, já que a virtualização com o

Docker é realizada em nível de sistema operacional, através da execução de múltiplos

processos isolados no mesmo host, gerenciados pelo kernel do sistema operacional. A

Figura 2 ilustra esses processos isolados, denominados no Docker como container.

Figura 2: Execução de processos isoladamente - container.

Fonte: (GTA-UFRJ, 2016).

1112

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106107108

109

Page 5: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

5

De acordo com (GOMES, 2017), por possuir um conjunto de softwares, o Docker

pode ser considerado um ecossistema, o qual é composto dos seguintes softwares:

Docker Engine: Daemon responsável tanto pelos containers quanto pelo

cliente que é usado para enviar comandos ao daemon, considerado como

o software base de toda a solução.

Docker Compose: Baseado em um arquivo de definição, é a ferramenta

responsável pela execução de múltiplos containers.

Docker Machine: Ferramenta responsável pela criação e manutenção de

ambientes Docker, independente do ambiente (máquinas físicas, virtuais

ou nuvem).

A instalação das ferramentas do Ecossistema Docker pode ser realiza em

diversos sistemas operacionais, como por exemplo, Linux, Windows e MacOS.

2.1.1 ContainerO container é o modelo utilizado pelo Docker para realizar o "empacotamento"

da aplicação. Considerada como propriedade fundamental de um container é de serem

isolados em nível de disco, memória, processamento e rede, atribuindo-lhe maior

flexibilidade, proporcionando a coexistência de ambientes distintos num mesmo host.

De forma simplificada, podemos concluir que o objetivo de um container é a execução

de múltiplos processos e aplicativos de forma independente, resultando em melhor

utilização de infraestrutura ao mesmo tempo em que mantém a segurança como se

fossem executados em sistemas operacionais separados. A Figura 3 a seguir, ilustra

um container Docker:

1314

110

111

112

113

114

115

116

117

118119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

Page 6: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

6

Figura 3: Exemplo de um container Docker.

Fonte: (MUNDODOCKER, 2018).

Com o uso de container existe a possibilidade de desativação de uma parte de

aplicação, que pode ocorrer por necessidade de manutenção ou atualização, que

nesse caso, utilizando containers, não será necessário interromper a aplicação como

um todo. Outra vantagem dos containers é de não necessitarem de um sistema

operacional completo. Estes são executados através do uso de imagens, conforme

mencionado a seguir.

2.1.2 ImagemDe forma bem simplificada, podemos definir uma imagem Docker como sendo

um template de um determinado sistema operacional, a qual pode ou não, conter um

software específico. Consideradas a estrutura de base na construção de um container,

concluímos que, uma imagem Docker consiste da abstração da infraestrutura em

estado somente leitura, de onde será instanciado o container. O container é iniciado a

partir de uma imagem, sendo assim, nunca teremos uma imagem em execução.

Normalmente, um container é iniciado a partir de uma única imagem, no entanto, caso

seja necessário, basta realizar customizações na imagem. A Figura 4 ilustra uma

imagem Docker:

1516

136137138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

Page 7: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

7

Figura 4: Exemplo de uma imagem Docker.

Fonte: (MUNDODOCKER, 2018).

As imagens Docker podem ser oficiais ou não oficiais. A identificação de uma

imagem oficial ou não oficial pode ser feita com base no seu nome, sendo que as

imagens oficiais não possuem usuário no seu nome e as não oficiais possuem a

identificação do usuário no seu nome, como por exemplo, para a imagem php

disponibilizada pelo repositório oficial o nome é “php”, e a disponibilizada pelo

repositório não oficial é precedida pelo nome do usuário que a mantém, ou seja, o

nome da imagem é “naugebec/php/fpm”. As imagens oficiais são mantidas e

disponibilizadas na nuvem Docker (EXPLORE, 2018). As imagens não oficiais são

disponibilizadas por outros usuários, como por exemplo, pelo usuário identificado por

naugebec (NAUGEBEC, 2014). Esse repositório de imagens é conhecido como

registros do Docker. As Figuras 5 e 6 a seguir, ilustram a disponibilização das imagens

oficiais e não oficiais, respectivamente.

Figura 5: Repositório de imagens oficiais mantidas pelo Docker.

Fonte: (EXPLORE, 2018).

1718

156157158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173174175

Page 8: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

8

Figura 6: Repositório de imagens não-oficiais mantidas por outros usuários.

Fonte: (NAUGEBEC, 2014).

2.1.3 RegistrosRepositório que permite aos usuários a construção, armazenamento e

distribuição de imagens Docker que é realizada através do Docker Hub (DOCKER-

HUB, 2016), que possui funcionalidade semelhante ao github, uma plataforma de

hospedagem e repositório de código fonte que usa o git como controle de versões,

possibilitando a construção e compartilhamento de imagens.

3. Arquitetura DockerUtilizando recursos nativos do Linux para gerenciamento de processamento,

memória, acessos de usuários, firewall, entre outros, o Docker teve sua versão beta

lançada em 2013 e em 2014 a primeira versão estável, a qual, trazia como principais

melhorias: testes, implantação e execução das aplicações. Suas bibliotecas são

escritas em Linguagem GO, C e C++, dando suporte a uma ampla gama de tecnologias

de isolamento. Um exemplo de composição da arquitetura do Docker pode ser

visualizado na Figura 7 a seguir:

1920

176177178179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

Page 9: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

9

Figura 7: Exemplo de arquitetura Docker.

Fonte: Adaptado de (JANCORG, 2015).

4. Docker versus Máquina VirtualA virtualização de uma máquina virtual instancia o sistema operacional por

inteiro, ou seja, todas suas bibliotecas e dependências para cada uma das máquinas

virtuais criadas.

Já o Docker (container) é executado em cima de um arquivo de sistema

operacional, sendo assim, vários containers podem ser executados em cima de uma

mesma imagem. Dessa forma, os containers necessitam de muito menos recursos,

pois possuem apenas "parte" do sistema operacional, resultando em maior velocidade

de inicialização e de resposta as requisições. Um esboço desse comparativo pode ser

verificado na Figura 8 a seguir:

2122

196197198

199

200

201

202

203

204

205

206

207

208

209

210

Page 10: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

10

Figura 8: Container x Virtual Machines.

Fonte: Adaptado de (DZONE, 2018).

Com base na Figura 8, podemos verificar que para cada uma das aplicações

que estão sendo executadas no modelo de virtualização tradicional (Virtual Machine), é

necessário que exista uma instalação de sistema operacional. Diferentemente, no

modelo de virtualização através de Containers, uma única instalação de sistema

operacional é necessária para executar todas as aplicações.

5. VANTAGENSDiversas são as vantagens oferecidas pelo modelo de virtualização baseada em

containers pelo Docker, sendo destacada a seguir uma compilação das principais:

Ambiente flexível: Em ambientes que utilizam testes contínuos, uma vez

que não existe a necessidade de ambientes com as mesmas configurações.

Camada extra de abstração: Adição de uma camada de abstração, já que

com o uso do Docker, as aplicações são executadas dentro de containers;

2324

211212213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

Page 11: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

11

Economia de recursos: Provavelmente uma das maiores vantagens do

Docker em relação à virtualização de máquinas é a possibilidade de

economizar recursos computacionais.

Isolamento: Segundo relatório publicado pela Gartner, os containers Docker

são tão bons quanto o hipervisor de uma máquina virtual em se tratando de

isolamento e segregação de recursos.

Portabilidade: Considerada como uma das principais vantagens do Docker,

proporcionando facilidade de migração e funcionamento em diversos

provedores de computação em nuvem devido a sua característica

multiplataforma.

Replicação: Indicado quando é necessário replicar o ambiente, seja por uma

ou muitas alterações. Esta replicação é facilitada com o uso de containers,

tornando mais rápida a replicação sem impactar o sistema como um todo.

Versionamento: Diferentemente da virtualização tradicional, onde era

necessária a criação e manutenção do repositório de imagens, utilizando o

Docker, o ciclo de desenvolvimento pode ser simplificado através de um

esquema de controle de versões, semelhante ao GIT.

6. DESVANTAGENSAlgumas das desvantagens da virtualização utilizando o Docker citado na

literatura são:

Overhead: O processo de criação do container, transmissão e captura dos

pacotes recebidos para a aplicação no Docker pode criar overhead das

operações, além do consumo de memória, disco e processamento do

gerenciamento desses processos.

2526

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

Page 12: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

12

Segurança: Diferentemente da virtualização utilizando a tecnologia de

máquinas virtuais onde o isolamento é total, na virtualização de containers o

isolamento é parcial, o que pode reduzir os níveis de segurança.

7. CONSIDERAÇÕES FINAISPor utilizar diretamente o kernel do seu host, trabalha de forma diferente de

virtualização baseada em máquinas virtuais, consumindo menos recursos e trazendo

melhoria no desempenho. Dessa forma, a tecnologia de virtualização baseada em

containers proposta pelo Docker proporciona maior velocidade na disponibilização e

atualização de ambientes, favorecendo quando existe a necessidade de múltiplos

ambientes com diferentes versões de software. Além da agilidade e economia de

recursos, a sua utilização proporciona maior autonomia, impactando diretamente na

entrega de mais soluções em menos tempo.

8. REFERÊNCIAS

COULOURIS, G; Dollimore, J; Kindberg, T. Blair, G. Sistemas Distribuídos - Conceitos e

Projetos. Bookman. 5ª Edição. 2013.

DOCKER. Company. 2013. Disponível em: https://www.docker.com/company. Acessado

em: 11/11/2018.

DOCKER-EXPLORE. Explore Official Repositories. Disponível em:

https://hub.docker.com/explore/?page=2. Acessado em: 15/11/2018.

DOCKER-HUB. 2016. Disponível em: https://hub.docker.com/. Acessado em:

12/11/2018.

DZONE. Containers vs. Serverless from a DevOps Standpoint. Disponível em:

https://dzone.com/articles/containers-vs-serverless-from-a-devops-standpoint.

Acessado em: 12/11/2018.

2728

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

Page 13: siscoord.francomontoro.com.br · Web viewIniciou-se por volta de 1970, com a arquitetura do IBM 370, na qual o sistema operacional VM pode apresentar várias máquinas virtuais completas

13

GO. A linguagem de programação Go. 2009. Disponível em: http://www.golangbr.org.

Acessado em: 11/11/2018.

GOMES, R. Docker para desenvolvedores. LeanPub. 2017.

GTA-UFRJ. Containers. Uma maneira de compartimentalizar processos. 2016.

Disponível em: https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2017_2/

docker/containers.html. Acessado em 10/11/2018.

IBM. Container, o novo passo para a virtualização. 2015. Disponível em:

https://www.ibm.com/developerworks/community/blogs/tlcbr/entry/mp234?lang=en.

Acessado em 10/11/18.

JANCORG. Docker Code Curiosities. 2015. Disponível em: http://jancorg.github.io.

Acessado em: 11/11/2018.

MUNDODOCKER. Disponível em: https://www.mundodocker.com.br. Acessado em:

12/11/2018.

NUAGEBEC. Repositório Docker não oficial. 2014. Disponível em:

https://hub.docker.com/r/nuagebec/. Acessado em: 11/11/2018.

2930

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313