Alterando o mongodb
Configurando o Mongodb
Inicio
Configurando o nodejs
Configurando o docker-compose
Docker-Compose
para usar a partir do front-end
Criando a estrutura
Construindo a aplicação
$docker-compose up
// testando o front-end
(localhost:88)
// testando o back-end
(localhost:3001)
$ vim docker-compose.yml
version: '3'
services:
db:
image: mongo:3.4
backend:
image: node:8.1
volumes:
- ./backend:/backend
ports:
- 3001:3000
command: bash -c "cd /backend && npm i && node app"
frontend:
image: nginx:1.13
volumes:
- ./frontend:/usr/share/nginx/html/
ports:
- 88:80
/* alterando o index.html no front end */
<html>
<head>
<meta charset='utf-8'>
<title>Cadastro Simples</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>Cadastro Simples</h1>
<hr>
<div>
<input name='id' type='hidden' />
<div class="form-group">
<label for="Name"></label>
<input class='form-control' name='name' placeholder='Digite o nome' />
</div>
<button class='btn btn-success' save>Salvar</button>
</div>
<table class="table" id='clients'>
<thead>
<tr>
<th>Nome</th>
<th>Ações</th>
</tr>
</thead>
<tbody id="clientsRows"></tbody>
</table>
</div>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>
<script>
const API = 'http://localhost:3001'
const createButton = (label, type) => {
return $('<button>').addClass(`btn btn-${type}`).html(label)
}
const renderRows = clients => {
const rows = clients.map(client => {
const updateButton = createButton('Atualizar', 'warning')
updateButton.click(() => loadClient(client))
const removeButton = createButton('Excluir', 'danger')
removeButton.click(() => removeClient(client))
return $('<tr>')
.append($('<td>').append(client.name))
.append($('<td>').append(updateButton).append(removeButton))
})
$('#clientsRows').html(rows)
}
const loadClient = client => {
$('[name=id]').val(client._id)
$('[name=name]').val(client.name)
}
const removeClient = client => {
$.ajax({
method: 'DELETE',
url: `${API}/clients/${client._id}`,
success: getClients
})
}
const getClients = () => {
$.ajax({
url: `${API}/clients`,
success: clients => {
renderRows(clients)
$('[name]').val('')
}
})
}
const saveClient = () => {
const _id = $('[name=id]').val()
const name = $('[name=name]').val()
$.ajax({
method: _id ? 'PUT' : 'POST',
url: `${API}/clients/${_id}`,
data: _id ? { _id, name } : { name },
success: getClients
})
}
$(() => {
getClients()
$('[save]').click(saveClient)
})
</script>
</body>
</html>
$vim /root/curso-docker/node-mongo-compose/backend/app.js
const express = require('express')
const restful = require('node-restful')
const server = express()
const mongoose = restful.mongoose
//Database
mongoose.Promise = global.Promise
mongoose.connect('mongodb://db/mydb')
// Teste
server.get('/',(req, res, next) => res.send('Backend'))
// Start Server
server.listen(3000)
/*alterando o app.js no backend*/
const express = require('express')
const restful = require('node-restful')
const server = express()
const mongoose = restful.mongoose
const bodyParser = require('body-parser')
const cors = require('cors')
// Database
mongoose.Promise = global.Promise
mongoose.connect('mongodb://db/mydb')
// Teste
//server.get('/',(req, res, next) => res.send('Backend'))
// Midleware
server.use(bodyParser.urlencoded({extended:true}))
server.use(bodyParser.json())
server.use(cors())
// ODM
const Client = restful.model('Client',{
name: { type: String, required: true }
})
// Rest Api
Client.methods(['get', 'post', 'put', 'delete'])
Client.updateOptions({new: true, runValidators: true})
// Routes
Client.register(server, '/clients' )
// Start Server
server.listen(3001)
$ vim /root/curso-docker/node-mongo-compose/frontend/index.html
<h1> FrontEnd </h1>
$ /root/curso-docker/node-mongo-compose/backend# npm init -y
Wrote to /root/curso-docker/node-mongo-compose/backend/package.json:
$ vim /root /root/curso-docker/node-mongo-compose/backend
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
/ pasta backend/
$ npm i --save express@4.15.3 mongoose@4.11.1 node-restful@0.2.6 body-parser@1.17.2 cors@2.8.3
$ rm node_modules/
$ cat package.json
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.17.2",
"cors": "^2.8.3",
"express": "^4.15.3",
"mongoose": "^4.11.1",
"node-restful": "^0.2.6"
}
$mkdir /root/curso-docker/node-mongo-compose
$mkdir /root/curso-docker/node-mongo-compose/backend
$mkdir /root/curso-docker/node-mongo-compose/frontend
/ instalação Docker-compose /
apt-get install docker-compose
Redes
Visão Geral
Bridge network
None network
parte3 ( adicionando container em uma nova rede )
parte2 ( criando nova rede )
parte4 ( teste de conexão )
parte1 (testes iniciais)
- bridge - padrão (isolamento da rede)
- host network - conectividade direta
docker network ls
NETWORK ID NAME DRIVER SCOPE
6911aec96685 bridge bridge local
a8f83a583d35 host host local
9a453fbaa86a none null local
/criando uma nova rede do tipo bridge / ***
docker network create --driver bridge rede_teste
/ ver os dados da nova rede que criei /
docker network inspect rede_teste
/ rodar o container especificando a rede / ***
docker container run -d --name debianteste --net rede_teste debian sleep 900
/buscar o ip do container pelo inspect/
docker container inspect debianteste |grep IP
/buscar o ip do container por comandos linux dentro do container/
docker container exec -it debianteste bash -c "ip addr"
/conectar em uma nova rede/ ***
docker network connect bridge debianteste
/buscar o ip do container pelo inspect/
docker container inspect debianteste |grep IP
/buscar o ip do container por comandos linux dentro do container/
docker container exec -it debianteste bash -c "ip addr"
/subindo sem rede/
docker container run -d --net none nginx
/visualizando rede do container/
docker container run --rm debian bash -c "ip addr "
/subindo sem rede , e mostrando com o comando /
docker container run -it --net none debian bash -c "ip addr "
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
/ver os dados da rede bridge/
docker network inspect bridge
/verificar ip/
docker container run -it debian ip addr
/ping/
docker container run -it debian bash -c "ping 172.17.0.3"
docker container run -it debian ping 172.17.0.3
docker container run -it debian ping www.uol.com.br
/verificar as redes
docker network ls
/ rodar o container especificando a rede / ***
docker container run -d --name debianteste2 --net rede_teste debian sleep 900
/buscar o ip do container pelo inspect/
docker container inspect debianteste2 |grep IP
/buscar o ip do container por comandos linux dentro do container/
docker container exec -it debianteste2 bash -c "ip addr"
/conectar em uma nova rede/ ***
docker network connect bridge debianteste2
/buscar o ip do container pelo inspect/
docker container inspect debianteste2 |grep IP
/buscar o ip do container por comandos linux dentro do container/
docker container exec -it debianteste2 bash -c "ip addr"
/subindo um container no modo daemon /
docker container run -d --name debianteste3 --net host debian sleep 900
/verificando as informações do container/
docker network inspect debianteste3
/verificando o ip atraves do bash/
docker container exec -it debianteste3 ip addr
docker container exec -it debianteste3 bash -c "ip addr"
/ ping /
docker container exec -it debianteste ping <ipdebianteste2>
docker container exec -it debianteste bash -c "ping <ipdebianteste2>"
docker container exec -it debianteste2 ping <ipdebianteste>
docker container exec -it debianteste2 bash -c "ping <ipdebianteste>"
Mão na Massa II
Build
Parte 1
Docker hub
Construindo um novo container (copy)
Construindo um novo container (ARG)
Build
Construindo um novo container (Dev python)
Build
Parte 2
upload das imagens
Parte 3
Construindo um novo container (Dev python)
/tageando/
$docker image tag nginx-dev diellyr/nginx-dev:1.0
/logando no docker hub/
$docker login --username=diellyr
/subindo a imagem para o docker hub/
docker image ls
docker image push diellyr/nginx-dev:1.0
docker container run -it -v $(pwd):/app -p 8000:8000 --name python-server nginx-dev
/ lendo um volume de um container a partir de outro container /
docker container run -it --volumes-from=python-server debian ls /root
$vim index.html
<p>hello from python</p>
$vim run.py
import logging
import http.server
import socketserver
import getpass
class MyHTTPHandler(http.server.SimpleHTTPRequestHandler):
def log_message(self, format, *args):
logging.info("%s - - [%s] %s\n"% (
self.client_address[0],
self.log_date_time_string(),
format%args
))
logging.basicConfig(
filename='/log/http-server.log',
format='%(asctime)s - %(levelname)s - %(message)s',
level=logging.INFO
)
logging.getLogger().addHandler(logging.StreamHandler())
logging.info('Inicializando...')
PORT = 8000
httpd = socketserver.TCPServer(("", PORT), MyHTTPHandler)
logging.info('escutando a porta: %s', PORT)
logging.info('usuário: %s', getpass.getuser())
httpd.serve_forever()
$vim Dockerfile
FROM python:3.6
LABEL maintainer 'Dielly'
RUN useradd www && \
mkdir /app && \
mkdir /log && \
chown www /log
USER www
VOLUME /log
WORKDIR /app
EXPOSE 8000
ENTRYPOINT ["/usr/local/bin/python"]
CMD ["run.py"]
docker image build -t nginx-dev .
docker image ls
$vim Dockerfile
FROM nginx:latest
LABEL maintainer '<Dielly>'
ARG NGINX_PATH=/usr/share/nginx/html
ENV NGINX_PATH=${NGINX_PATH}
docker image build -t nginx-arg .
docker container run nginx-arg bash -c 'echo $NGINX_PATH '
/usr/share/nginx/html
docker container run nginx-arg bash -c 'ls $NGINX_PATH '
50x.html
index.html
docker container run nginx-arg bash -c 'echo $NGINX_PATH/index.html '
/usr/share/nginx/html/index.html
docker inspect nginx-arg |grep maintainer
"maintaner": "<Dielly>"
$ vim Dockerfile
FROM nginx
LABEL maintaner '<Dielly>'
RUN echo '<h1>Sem Conteudo</h1>' > /usr/share/nginx/html/conteudo.html
COPY *.html /usr/share/nginx/html/
docker image build -t nginx-copy .
docker container run nginx-copy bash -c 'ls /usr/share/nginx/html/ '
? verificar porque o nginx esta abrindo outro index.html (debugar)
MÃO NA MASSA - I
CONCEITOS
Instalação do Docker
Run
( pull, create, start, exec)
docker container run -it ubuntu ls
docker container run debian
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
https://www.digitalocean.com/community/tutorials/como-instalar-e-usar-o-docker-no-ubuntu-18-04-pt
- 1 - Criar uma conta no docker-hub
- 2 - Login no docker hub (Console)
docker container run -it ubuntu ls
docker login --username <usuario>
https://docs.docker.com/engine/reference/commandline/login/
/ abra os 2 comandos abaixo em terminais diferentes /
$ watch docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker container run debian sleep 6
$ docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a290c184b2 debian "bash" 9 seconds ago Exited (0) 7 seconds ago competent_hellman
316042037dff debian "bash --version" 18 seconds ago Exited (0) 17 seconds ago amazing_hypatia
..
docker container run debian sleep 6
docker container run -d debian sleep 10
Example output:
$ docker container run hello-world
Hello 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 the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share 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 images hello-world
REPOSITORY TAG IMAGE ID SIZE
hello-world latest fce289e99eb9 1.84kB
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
docker --help
Management Commands:
builder Manage builds
config Manage Docker configs
container Manage containers
engine Manage the docker engine
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Passo 1 — Instalando o Docker
O pacote de instalação do Docker disponível no repositório oficial do Ubuntu pode não ser a versão mais recente. Para garantir que teremos a última versão, vamos instalar o Docker a partir do repositório oficial do projeto. Para fazer isto, vamos adicionar uma nova fonte de pacotes, adicionar a chave GPG do Docker para garantir que os downloads são válidos, e então instalar os pacotes.
Primeiro, atualize sua lista atual de pacotes:
$ sudo apt update
Em seguida, instale alguns pacotes de pré-requisitos que permitem que o apt utilize pacotes via HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Então adicione a chave GPG para o repositório oficial do Docker em seu sistema:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Adicione o repositório do Docker às fontes do APT:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
A seguir, atualize o banco de dados de pacotes com os pacotes Docker do repositório recém adicionado:
sudo apt update
Certifique-se de que você irá instalar a partir do repositório do Docker em vez do repositório padrão do Ubuntu:
apt-cache policy docker-ce
Você verá uma saída como esta, embora o número da versão do Docker possa estar diferente:
Output of apt-cache policy docker-ce
docker-ce:
Installed: (none)
Candidate: 18.03.1~ce~3-0~ubuntu
Version table:
18.03.1~ce~3-0~ubuntu 500
500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
Observe que o docker-ce não está instalado, mas o candidato para instalação é do repositório do Docker para o Ubuntu 18.04 (bionic).
........
Finalmente, instale o Docker:
sudo apt install docker-ce
O Docker agora deve ser instalado, o daemon iniciado e o processo ativado para iniciar na inicialização. Verifique se ele está sendo executado:
sudo systemctl status docker
docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
dff8ae30bf84 debian "sleep 10" 3 seconds ago Up 2 seconds
docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
72c58885dad1 debian "sleep 10" About a minute ago Exited (0) About a minute ago
dff8ae30bf84 debian "sleep 10" 2 minutes ago Exited (0) 2 minutes ago
8d7853abd995 debian "sleep 10" 5 minutes ago Exited (0) 5 minutes ago
Exportando Portas
Exportando Volumes
Nomeando os containers
Reutilizando os containers
Images
Interativo
docker container run -p 8081:80 -d nginx
Exemplo de path: /opt/dados/html
docker container run --name debian-teste -d debian sleep 10
docker container start -ai teste
vim index.html
8081 - porta externa no Sistema operacional
80 - porta interna , aplicação no container
Não é Virtualização tradicional
/ Repositório Local /
docker image ls ( docker images )
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo 3.4 0a8d98121dec 4 days ago 426MB
nginx-dev latest 9bc2fc42ea25 5 days ago 924MB
diellyr/nginx-copy 1.0 6775d2898cee 5 days ago 109MB
...
/ Registry /
docker search debian
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is ... 9640 [OK]
debian Debian is ... 3112 [OK]
arm32v7/debian Debian is ... 58 [OK]
itscaro/debian-ssh debian:jessie 25 [OK]
ex: o container "teste" será utilizado novamente com o mesmo comando ou ação realizado
docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
657d56c29764 debian "sleep 10" 5 seconds ago Up 3 seconds debian-teste
docker container run debian bash --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
docker container run --rm debian bash --version (não registra no histórico)
docker container run --rm debian bash ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
/ rodando comando dentro do container /
docker container run -it debian bash
( ls , touch ... )
root@fb6f7620cf4d:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
<html>
<head>
<title>Curso de Docker</title>
</head>
<body>
<h1>Teste nginx</h1>
</body>
</html>
O Container fornece uma camada adicional de abstração e automação de virtualização de nível de sistema operacional no Windows e Linux
/ parando o container /
docker container stop teste
/ removendo o container /
docker container rm teste
docker container run -d -p 8081:80 -v $(pwd):/usr/share/nginx/html nginx
Docker é uma tecnologia de software que fornece containers, promovido pela empresa Docker, Inc.
Escrito em Go
O Docker fornece uma camada adicional de abstração e automação de virtualização de nível de sistema operacional no Windows e no Linux
localhost:8081
docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be6d529377a4 nginx "nginx -g '…" 47 seconds ago Up 46 seconds 0.0.0.0:8081->80/tcp vigorous_mcnulty
- Padronização
- portabilidade
- reaproveitamento
- redução de mão de obra
- adaptabilidade
- isolantes
Gerenciando o Container
Gerenciando Imagens
https://hub.docker.com/
docker search <>
docker image ls
--- ou --- docker images
docker image pull <>
docker ps
docker image inspect <>
docker image tag <> novonome (terá o mesmo hash)
docker image rm <idimagem> ( remove images )
docker rmi <Imageid> (remove imagens)
docker container stop <>
docker container start <>
docker container restart <>
docker container logs <>
docker container inspect <>
docker container exec <Names> ls
docker container run <Nomde da Imagem> ls
docker container ls ou ps
docker container rm <idcontainer> (remove containers)
Vantagens Docker
Economia de recursos: os containers são definidos como uma imagem em execução ao invés de serem um ambiente read-only. Nessa imagem é gerado um layer extra que armazena todos os dados de uma determinada operação. A natureza de compartilhamento do disco do container docker permite que seja criada uma pilha de imagens somente leitura, com um amontoado para cada container, economizando nos recursos utilizados.
Maior disponibilidade do sistema: de uma maneira simples, o container docker deixa a máquina mais “leve”, com espaço para executar outros programas. Isso acontece porque o docker compartilha o Sistema Operacional, o que torna os processos mais ágeis.
Compartilhamento: os arquivos podem ser compartilhados entre o container e o host, inclusive utilizando a nuvem para o processo. Isso torna mais fácil a implementação de modificações, permitindo que seja adotada uma gestão mais centralizada. Com isso, o espaço para testes fica mais leve, o que permite, por exemplo, baixar uma solução durante uma reunião.
Facilidade de gerenciamento: o grupo de máquinas físicas ou virtuais onde os containers são executados é chamado de cluster e precisa ser monitorado constantemente. Para isso, foram criadas ferramentas específicas, como o Openshift, que atuam em conjunto com o docker e controlam o equipamento que permite a execução dos containers.
Ambientes similares: a possibilidade de transformar uma aplicação em imagem docker permite que ela seja alocada como container em ambientes diferentes, fazendo com que ela possa ser utilizada tanto no computador do desenvolvedor quanto no servidor da produção, por exemplo.
Aplicação como pacote completo: graças à imagem do docker, o empacotamento da aplicação e das suas dependências é possível, simplificando o processo de distribuição. Assim, o ambiente pode ser alterado de maneira fácil e rápida. Por causa da estrutura de layers, somente a alteração é transferida na realização de updates.
Padronização e replicação: criar e mudar a infraestrutura é muito mais simples com o container docker, pois as imagens do docker são construídas através de arquivos de definição. Assim, o escalonamento da estrutura fica muito mais simples. Isso permite que um novo colaborador da equipe de TI posso integrar e receber o ambiente de trabalho com apenas alguns comandos, por exemplo.
Acesso à comunidade: outra vantagem do container docker é que ele torna possível conseguir modelos de infraestrutura prontos para integrações com alto grau de complexidade através do acesso ao repositórios de imagens docker. É possível usar as imagens do repositório e configurar os parâmetros para que ele se adeque ao ambiente.
- Isolamento de Serviços, mais avançado, com comandos próprios ...
Vantagens Docker
Facilidade de
Gerenciamento
Ambientes
Similares
Economia
de recursos:
Facilidade de
Compartilhamento:
Maior disponibilidade
do sistema:
Padronização
e Replicação
Aplicação
com Layers
Acesso
a Comunidade:
- Isolamento de Serviços, portabilidade, padronização, reaproveitamento, adaptabilidade, volumes , network,