Você está na página 1de 68

02 – Virtualização

Bruno B. F. Leonor

SISTEMAS OPERACIONAIS EMBARCADOS E IoT


Virtualização
Metodologia que permite dividir um único computador físico em vários
computadores virtuais, independentes entre si.

Conjunto de soluções computacionais que permitem a execução de


vários SOs e seus respectivos softwares a partir de uma única máquina
física.

Fornecer uma versão virtual de tecnologias essenciais em computação,


como: hardware, armazenamento e redes.
Virtualização
Vantagens
• economia em hardware, eletricidade e espaço

• sistema escalável e elásticos

• gerenciamento centralizado

• implementação mais rápida


Vantagens
• uso de sistemas legados

• diversidade de plataformas

• ambiente de testes

• segurança e confiabilidade
Desvantagens
• sobrecarga

• segurança

• portabilidade

• contingência

• desempenho
VirtualBox
02 – SHELL

Bruno B. F. Leonor

SISTEMAS OPERACIONAIS EMBARCADOS E IoT


Terminal / Prompt de comando

É o programa que recebe os comandos do usuário a partir do teclado e


repassa-os às camadas de baixo nível do sistema operacional
(interpretador de comandos).

É um emulador de linha ou prompt de comando, onde todos os


comandos são emitidos em texto puro.
Shell

É um arquivo executável armazenado em /bin. No modo gráfico, um


shell é executado em cada terminal aberto.

echo $SHELL
Shell Script

É o nome dado a um arquivo que será interpretado por algum


programa tipo shell.

sh, bash, ksh, zsh, csh e tcsh


COMANDOS BÁSICOS
• clear ou CTRL+l • history • | >> > < • paste
• reset • mkdir • cut • sort
• pwd • mktemp • head • xargs
• cd • touch • tail • sed
• ls • mv • seq • grep
• echo • cp • wc • tree
• chmod • cat • tee • alias
• basename • rm • date • unalias
• dirname • rmdir • rev
Comandos básicos
• limpar a tela do terminal
$ clear ou CTRL + L
$ reset

• obter o endereço do diretório corrente


$ pwd

• alterar o diretório corrente


$ cd
Comandos básicos
• listar o conteúdo do diretório corrente
$ ls

• exibir mensagem na tela


$ echo

• alterar permissões
$ chmod
Comandos básicos
• exibir o nome do arquivo
$ basename

• exibir o diretório de um arquivo


$ dirname

• exibir o histórico de comandos


$ history
Comandos básicos
• criar diretórios
$ mkdir

• criar arquivo temporário


$ mktemp

• criar arquivos em branco


$ touch
Comandos básicos
• mover arquivos e diretórios
$ mv

• copiar arquivos e diretórios


$ cp

• exibir conteúdo de arquivos


$ cat
Comandos básicos
• remover arquivos
$ rm

• remover diretórios
$ rmdir

• direcionar saídas e entradas


$ | >> > <
Comandos básicos
• filtrar saídas do comando cat
$ cut

• exibir as primeiras linhas de arquivos


$ head

• exibir as últimas linhas de arquivos


$ tail
Comandos básicos
• exibir sequencia de números
$ seq

• exibir número de linhas, palavras e caracteres de arquivos


$ wc

• gerar arquivo de log das saídas de um pipe


$ tee
Comandos básicos
• exibir data
$ date

• reverter sequências de caracteres


$ rev

• concatenar arquivos por colunas


$ paste
Comandos básicos
• organizar lista
$ sort

• executar comandos em loop sem laços


$ xargs

• editor de fluxo de texto do terminal


$ sed
Comandos básicos
• pesquisar string arquivo de texto
$ grep

• lista hierarquia de diretórios


$ tree

• exibir o calendário no terminal


$ cal
Comandos básicos
• criar uma apelido para um comando
$ alias c=‘clear’

• desabilitar o apelido
$ unalias c
SHELL SCRIPT
• #! (shebang) • case
• # (comentário) • expressões regulares
• variáveis • for
• variáveis pré-definidas • while
• variáveis globais • until
• variáveis de ambiente • funções
• operadores • biblioteca
• if-elif-else • read
• array
shebang
variáveis
read
variáveis
globais
env vars
$
expansão
Shell Script
• operadores

• aritméticos

• booleanos

• teste de arquivos

• relacionais

• string
Shell Script
• operadores

• aritméticos

• booleanos

• teste de arquivos

• relacionais

• string
Shell Script
• operadores

• aritméticos

• booleanos

• teste de arquivos

• relacionais

• string
Shell Script
• operadores

• aritméticos

• booleanos

• teste de arquivos

• relacionais

• string
Shell Script
• operadores

• aritméticos

• booleanos

• teste de arquivos

• relacionais

• string
Shell Script
• operadores

• aritméticos

• booleanos

• teste de arquivos

• relacionais

• string
if-elif-else
if-elif-else
case
for
while
until
funções
biblioteca
array
regex
regex
02 – Conteinerização

Bruno B. F. Leonor

SISTEMAS OPERACIONAIS EMBARCADOS E IoT


Conteinerização

É uma metodologia utilizada para empacotar aplicações para que


possam ser executadas/disponibilizadas com o seu subset de
dependências de maneira isolada e eficiente no intuito de segregar e
facilitar a portabilidade dessas aplicações.

Não confundir com VM.


Conteinerização
Vantagens
• abstração do sistema host separada

• fácil escalabilidade

• gerenciamento simples de dependências

• ambiente extremamente leve e isolado

• camadas compartilhadas

• agreabilidade e previsibilidade
DOCKER
• attach • ls • stop
• commit • pause • top
• cp • port • unpause
• create • prune • update
• diff • rename • wait
• exec • restart
• export • rm
• inspect • run • dockerfile
• kill • start • build
• logs • stats • docker-compose
Docker
• instalar, configurar e testar o Docker

$ apt-get update
$ curl –fSSL https://get.docker.com/ | bash
$ sudo groupadd docker
$ sudo usermod –aG docker $USER
$ newgrp docker
Docker
• listar os containers
$ docker container ls

• executar um container
$ docker container run <opções> <imagem> <cmd>

• sair do container (sem matar o container)


$ CTRL + p + q
Docker
• voltar para um container
$ docker container attach <container_id>

• executar um container em modo DAEMON


$ docker container run -d <imagem> <cmd>

• executar uma instrução no container (externo)


$ docker container exec <opções> <container_id> <cmd>
Docker
• iniciar um container
$ docker container start <container_id>

• parar um container
$ docker container stop <container_id>

• reiniciar um container
$ docker container restart <container_id>
Docker
• pausar um container
$ docker container pause <container_id>

• “despausar” um container
$ docker container unpause <container_id>

• inspecionar um container
$ docker container inspect <container_id>
Docker
• visualizar os logs de um container
$ docker container logs -f <container_id>

• apagar um container
$ docker container rm <container_id>

• publicar uma porta do container


$ docker container run -p <host:container> <image>
Docker
• visualizar estatísticas do container
$ docker container stats <container_id>

• configurar a memória de um container


$ docker container run -m <qtd_RAM> <imagem>

• atualizar a memória de um container


$ docker container update --memory <qtd_RAM> <container_id>
Docker
• configurar a CPU de um container
$ docker container run --cpus <qtd> <imagem>

• atualizar a CPU de um container


$ docker container update --cpus <qtd> <container_id>

• listar os processos em execução em um container


$ docker container top <container_id>
Docker
• listar imagens existentes no host
$ docker image ls

• criar uma imagem


$ docker image build -t <dockerfile>
$ docker image commit -m “msg” <container_id> -t <nome_img>

• remover uma imagem


$ docker image rm <image_id>
Docker
• volume tipo bind

• volume tipo volume


Docker
• criar um volume
$ docker volume create <nome_volume>

• listar volumes
$ docker volume ls

• inspecionar um volume
$ docker volume inspect <nome_volume>
Docker
• remover um volume
$ docker volume rm <nome_volume>

• excluir volumes não utilizados


$ docker volume prune
Dockerfile
• meu primeiro dockerfile

FROM debian
LABEL app=“Unisal”
ENV DISCIPLINA=“SOEmbIoT”
RUN apt-get update && apt-get install -y stress && apt-get clean

CMD stress --cpu 1 --vm-bytes 64M --vm1


Dockerfile
• ADD • MAINTAINER
• CMD • RUN
• LABEL • USER
• COPY • VOLUME
• ENTRYPOINT • WORKDIR
• ENV
• EXPOSE
• FROM

Você também pode gostar