quinta-feira, 21 de março de 2019

Administração de conteiners com Docker - Parte2

Atualização de uma imagem


Depois de criar um conteiner e personalizá-lo podemos salvá-lo como uma imagem que poderá ser usado em outros conteiner. Por exemplo, vamos executar o conteiner do Drupal.
$ docker start 471f35e0eb01
471f35e0eb01

Agora vamos entrar nele e personalizá-lo
$ docker exec -ti 47c616dc4a45 /bin/bash
root@471f35e0eb01:/var/www/html# apt-get update
Hit:1 http://security-cdn.debian.org/debian-security stretch/updates InRelease                 
Hit:2 http://security-cdn.debian.org/debian-security buster/updates InRelease                 
Ign:3 http://cdn-fastly.deb.debian.org/debian stretch InRelease                                         
Hit:4 http://cdn-fastly.deb.debian.org/debian stretch-updates InRelease                           
Hit:5 http://cdn-fastly.deb.debian.org/debian buster InRelease
Hit:6 http://cdn-fastly.deb.debian.org/debian buster-updates InRelease
Hit:7 http://cdn-fastly.deb.debian.org/debian stretch Release
Reading package lists... Done 
root@471f35e0eb01:/var/www/html# apt-get upgrade
Reading package lists... Done
Building dependency tree     
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@471f35e0eb01:/var/www/html# apt-get install tcpdump
Reading package lists... Done
Building dependency tree     
Reading state information... Done
The following additional packages will be installed:
  libpcap0.8
The following NEW packages will be installed:
  libpcap0.8 tcpdump
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 553 kB of archives.
After this operation, 1553 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libpcap0.8 amd64 1.8.1-3 [138 kB]
Get:2 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 tcpdump amd64 4.9.2-1~deb9u1 [415 kB]
Fetched 553 kB in 0s (785 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libpcap0.8:amd64.
(Reading database ... 13152 files and directories currently installed.)
Preparing to unpack .../libpcap0.8_1.8.1-3_amd64.deb ...
Unpacking libpcap0.8:amd64 (1.8.1-3) ...
Selecting previously unselected package tcpdump.
Preparing to unpack .../tcpdump_4.9.2-1~deb9u1_amd64.deb ...
Unpacking tcpdump (4.9.2-1~deb9u1) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Setting up libpcap0.8:amd64 (1.8.1-3) ...
Setting up tcpdump (4.9.2-1~deb9u1) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
root@471f35e0eb01:/var/www/html# exit
exit
$ docker commit 471f35e0eb01 olonca:drupal_0.0.1
sha256:a22929c381d18f77d9aabf15655943b2b458b4f2c550b5847eb26df1c0b7957e0 
$ docker images | grep drupal
olonca                   drupal_0.0.1        a22929c381d1        43 seconds ago      516MB
drupal                   import              ade021154dfd        7 days ago          506MB
drupal                   latest              47a58c95e8e4        2 weeks ago         446MB


Checando as mudanças entre conteiners


Você pode ver o que mudou de uma versão para outra em um conteiner.
$ docker diff 471f35e0eb01
C /run
C /run/apache2
A /run/apache2/apache2.pid
C /tmp
A /tmp/update-cache-3e8379a4
A /tmp/update-cache-3e8379a4/business-8.x-1.7.tar.gz
A /tmp/update-cache-3e8379a4/md_foto-7.x-1.0.tar.gz
A /tmp/update-cache-3e8379a4/7.x-1.0
A /tmp/update-cache-3e8379a4/8.x-1.x-dev
...

Onde:

A - adicionado
C - modificado
D - apagado


Exportando e importando conteiners


Podemos também exportar um conteiner para poder ser usado em outro host.
$ docker export 471f35e0eb01 -o tmp/drupal.tar

Agora podemos importar a imagem em outro host.
$ docker import tmp/drupal.tar drupal:import
sha256:b44ff95466308592f7a321bbd303e9712286cea14f5d7cde54b4b2458ed60632
$ docker images | grep drupal
drupal                   import              b44ff9546630        13 minutes ago      507MB
olonca                   drupal_0.0.1        a22929c381d1        18 hours ago        516MB
drupal                   latest              47a58c95e8e4        2 weeks ago         446MB
Da mesma forma que exportamos e importamos conteiner, podemos exportar e importar imagens.
$ docker save -o tmp/export.tar drupal:import

E agora importamos a imagem.
$ docker load -i tmp/export.tar
Loaded image: drupal:import


Criando imagens com DockerFile


Já vimos como criar uma imagem partindo de um arquivo Dockerfile. Agora vamos ver mais alguns parâmetros interessantes.

ENTRYPOINT [comando]
Comando que será executado quando o conteiner for iniciado. Só pode ser alterado pelo parâmetro --entrypoint.

CMD [comando]
O mesmo que ENTRYPOINT, mas pode ser modificado pelo docker run.

EXPOSE
Porta TCP a ser exposta no conteiner.

ADD
Adiciona arquivos ao conteiner.


Boas práticas na criação de conteiners


Vamos ver algumas boas práticas para a criação de imagens.

  • Rode um único processo por conteiner. O ideal é que cada conteiner rode um único serviço. Isso vai isolá-lo dos demais serviços.
  • Dados críticos devem ficar fora do conteiner, num volume separado. Os dados que são críticos para o sistema deverão estar fora do conteiner. Isso vai evitar a perda ou modificação indesejada de dados ao se modificar uma imagem.
  • Dê preferência às imagens oficiais. Com as imagens oficiais você tem a certeza de que a equipe está fazendo o melhor, e que você não vai precisar se preocupar com ela. 
  • Evite criar imagens com muitos comandos RUN. Cada comando RUN cria uma nova camada na imagem, e isso é ruim. Sendo possível, crie um único RUN com vários comandos dentro dele.
  • Evite usar ADD para copiar arquivos. O ADD é melhor utilizado para copiar um grande volume de dados para a imagem. Dê preferência ao COPY.



Versionamento de images


Podemos trabalhar com verisonamento das imagens do Docker. Por exemplo:
$ docker images | grep firewall
firewall                 latest              6f002f760a84        6 days ago          200MB  
$ docker tag firewall firewall:0.0.1 
$ docker images | grep firewall
firewall                 0.0.1               5fa0d3d002af        7 days ago          141MB
firewall                 latest              6f002f760a84        6 days ago          200MB


Armazenando suas imagens no Docker Hub


Para poder disponibilizar sua imagem personalizada no Docker Hub, primeiro crie  teu login do site dockerhub.com. Depois crie o teu repositório.


Antes de enviar uma imagem é necessário configura o Docker para usar o Docker Hub.
$ docker login

Isso vai criar um arquivo em ~/.docker/config.json contendo as credencias para acesso ao Docker Hub.

Agora precisamo tagear uma imagem com o nome do repositório.
$ docker tag <imagem> <repositório>/<imagem>

Por exemplo, criei o repositório do Docker Hub chamado "olonca" e vou colocar a imagem "firewall". Então digito o seguinte comando:
$ docker tag firewall olonca/firewall

Agora é só mandar a imagem para o Docker Hub.
$ docker push olonca/firewall 
The push refers to repository [docker.io/olonca/firewall]
e82360136055: Layer already exists
b264c55bfb17: Layer already exists
07fd7ba63325: Layer already exists
3808c16f973a: Layer already exists
914f219d7bea: Layer already exists
ad254c3a20a7: Layer already exists
6c4a95532de5: Layer already exists
13d5529fd232: Layer already exists
latest: digest: sha256:aea299b3c4ae22cd454d50e0c56d1f53e40006b0e0352a5573872b72df1f8962 size: 2005

Agora a imagem já vai aparecer tanto no site do Docker quanto nas pesquisas do docker search.

$ docker search olonca
NAME                DESCRIPTION         STARS               OFFICIAL            AUTOMATED
olonca/firewall                         0                                     


sexta-feira, 15 de março de 2019

Administração de conteiners com Docker - Parte 1

O que é um conteiner?


Conteiner, ou jaula, é um forma de executar um sistema de forma isolada do resto do sistema operacional. Esse isolamento permite maior segurança tanto para a aplicação quanto para o sistema operacional. Diferente da virtualização, o aplicativo que roda no conteiner precisa ser compatível com o sistema operacinal do servidor hospedeiro, usando os mesmo recursos, como CPU, Ram e disco. 

Docker é uma plataforma de administração de conteiners livre desenvolvida pela Google e que pode ser integrada com os principais núvens públicas, como Amazon, Azure e Google Cloud. O Docker foi construído usando o conceito de DevOPS e tecnologias ágeis.

Instalação do Docker


Para instalar o Docker, no Debian, use o seguinte comando:
# apt-get install docker-ce

Veja se o Docker está instalado.
# docker --versionDocker version 18.09.0, build 4d60db4

Para que o usuário possa executar o docker é necessário que ele faça parte do grupo docker.
# usermod -G docker -a <usuario>

Verifique se o Docker está rodando.
# service docker status
[ ok ] Docker is running.

Comandos básicos

Agora que temos o Docker instalado podemos pesquisar o que existe de pronto nos repositórios. Por exemplo, podemos ver quais imagens temos disponíveis para o Wordpress.

$ docker search wordpress
NAME                          DESCRIPTION  STARS         OFFICIAL            AUTOMATED
wordpress                     The WordPress rich content management system…   2839   [OK]
bitnami/wordpress       Bitnami Docker Image for WordPress     102                         [OK]
appcontainers/wordpress Centos/Debian Based Customizable Wordpress C… 34    [OK]
etopian/alpine-php-wordpress Alpine WordPress Nginx PHP-FPM WP-CLI   20     [OK]
centurylink/wordpress             Wordpress image with MySQL removed.         14      [OK]
raulr/nginx-wordpress             Nginx front-end for the official wordpress:f… 12      [OK]
arm32v7/wordpress                 The WordPress rich content management system…   8
dalareo/wordpress-ldap   Wordpress images with LDAP support automatic…   6     [OK]
wodby/wordpress-nginx          Nginx for WordPress                             3                    [OK]
wodby/wordpress-php             PHP for WordPress                                3                    [OK]
dsteinkopf/wordpress              wordpress clone plus some php extensions     1          [OK]
owncloud/wordpress               Wordpress image for ownCloud websites           1
itherz/wordpress                      Wordpress                                              0                    [OK]

Imagens são bases de onde criaremos os conteiners. Podemos ter vários conteiners baseados numa mesma imagem. Você verá imagens, oficiais ou não, do Windows, FreeBSD, diversos sabores de Linux, e vários outros sistemas.

Vamos baixar a imagem do Wordpress para teste.
$ docker pull wordpress
Using default tag: latest
latest: Pulling from library/wordpress
6ae821421a7d: Pull complete
08f3d19635b0: Pull complete
dc8a54b8000b: Pull complete
b2c1d103db99: Pull complete
edfa752aa38a: Pull complete
583d37cbf2f0: Pull complete
c7846a240c1d: Pull complete
d8f9f0fd02fe: Pull complete
01d43e56770d: Pull complete
d7028d09ed0d: Pull complete
e7ada57130df: Pull complete
f8e18fc0e759: Pull complete
84b31f19dee2: Pull complete
5c0a2578817b: Pull complete
2fc1807539b8: Pull complete
62fcf2f6ca7b: Pull complete
64fda3ba2679: Pull complete
7500be78bfbe: Pull complete
Digest: sha256:37f9b9ba391302990b349daefe9fbf4691f79d4aa87e1af5f3617a3750e9678c
Status: Downloaded newer image for wordpress:latest
Agora podemos ver que temos uma imagem do Wordpress.
$ docker images
REPOSITORY   TAG               IMAGE ID           CREATED         SIZE
wordpress           latest              523eaf9f0ced        2 days ago          422MB

Apesar de termos uma imagem, ainda não temos nenhum conteiner rodando.
$ docker ps
CONTAINER ID  IMAGE COMMAND  CREATED  STATUS     PORTS         NAMES

Agora podemos subir o primeiro conteiner do Wordpress.
$ docker run wordpress
WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html

Agora podemos ver que temos um conteiner rodando o Wordpress.
$ docker ps
CONTAINER ID IMAGE     COMMAND        CREATED   STATUS PORTS  NAMES
d746d4cd238c wordpress "docker-entrypoint.s…"About an hour agoUp 3 seconds 80/tcp dazzling_diffie

Reparem que o ID do conteiner é d746d4cd238c. Se você executar outro comando "docker run wordpress" outro conteiner será criado com outro id. Para parar um conteiner você deve executar o seguinte.
$ docker stop d746d4cd238c
d746d4cd238c

Vemos agora que nunhum conteiner está rodando.
$ docker ps
CONTAINER ID   IMAGE        COMMAND   CREATED STATUS  PORTS   NAMES

Se quisermos ver todos os conteiner, inclusive os que estão parados, digite:
$ docker ps -a
CONTAINER ID IMAGE      COMMAND     CREATED STATUS        PORTS NAMES
d746d4cd238c wordpress "docker-entrypoint.s…" 20 hours ago Exited (0) 34 seconds ago        dazzling_diffie

Para executarmos o conteiner novamente digitamos:
$ docker start d746d4cd238c
d746d4cd238c
$ docker ps
CONTAINER ID  IMAGE        COMMAND      CREATED STATUS  PORTS   NAMES
d746d4cd238c wordpress "docker-entrypoint.s…" About an hour ago Up 1 second 80/tcp        dazzling_diffie

Podemos usar também o comando "docker kill" para matar o conteiner. Isso poderá gerar inconsistências nos dados. Por isso, só o use em último caso. Kill não apaga o conteiner.

Podemos notar na saída do comando "docker ps" que o coteiner está ouvindo a pora 80 TCP. O Docker cria por padrão uma interface virtual na rede 172.17.0.0/16.
$ ip addr show dev docker0
6: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:00:e8:b2:2d brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:ff:fee8:b22d/64 scope link
       valid_lft forever preferred_lft forever

O primeiro conteiner terá o próximo IP disponível nesta rede, e o seu gateway será o IP 172.17.0.1, que é o IP da interface virtual do hospedeiro.
$ ping -c 1 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.094 ms
--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.094/0.094/0.094/0.000 ms

Você pode acessar a página do Wordpress digitando na barra do navegador:
http://172.17.0.2

Podemos apagar o conteiner com o comando:
$ docker rm d746d4cd238c
d746d4cd238c

Esse comando não apaga os volumes associados ao conteiner. Para apagar todos os volumes, digite:
$ docker rm -v d746d4cd238c
d746d4cd238c

Se quisermos apagar todos os conteiners, podemos usar o seguinte comando:
$ docker rm -v `docker ps -aq`

A opção -aq mostra somente os IDs dos conteiners, e isso será passado para o rm.

O mesmo pode ser feito para excluir as imagens. Lembre-se de que, para excluir uma imagen, deve-se excluir primeiro todos os conteiners que a usam.
$ docker rmi `docker images -q`
Untagged: wordpress:latest
Untagged: wordpress@sha256:37f9b9ba391302990b349daefe9fbf4691f79d4aa87e1af5f3617a3750e9678c


Nomeando conteiners


É interessante nomear um conteiner antes de criá-lo.
$ docker run -ti --name Olonca -d debian /bin/bash
9538911a284e0ca1df0b64202e46e5856b764a256d9b41879c230eaa467ce993

A opção -ti permite que entremos no conteiner no modo interativo. Com esse comando criamos um conteiner chamado Olonca derivado da imagem debian.
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian                        latest                d508d16c64cd       3 weeks ago           101MB
$ docker ps
CONTAINER ID IMAGE        COMMAND      CREATED  STATUS  PORTS   NAMES
9538911a284e      debian           "/bin/bash"         40 seconds ago Up    37 seconds Olonca

Podemos entrar no conteiner com a opção -ti.
$ docker exec -ti 9538911a284e /bin/bash

Se preferir, podemos executar um comando dentro do conteiner.
$ docker exec -ti 9538911a284e hostname
9538911a284e


Trocando arquivos com o conteiner


Podemos copiar arquivos de/para o conteiner.

$ docker ps
CONTAINER ID  IMAGE         COMMAND  CREATED  STATUS   PORTS    NAMES
90b9504cb87a debian   "/bin/bash" 41 minutes ago Up 39 minutes                  Limit_ram2
bdbd7f583122 debian   "/bin/bash" 42 minutes ago Up 31 minutes                  Limit_ram
9538911a284e  debian        "/bin/bash"   2 hours ago  Up 40 minutes               Olonca
$ docker exec 90b9504cb87a ls /tmp 
$ docker cp tmp/20190301.txt 90b9504cb87a:/tmp
$ docker exec 90b9504cb87a ls /tmp
20190301.txt

Em algumas situações, o conteiner deverá utilizar uma pasta no host como se fosse nele. Podemos fazer isso com o parâmetro -v. Por exemplo, vamos montar a pasta /home/ricardo/tmp/ftp na pasta /home/ftp do conteiner.
$ mkdir /home/ricardo/tmp/ftp
$ docker run -ti --name FTP -v /home/ricardo/tmp/ftp:/home/ftp debian /bin/bash
root@5b348f6bb9b1:/# exit
exit
$ docker ps -a
CONTAINER ID IMAGE       COMMAND   CREATED STATUS        PORTS  NAMES
5b348f6bb9b1  debian   "/bin/bash"  14 seconds ago Exited (0) 7 seconds ago            FTP
9538911a284e  debian   "/bin/bash" 3 hours ago    Up About an hour                 Olonca
$ docker start 5b348f6bb9b1
5b348f6bb9b1 
$ docker ps 
CONTAINER ID IMAGE        COMMAND      CREATED  STATUS  PORTS   NAMES
5b348f6bb9b1   debian          "/bin/bash" 25 seconds ago Up 2 seconds                       FTP
9538911a284e   debian       "/bin/bash"    3 hours ago    Up About an hour              Olonca
$ docker exec 5b348f6bb9b1 ls /home/ftp 
$ touch /home/ricardo/tmp/ftp/teste 
$ docker exec 5b348f6bb9b1 ls /home/ftp
teste
Podemos montar um volume somente como leitura.

$ docker run -ti --name FTP2 -v /home/ricardo/tmp/cd:/mnt/cdrom:ro debian /bin/bash

Para ver os mapeamentos digite o seguinte:
$ docker inspect -f {{.Mounts}} FTP
[{bind  /home/ricardo/tmp/ftp /home/ftp   true rprivate}]
$ docker inspect -f {{.Mounts}} FTP2
[{bind  /home/ricardo/tmp/cd /mnt/cdrom  ro false rprivate}]

Você pode criar uma pasta no conteiner que poderá ser compartilhada com outros conteiners.
$ docker run -ti -v /home --name dados debian /bin/bashroot@38a438db1903:/# exit
exit 
$ docker start 38a438db1903
38a438db1903 
$ docker inspect -f {{.Mounts}} dados
[{volume 7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1 /var/lib/docker/volumes/7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1/_data /home local  true }]

E agora podemos montar esse volume em um novo conteiner.
$ docker run -ti --volumes-from dados centos /bin/bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest 
[root@bb85fcc8b5f0 /]# exit
exit 
$ docker inspect -f {{.Mounts}} dados
[{volume 7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1 /var/lib/docker/volumes/7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1/_data /home local  true }] 
$ docker ps -a
CONTAINER ID IMAGE    COMMAND CREATED STATUS            PORTS   NAMES
bb85fcc8b5f0 centos "/bin/bash" 39 minutes ago Exited (0) About a minute ago eager_lumiere
38a438db1903 debian "/bin/bash"  43 minutes ago Up 43 minutes                            dados
247f457f6d81  debian  "/bin/bash" About an hour ago   Up About an hour                FTP2
5b348f6bb9b1  debian "/bin/bash"  2 hours ago       Up 2 hours                                  FTP
90b9504cb87a debian "/bin/bash" 3 hours ago  Exited (0) 2 hours ago            Limit_ram2
bdbd7f583122 debian "/bin/bash" 3 hours ago  Up 3 hours                                Limit_ram
9538911a284e debian  "/bin/bash"  5 hours ago   Up 3 hours                                  Olonca 
$ docker start bb85fcc8b5f0
bb85fcc8b5f0 
$ docker ps
CONTAINER ID IMAGE        COMMAND      CREATED  STATUS  PORTS   NAMES
bb85fcc8b5f0 centos   "/bin/bash" 40 minutes ago Up 2 seconds                  eager_lumiere
38a438db1903 debian       "/bin/bash"   43 minutes ago Up 43 minutes                     dados
247f457f6d81  debian       "/bin/bash"   About an hour ago  Up About an hour          FTP2
5b348f6bb9b1 debian       "/bin/bash"   2 hours ago       Up 2 hours                             FTP
bdbd7f583122 debian      "/bin/bash" 3 hours ago  Up 3 hours                           Limit_ram
9538911a284e debian       "/bin/bash"   5 hours ago     Up 3 hours                           Olonca
$ docker inspect -f {{.Mounts}} eager_lumiere
[{volume 7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1 /var/lib/docker/volumes/7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1/_data /home local  true }] 
$ docker inspect -f {{.Mounts}} dados
[{volume 7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1 /var/lib/docker/volumes/7bc9d12f3fdc7d6527052d7ac488cdadd17b811f37680d8cff201da9b86d4fb1/_data /home local  true }]

Trabalhando com rede


Podemos levantar um conteiner e mapear uma porta TCP para ser espelhada no hospedeiro. Com isso não é necessário criar um NAT para esse serviço.
$ docker run -ti --name Drupal -p 80:80 -d drupal /bin/bash

$ docker exec -ti 471f35e0eb01 /bin/bash 
rro@471f35e0eb01:/var/www/html# /etc/init.d/apache2 start
[....] Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
. ok  
root@471f35e0eb01# exit
exit 
$ docker ps 
CONTAINER ID IMAGE        COMMAND       CREATED STATUS  PORTS   NAMES
471f35e0eb01 drupal "docker-php-entrypoi…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp Drupal
9538911a284e debian   "/bin/bash"         6 days ago     Up 3 hours                          Olonca

Agora acesse o site pelo endereço http://localhost


Criando images


Você também pode criar imagens personalizadas. Para isso crie um arquivo chamado Dockerfile com o seguinte conteúdo.
    FROM <imagem>
    ENV <variavel=valor>
    RUN <comandos>
    COPY <origem> <destino>
  
FROM é o modelo que você vai usar, como "debian".
ENV define variáveis de ambiente que serão usadas na imagem personalizada.
RUN são os comandos que você quer executar na imagem.
COPY pode ser usado para copiar arquivos da máquina hospedeira para a imagem.

Agora rode o comando:

$ docker build -t <nome> .

Por exemplo, vamos criar uma imagem baseada em Debian só com o iptables.
$ cat Dockerfile
FROM debian
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y iptables
RUN apt-get upgrade -y
$ docker build -t firewall .
Sending build context to Docker daemon  1.721MB
Step 1/5 : FROM debian
 ---> d508d16c64cd
Step 2/5 : RUN apt-get update
 ---> Running in c653b4fcf3b8
Get:3 http://security-cdn.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Ign:1 http://cdn-fastly.deb.debian.org/debian stretch InRelease
Get:2 http://cdn-fastly.deb.debian.org/debian stretch-updates InRelease [91.0 kB]
...
Removing intermediate container c653b4fcf3b8
 ---> 1fb31b2efe4d
Step 3/5 : RUN apt-get install -y apt-utils
 ---> Running in 022f86a9d7cb
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libapt-inst2.0
The following NEW packages will be installed:
  apt-utils libapt-inst2.0
0 upgraded, 2 newly installed, 0 to remove and 7 not upgraded.
Need to get 602 kB of archives.
After this operation, 1607 kB of additional disk space will be used.
...
Removing intermediate container 022f86a9d7cb
 ---> 09974d670efb
Step 4/5 : RUN apt-get install -y iptables
 ---> Running in 2b2a14386488
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  libip4tc0 libip6tc0 libiptc0 libnetfilter-conntrack3 libnfnetlink0
  libxtables12
Suggested packages:
  kmod
The following NEW packages will be installed:
  iptables libip4tc0 libip6tc0 libiptc0 libnetfilter-conntrack3 libnfnetlink0
  libxtables12
0 upgraded, 7 newly installed, 0 to remove and 7 not upgraded.
Need to get 609 kB of archives.
After this operation, 2222 kB of additional disk space will be used.
Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libnfnetlink0 amd64 1.0.1-3 [13.5 kB]
Get:2 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libip4tc0 amd64 1.6.0+snapshot20161117-6 [67.8 kB]
...
Removing intermediate container 2b2a14386488
 ---> 520d7a44e5d4
Step 5/5 : RUN apt-get upgrade -y
 ---> Running in b062393ac802
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
The following packages will be upgraded:
  base-files gpgv libc-bin libc6 libsystemd0 libudev1 multiarch-support
7 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 4631 kB of archives.
After this operation, 4096 B of additional disk space will be used.
Get:1 http://security-cdn.debian.org/debian-security stretch/updates/main amd64 libsystemd0 amd64 232-25+deb9u9 [281 kB]
Get:2 http://security-cdn.debian.org/debian-security stretch/updates/main amd64 libudev1 amd64 232-25+deb9u9 [126 kB]
...
Removing intermediate container b062393ac802
 ---> da1e417ebd51
Successfully built da1e417ebd51
Successfully tagged firewall:latest

Agora temos uma imagem do Debian chamada firewall que já possui o iptables.
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
firewall            latest              da1e417ebd51        About an hour ago   140MB
wordpress        latest              4771adb1849c        3 days ago                421MB
drupal              latest              47a58c95e8e4         3 days ago                446MB
debian              latest              d508d16c64cd        4 weeks ago             101MB
centos              latest              1e1148e4cc2c         3 months ago            202MB 
$ docker run -ti -d firewall /bin/bash
47c616dc4a45b0468a7b67f10a689eed303db1d95358def850807d78331ddef7 
$ docker ps
CONTAINER ID IMAGE        COMMAND      CREATED STATUS  PORTS    NAMES
47c616dc4a45 firewall "/bin/bash" 13 seconds ago Up 3 seconds         pedantic_elbakyan
471f35e0eb01 drupal "docker-php-entrypoi…" 24 hours ago Up 6 hours 0.0.0.0:80->80/tcp Drupal
$ docker exec -ti 47c616dc4a45 iptables -nL
iptables v1.6.0: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
Com isso já dá para ir brincando com o Docker. 

terça-feira, 15 de janeiro de 2019

Gnome-nettool, uma ferramenta gráfica para análise de rede

O ambiente gráfico Gnome tem uma ferramenta para análise de rede, o Gnome-nettool.


Com ela podemos fazer análise de ping, netstat, traceroute, nslookup, whois e até pesquisa de portas remotas como o nmap.


Esse programa pode ser instalado com o pacote gnome-nettool. Após instalado, procure o ícone de "Ferramentas de Rede".




quinta-feira, 3 de janeiro de 2019

Previsões para o futuro

Como em todo ano, vou fazer as minhas previsões para o futuro. Essas previsões não são fruto da minha imaginação. Elas são baseadas em artigos científicos que li durante alguns anos.

Primeiro, vamos rever as previsões que acertei.

  • Uso intenso de smartphones, computação em nuvem e mobilidade;
  • Pagamento eletrônico através do celular;
  • Popularização da rede 4G;
  • Aumento do uso de virtualização na área de TI;
  • Ampla utilização da banda larga no Brasil;
  • Fim da TV analógica;
  • Uso mais intenso do HTML 5;
  • Televisores 4K serão o padrão;
  • Envio de sondas para Marte e Júpiter;
  • Uso de realidade aumentada;
  • Uso de drones para monitoramento e pequenas entregas;
  • Domínio do Android no mercado de smartphones;
  • Internet residencial de 100mbps;
  • Volta do crescimento econômico do Brasil;


O que esperar para esse ano?

  • Banda larga chegará a 95% dos lares brasileiros;
  • Uma rede de satélites poderá disponibilizar internet para o mundo todo;
  • 59% da população mundial terá um smartphone;
  • 91% das linhas telefônicas serão móveis;
  • A energia solar começará a ser usada em larga escala;
  • Poderá entrar em operação um avião supersônico comercial;
  • A Suíça implantará um carteiro robô;
  • Um mamute poderá ser ressussitado;


Em 2 anos

  • A chave cripográfica de 2048 bits será considerada insegura;
  • Sistemas ligados ao corpo monitorarão a saúde de pacientes;
  • O mundo terá 21 bilhões de dispositivos conectados na internet;
  • Todos os dispositivos eletrônicos deverão estar conectados na internet de alguma forma;
  • Todas as cidades da Europa terão wifi gratuíto;
  • Fim do suporte ao Windows 7;
  • Fim do IPv4 na África;
  • Aparecerão as primeiras redes exclusivamente IPv6;
  • 70% da população mundial terá um smartphone;
  • A internet da coisas (IoT) e sistemas cognitivos serão corriqueiros;
  • As pessoas conversarão mais com robôs do que com pessoas reais;
  • 92% do processamento das empresas será na núvem;
  • 59% das pessoas usarão a núvem;
  • As viagens à Lua voltarão;
  • Mars One enviará sua primeira sonda para Marte;
  • China vai enviar sondas à Marte;
  • Construção de um hotel espacial;
  • Desativação do telescópio Hubble;
  • Uso mais intenso de carros elétricos e autônomos;
  • Sistemas de compartilhamento de carros serão mais usados, fazendo a venda de autos diminuir;
  • As pessoas passarão a gravar todas as conversas telefônicas;
  • Começarão as vendas de TV 8K;
  • Operações poderão ser feitas à distância;
  • O câncer será a principal causa de mortes no Brasil;
  • A China será o maior exportador do mundo;
  • A Arábia Saudita vai inaugurar o prédio mais alto do mundo com 1km de altura;
  • Chegará ao mercado a carne cultivada, sem abate de animais;


Em 5 anos

  • Banda larga de 100mbps em todas as residências do Brasil;
  • Mais da metade do tráfego de internet será feita por utensílios domésticos;
  • SpaceX deve enviar a primeira espaçonave da primeira fase de colonização de Marte;
  • SpaceX deverá ter viagens turísticas em torno da Lua;
  • ESA deve lançar uma sonda com destino à Júpiter;
  • Nasa deve construir uma base na Lua;
  • A Nigéria deverá ser o terceiro país mais populoso do mundo;

Em 10 anos

  • A internet terá 1 trilhão de dispositivos;
  • 80% da população mundial terá acesso à internet;
  • Todas as casas da Europa terão internet de 100mbps;
  • Entrará em funcionamento a rede 5G;
  • Windows 10 não terá mais suporte;
  • O celulares brasileiros precisarão de 10 digitos;
  • Uso de robôs para trabalhos domésticos;
  • Comercialização de robôs sexuais;
  • 5% de tudo o que consumimos será feito com impressora 3D;
  • Órgãos para transplante poderão ser feitos em impressoras 3D;
  • Teremos internet doméstica com 500mpbs;
  • Micros domésticos terão 20Tb de espaço;
  • Os processadores atingirão velocidades de terahertz;
  • Lentes de contato projetarão imagens diretamente no olho;
  • Teremos dispositivos controlados pela mente;
  • A Nasa deverá enviar uma sonda para a Europa, lua de Júpiter;
  • A maioria dos carros serão elétricos;
  • Uma sonda deverá ser enviada à Vênus;
  • Primeiros astronautas em Marte;
  • Sonda da ESA deve chegar a Júpiter;
  • A estação espacial ISS será desativada;
  • Uber terá carros voadres parecidos com drones;
  • 10% dos veículos serão autônomos;
  • A profissão de motorista começará a desaparecer;
  • China deve enviar astronautas à Lua;
  • 10% do PIB mundial será baseado em moedas digitais;
  • Teremos ciborges;
  • 66% da população mundial não terá acesso à água potável;
  • O mundo terá 8 bilhões de pessoas;
  • Veneza ficará desabitada;
  • Modificações genéticas aumentarão a expectativa de vida;

Em 20 anos

  • Será possível fazer backup da mente;
  • Teremos computadores quânticos;
  • China deverá ter rede de comunicação quântica;
  • Inteligência Artificial estará no cotidiano das pessoas;
  • Bug do timestamp;
  • As casas terão monitores embutidos nas paredes;
  • Faremos exames ao usar o banheiro ou escovar os dentes;
  • Teremos implantes que aumentarão nossa audição e visão;
  • Todas as pessoas estarão conectadas na internet de alguma forma;
  • Deve começar a construção de uma cidade no espaço;
  • Lançamentos de pequenas naves em direção a Alfa Centauri e Próxima B
  • Uma sonda deverá orbitar Ganimedes;
  • O mundo terá 8 bilhões de habitantes;
  • Haverá uma vacina contra a AIDS;
  • Suécia deverá extinguir o papel moeda;
  • China será a maior economia do mundo;
  • A temperatura média da Terra deverá subir 0,5ºC;
  • Os oceanos se elevarão 6cm em média;
  • A espectativa de vida será de 72 anos em média no mundo;
  • Criação de nervos e sangue artificiais;
  • Dormiremos em conchas acústicas;
  • A Índia será o país mais populoso do mundo;
  • O monte Kilimanjaro deixará se ser coberto por neve;
  • A população do Brasil começará a diminuir;

Em 50 anos

  • Será possível fazer download e upload de/para o cérebro;
  • Teremos vários dispositivos implantados no corpo;
  • A rede 6G deve entrar em operação;
  • Teremos links residenciais de 5gbps;
  • Os computadores domésticos terão 500Tb de espaço;
  • Os processadores terão velocidades de petahertz;
  • Volta do cometa Halley;
  • Teremos um elevador espacial;
  • Turismo espacial terá um preço acessível;
  • Colonização de Marte;
  • Carros movidos a gasolina não mais existirão;
  • O homossexualismos será considerado normal;
  • Pessoas congeladas por criogenia serão ressucitadas;
  • Será possível fazer transplante de cérebro;
  • Será possível fazer escolhas genéticas;
  • Será possível clonar humanos;
  • A temperatura média da Terra será 5ºC mais quente se comparado a 2010;
  • Os oceanos terão mais plástico do que peixe;
  • O Brasil será a quarta economia mundial. A Índia será a terceira;
  • O mundo terá 9 bilhões de habitantes;
  • A Índia será o país mais populoso do mundo;
  • A Amazônia terá mais cerrado do que floresta tropical;

Em 100 anos

  • A humanidade chegará à Próxima Centauri;
  • Não haverá gelo no Pólo Norte, fazendo o nível do mar subir 90cm;
  • O mundo terá 11 bilhões de habitantes;
  • 66% da floresta Amazônica terá desaparecido se comparado a 2006;
  • O rio Amazonas vai secar;
  • Haverá um único governo mundial e uma única moeda;

Em 200 anos

  • Haverá uma população auto-sustentável em Marte

terça-feira, 27 de novembro de 2018

Campo Minado no Gnome

Para você que é saudosista e sente saudades do jogo Campo Minado, tão jogado no Windows, o ambiente gráfico Gnome do Linux também tem o jogo. Ele é chamado de Minas e pode também ser iniciado com o comando "gnome-minas"


quarta-feira, 25 de julho de 2018

Olonca Live CD 2018

Como em todo ano, estou disponibilizando a minha distribuição personalizada.


A maior diferença desta versão em relação à 2017 é o sistema de arquivos Btrfs no lugar do Ext4, além das atualizações triviais do Debian Stable.



Esta versão homenageia o cachorro biônico Dinamite, mascote do Falcão Azul, super-herói do desenho animado Bionicão que passava na TV brasileira nos anos 80.

O download pode ser feito no link abaixo.

https://cloud.tvcultura.com.br/index.php/s/Lj4rBFBF4HiGRXC


quinta-feira, 4 de janeiro de 2018

Futurologia

Como em todo começo de ano, estou fazendo um exercício de futurologia com base no que eu vi e li nos meios de comunicação sobre o que o futuro nos espera. Algumas previsões feitas há 7 anos atrás foram acertadas, então pode ser que isso realmente aconteça. O que você acha?

Previsões feitas há 7 anos atrás
  • Popularização dos smartphones
  • Documentos online
  • Cmputação em nuvem
  • Terceirização da TI
  • Fim da TV analógica
  • Expansão da banda larga para todo o país
  • Comercialização de TV 4K
  • Carros autônomos
  • Sondas andando em Marte
  • Aumento de ciclovias em São Paulo
  • Uso de drones e vants
  • Banda larga residencial de 100 mb nos grandes centros


Previsões para 1 ano
  • Internet das Coisas (IoT) começará a dar lucros para as empresas
  • Uso do Facebook começará a cair
  • 50% dos programas adquiridos pelas empresas será livre
  • Começam os testes com a rede 5G
  • A Gol deve oferecer internet em seus voos
  • Protótipo de smartphone com tela de 11K
  • Desligamento da TV analógica em todo o Brasil
  • Crescimento da economia brasileira
  • Reinauguração da base brasileira na Antártida
  • Alguns prédios franceses serão iluminados por bactéria
  • EUA poderá ter o supercomputador mais rápido do mundo
  • Lançamento de jatos supersônicos particulares
  • Voo não tripulado para além da órbita terrestre
  • SpaceX deve colocar astronautas em órbita da Lua
  • Nasa deve enviar uma sonda para estudar o Sol


Em 2 anos
  • Uma rede de satélites deverá fornecer internet para todo mundo
  • A energia solar será usada em larga escala
  • Poderão ressussitar um mamute usando insseminação artificial em uma elefoa


Em 5 anos
  • Chaves criptográficas de 2k serão consideradas inseguras
  • Sistemas ligados ao corpo humano monitorarão nossa saúde
  • Todos os dispositivos eletrônicos estarão conectados na internet
  • Maior uso de equipamentos particulares nas empresas
  • Casas inteligentes serão mais comuns
  • Maior uso de sistemas com inteligência artificial
  • O IPv4 vai acabar na África
  • Muitos carros terão acesso à internet
  • A rede 5G vai entrar em operação
  • Os carros elétricos e autônomos serão comuns
  • A polícia vai usar vants e drones para monitoramento
  • Voltarão as explorações espaciais na Lua
  • Gravar conversas telefônicas será comum
  • Lançamento das TV de 8K
  • 70% da população mundial terá um dispositivo móvel
  • 21 bilhões de dispositivos estarão conectados na internet
  • Hospitais poderão fazer operações à distância
  • Maior uso de aplicação do tipo Uber
  • Aparecerão as redes exclusivamente IPv6
  • O telescópio Hubble será desativado
  • SpaceX, Mars One e Nasa começarão o projeto de colonização de Marte


Em 10 anos
  • As primeiros estruturas para abrigar humanos começarão a ser feitas em Marte
  • Missões espaciais para estudar asteróides
  • Lentes de contato com realidade aumentada
  • Testes com dispositivos controlados pela mente
  • 1 trilhão de dispositivos estarão conectados na internet
  • 80% da população mundial terá acesso à internet
  • Fim da Estação Espacial Internacional - ISS
  • A extração de petróleo começará a entrar em colapso
  • Caros autônomos serão comuns, gerando queda no número de motorista
  • Impressoas 3D serão comuns
  • Órgãos humanos poderão ser feitos em impressoras 3D
  • Será acrescentado mais um dígito no número dos celulares brasileiros
  • Casas poderão ter robôs, inclusive para fins sexuais
  • Faltará água potável para 2/3 da população mundial
  • 10% do PIB mundial será baseado em moedas virtuais como o Bitcoin
  • Poderão ser usados implantes wireless em humanos
  • Drones poderão ser usados como meio de transporte (os tão sonhados carros voadores)
  • Microcomputadores terão 20Tb de HD e 1Thz de velocidade
  • A internet doméstica terá 500Mbps
  • Será possível fazer telecomonicação quântica
  • Vênus voltará a ser explorado por sondas
  • China será a maior potência econômica do mundo
  • Poderão aparecer os primeiros ciborgues


Em 20 anos
  • Computadores com emoção e personalidade
  • O mundo terá 8 bilhões de habitantes
  • Haverá uma crise mundial de água, alimentos e energia
  • Será criada a vacina contra a AIDS
  • Alguns países deixarão de emitir papel moeda
  • Será possível fazer backup da mente
  • Aplicações com inteligência artificial será comum
  • Missãoes tripuladas a um asteróide
  • Começarão a ser contruídas as primeiras cidades no espaço
  • Os voos domésticos deixarão de ser tripulados
  • Casas terão vários monitores embutidos nas paredes
  • Dormiremos em conchas acústicas
  • Veículos movidos a água serão comercializados
  • Vários sensores nas casas monitorarão a nossa saúde
  • Todas as pessoas do mundo estarão de alguma forma conectadas na internet
  • A Índia será o país mais populoso do mundo
  • Teremos computadores quânticos
  • Espactativa média de vida será de 100 anos


Em 50 anos
  • Bug do timestamp
  • Será possível fazer download e upload direto pro cérebro
  • A rede 6G será liberada comercialmente
  • Os links de internet residenciais chegarão a 5Gbps
  • Os microcomputadores terão 500Tb de disco e velocidades de 1Phz
  • Será possível reviver pessoas congeladas por criogenia
  • Haverá um conselho militar e político mundial ligado à ONU
  • Será possível fazer escolhas genéticas
  • Criação de prédios com mais de 1km de altura
  • O nível do mar pode subir 30cm em Santos
  • A Terra será em média 5 graus mais quente
  • Os oceanos terão mais plástico do que peixes
  • Todos os carros serão autônomos
  • O Brasil será a quarta maior economia do mundo
  • O mundo terá 9 bilhões de habitantes
  • Metade dos habitantes da América Latina terá mais de 60 anos
  • Haverá uma base em Marte
  • Volta do cometa Halley
  • Será permitido fazer clonagem humana
  • Haverá mais cerrado do que floresta na Amazônia


Em 100 anos
  • A temperatura média do mundo pode subir até 5,8 graus
  • Não haverá gelo no Pólo Norte, fazendo o nível do mar subir até 90cm se comparado a 2005
  • Mais da metade da superfície do planeta será árida
  • Dois grandes furacões devem atingir o Japão
  • 9,5 bilhões de habitantes no mundo
  • Alguma sonda especial chegará em Pŕoxima Centauri, a estrela mais próxima da nós depois do Sol
  • 2/3 da Amazônia terá desaparecido e o rio Amazonas terá secado


Em 200 anos
  • Haverá uma colônia autosustentável em Marte

segunda-feira, 10 de julho de 2017

Live CD personalizado Olonca 2017

Atualizei o live CD Olonca. A versão 2017 faz uma homenagem ao Cruel, o gato do Gargamel do desenho Smurfs.


Essa versão usa como padrão o Gnome Shell, roda com apenas 320Mb de RAM e com qualquer processador 64 bits (Intel/AMD). Se quiser instalar você vai precisar de pelo menos (somente!) 16Gb de espaço em disco. A foto do papel de parede foi tirada da estação de trem Água Branca em São Paulo. 


É essa distribuição que uso em meus equipamentos desktop. Também a uso para manutenção em outros equipamentos, recuperação de arquivos, tracar a senha local do Windows, etc. Ela também possui várias aplicações servidoras que uso para demonstração em empresas. 

Quem quiser testá-la pode baixá-la no seguinte link:



segunda-feira, 19 de junho de 2017

Instalação do Linux

Neste artigo vou mostrar como instalar uma distribuição Linux. Devido à vasta variedade de distribuições não cabe neste post mostrar todas elas, mas vamos nos limitar a duas: a Mint, por ser a mais utilizada e mais amigável (na minha opinião), e a Debian, por ser uma distribuição que derivou muitas outras distros, além de muito usada também em servidores. Vou buscar focar nos pontos principais e mais complicados para o usuário não técnico. Você pode até usar um live-cd, ou seja, uma distribuição que não precisa ser instalada, que roda direto do CD. Mas isso prejudica o desempenho, pois o drive de CD/DVD é bem mais lento do que o disco rígido. Outro ponto é que todas as alterações e atualizações que você fizer no live-cd serão perdidas quando a máquina for reiniciada. Portanto, o live-cd deve ser usado como demonstração, manutenção e testes. Porém, a maioria das distribuições hoje possuem live-cd.

Como este artigo é voltado para quem está começando a mexer com Linux, suponho que você tenha um Windows instalado na máquina e não vai querer perder esse sistema. Você está acostumado com ele e, até que ganhe confiança no Linux, vai precisar usar o Windows de vêz em quando. Por isso, vamos instalar o Linux em “dual-boot”, ou seja, em um outro espaço no disco do computador de forma que você tenha os dois sistemas, Linux e Windows, rodando na mesma máquina. Ao ligar o computador, um menu de opções irá aparecer perguntando qual sistema você vai querer usar.

Antes de começar

Antes de instalar o sistema Linux é necessário preparar o Windows (mais precisamente o disco rígido e seus arquivos) para receber o novo sistema. Precisamos apagar os arquivos desnecessários de forma que você tenha pelo menos 20Gb de espaço livre no disco. Depois precisamos desfragmentar o disco, o que organiza os arquivos. Depois, como estamos falando de uma instalação de outro sistema operacional e, consequentemente, mudanças no disco, é aconselhável fazer uma cópia dos teus dados, um backup. Embora a perda de dados seja rara neste processo, é melhor prevenir do que remediar.

É necessário baixar o arquivo .iso da tua distribuição favorita e gravar o CD/DVD. Aqui, vou usar o Mint. E porque Mint? Porque, segundo o Distrowatch, é a distribuição Linux mais usada atualmente. Mas não se preocupe se quiser usar outra distribuição; o processo de instalação é semelhante, com poucas mudanças, e a única parte, digamos, difícil, é o particionamento do disco, pois isso, se for feito sem a devida atenção, pode causar perda de dados. Também suponho que você já tem o Windows instalado e não vai querer perdê-lo. Logo, vamos instalar o Linux junto com o Windows, num processo de Dual Boot

Antes de tudo, precisamos organizar os arquivos do Windows. Clique no “Botão Iniciar” e escolha “Todos os aplicativos”.


Agora vá em “Ferramentas Administrativas” e clique em “Limpeza de Disco”.


Na tela que aparece, selecione todo os itens e clique em “OK”.


Clique em “Excluir arquivos”. Esses arquivos são temporários e podem ser excluídos sem problemas. Isso vai liberar espaço no teu disco. 



Precisamos ter certeza de que temos pelo menos 20Gb de espaço livro no disco. No Windows, abra o Gerenciador de Arquivos, clique “Este Computador” e veja o espaço livre. Caso não tenha será necessário apagar arquivos ou desinstalar alguns programas, e só você poderá saber quais arquivos e programas poderão ser excluídos.

Agora que temos pelo menos 20Gb de espaço livre no disco, é altamente recomendável desfragmentar os arquivos. No processo de desfragmentação os arquivos são organizados de forma a deixar o máximo de espaço livre contínuo no disco. Para fazer isso, no Gerenciados de Arquivos, clique com o botão direito em “Disco local” e depois clique em “Propriedades”.


Na tela que abriu, clique na aba “Ferramentas” e depois clique em “Otimizar”.


Na próxima janela, selecione a unidade “C” e clique em “Otimizar”. 


Agora, grave o CD/DVD da tua distribuição. No site www.distrowatch.com você pode encontrar o link para o download de várias distribuição. No meu caso, como já informei, baixei o Mint. Coloque o CD/DVD no drive e reinicia o equipamento. Lembrando que o computador deve dar o boot pelo CD/DVD. A tela abaixo deverá aparecer. Caso não apareça, verifique se o micro iniciou pelo CD/DVD, e não pelo HD. Verifique também que o imagem .iso foi gravada corretamente e se o arquivo não estava corrompido.


Após o processo de boot, a tela abaixo do Mint irá aparecer. Você pode testar a distribuição sem precisar instalá-la, mas o desempenho não será o mesmo. Para começar o processo de instalação, dê um duplo clique no ícone “Install Linux Mint”


Escolha a linguagem e clique em “Continuar”.


Clique em “Continuar”.



A próxima tela é a mais perigosa, pois envolve o particionamento do disco. Vamos redimensionar a partição Windows para que sobre espaço para o Linux ser instalado. Se você está acostumado a instalar programas usando “Avançar”, “Avançar” e “Concluir” eu sinto em te informar que você vai perder seus arquivos (aliás, se você está lendo este livro é porque você quer aprender). Então, escolha a última opção, “Opção avançada” e clique em “Continuar”.


Na próxima tela são mostradas as partições usadas pelo Windows. Por padrão, o Windows 7, 8 e 10 fazem duas partições que você pode ver aqui como /dev/sda1 e /dev/sda2. A /dev/sda2 é onde se encontra o drive “C” do Windows e é esta partição que precisamos redimensionar. Para fazer isso, selecione a partição e clique em “Change...”.


O Linux precisa de pelo menos 20Gb (20000 MB) para poder trabalhar. Portanto, no nosso exemplo, a partição Windows cotinha 63Gb e deixei-a com 40Gb. Entre com o tamanho da partição e clique em “Ok”. 


Clique em “Continuar”.


Repare que agora temos um espaço livre no disco. Selecione-o e clique em “+”.


Vamos deixar um espaço para a memória virtual, também chamada de SWAP. Veja quanta mamória RAM o que equipamento tem. Eu sugiro que a soma da memória RAM com a SWAP seja de pelo menos 4Gb. No nosso caso, eu deixei 22000 MB (22 Gb) para a partição raiz (“/”). Selecione “Lógica” e “Início deste espaço”. Em “Usar como” selecione “Sistema de arquivos com journaling Ext4”. Em “Ponto de montagem” escolha “/”. Há vários outras partições que poderiam ser criadas, como a “/home”, mas eu prefiro simplificar esse processo neste momento. Quando você estiver mais familiarizado com o Linux você poderá personalizar a tua instalação. Agora clique em “Ok”. 


Agora temo uma outra área livre, que no nosso caso contém 1900 MB. Selecione essa área e clique em “+”.


Em “Usar como” escolha “Área de troca (swap)” e clique em “Ok”.


Agora temos uma partição swap. Clique em “Instalar agora”.


Clique em “Continuar”. Agora o Linux realmente  vai gravar as mudanças no disco,  redimensionar e formatar as partições.


Agora escolha a cidade onde você está para que a sistema carregue o fuso horário correto. Clique em “Continuar”.


Escolha, na janela da esquerda, o layout do teu teclado. Provavelmente deve ser “Português (Brasil)”. Do lado direito, escolha “Português (Brasil)”. Teste a configuração do teu teclado no espaço em branco logo abaixo. Se estiver ok, clique em “Continuar”. 


Agora você deve configurar o teu usuário, senha, e o nome da máquina. Se quiser, pode também criptografar os teus arquivos, ou permitir o login automático. Após, clique em “Concluir”. 


Pronto! O Linux Mint está instalado. Basta clicar em “Reiniciar agora”. 


Quando o computador ligar, a tela abaixo irá aparecer. Nela você pode escolher a última opção se quiser carregar o Windows. O Linux será carregado automaticamente em 5 segundo se nenhuma opção for escolhida.


Na tela de login, digite o teu usuário e clique em “Ok”.


Após digitar a senha a tela abaixo vai aparecer. Você já pode explorar o teu Linux!

terça-feira, 13 de junho de 2017

O que é distribuição Linux?

Uma distribuição Linux é um conjunto de programas distribuído junto com o Linux e que tem um objetivo e um público específico. Geralmente são disponibilizadas via CD ou DVD, mas também podem vir em qualquer tipo de midia.

Há distribuições voltadas para as mais variadas tarefas, entre elas posso citar:
  • Uso em desktop
  • Uso em servidores
  • Segurança
  • Multimidia
  • Dispositivos móveis
  • Dispositivos embarcados
  • Desenvolvimento
  • Jogos
  • Qualquer atividade e público específico

O site http://distrowatch.com contém uma relação das principais distribuições Linux no mundo com uma breve explicação sobre a distribuição, seu foco, endereço do site, desenvolvedores responsáveis e link para download. Também mantém um rank das distros mais usadas. Descrevo abaixo as principais

Android

  
É a distribuição voltada para dispositivos móveis mantida pela Google. Pode ser instalada em alguns equipamentos Desktop.

Antergos


Essa distribuição espanhola é derivada do Arch Linux e é voltada para Desktop. Possui vários ambientes gráficos como Cinnamon, Gnome, KDE, Mate, Openbox e XFCE.

Arch


O Arch é uma distribuição não derivada, ou seja, ela não é baseada em nenhuma outra distribuição. É voltada para profissionais que já possuem um bom conhecimendo em Linux.

CentOS


Muita usada também em servidores, o CentOS é a principal distribuição derivada do Red Hat usada em desktop. Para muitos, é um laboratório deste. As atualizações da Red Hat chegam primeiro no CentOS.

Chakra



Essa distribuição também é derivada do Arch Linux e costuma ser bem amigável com os usuários iniciantes no Linux.

ClearOS



Essa distribuição é para uso corporativo. Ela é voltada para administração de recursos de rede, como e-mail, antispam, firewall, filtro de conteúdo, etc. Com ela você pode facilmente administrar tua rede de computadores sem ter muito conhecimento técnico. 

Debian



Esta distribuição tem foco em servidores, mas também é muito usada em Desktops. Ela é uma das poucas que é 100% livre, não possuindo nenhum programa proprietário, como Flash ou Adobe Reader. Mas esses aplicativos podem ser instalados posteriormente. Várias distriubições, como Mint e Ubuntu, são derivadas da Debian.

Deepin


Também derivada da Debian, Deepin é uma distribuição chinesa que possui um ambiente gráfico próprio, o Deepin Desktop Environment – DDE, que é muito bonito e amigável.

Elementary



É derivado do Ubuntu e possui uma interface personalizada muito amigável chamado Pantheon.

Fedora



Derivado do Red Hat, assim como o CentOS, é muito usada tanto em servidores como em desktops.

Gentoo




Esta distribuição é muito usada por quem já tem um bom conhecimento técnico em Linux, mas nada impede que um usuário comum a use.

Kali



Esta distribuição é derivada do Back Track e é voltada para segurança e análise forense.

Knoppix


Foi a primeira grande distribuição a rodar diretamente do CD sem a necessidade de instalar o sistema. Usado para manutenção e demonstração, o Knoppix inspirou várias outras distribuições a adotarem do conceito de live-cd.

Kubuntu



Basicamente o Kubuntu é um Ubuntu com interface gráfica KDE.

Lite



Essa distribuição me impressionou pelo lindo visual, pela facilidade de uso e pelos assistententes simples e eficientes. Vale à pena dar uma conferida.

Mageia



Essa distribuição é derivada do Mandriva, que por sua vêz surgiu da união entre a brasileira Conectiva e a francesa Mandrake; ambas são derivadas da Red Hat. 

Manjaro


O Manjaro é derivado do Arch. Possui um ambiente muito bonito e amigável.

Mint



O Mint nasceu quando a Canonical mudou o ambiente gráfico do Ubuntu de Gnome para Unity. Muitos usuários não gostaram do ambiente e um grupo de voluntários criou o Mint. Hoje ele é o Linux para Desktop mais utilizado no mundo. Já o Ubuntun, que era o líder, passou para quarto lugar.

OpenMandriva


Quando o grupo que cuidava do Mandriva começou a ter alguns problemas e a distribuição ficou um pouco abandonada, um grupo de entusiastas criou o OpenMancriva.

Opensuse


A Suse foi comprada pela Novell, que por sua vêz foi comprada pela Microsoft. Logo, a Suse é a distribuição mais usada por quem trabalha com a plataforma Windows. E o Opensuse é uma derivação da Suse.

PCLinuxOS


Muito usada nos Estados Unidos, a PCLinuxOS tem muitos admiradores pelo mundo, mas não é muito conhecida aqui no Brasil.

Puppy


Essa distribuição é voltada para equipamentos antigos, ultrapassados, que possuem poucos recursos. Ela é leve e pode dar vida para aquele seu velho comptador que está guardado no porão. 

Red Hat


Talvêz a distribuição mais usado em servidores, a Red Hat é mantida por uma das maiores empresas de TI do mundo. Não é comum ver Red Hat em desktop. 

Sabayan



É baseado em Gentoo é tende a ser muito amigável e fácil de usar.

Slackware


É a distribuição mais antiga ainda em vigor. Várias outras distros derivam dela. É conhecida por não ter quase nenhum assistente. Ou seja, é um Linux para quem quer conhecer Linux a fundo. 

SteamOS


É a distribuição da Valve voltado para jogos e derivada da Debian. Ela já contém bibliotecas e módulos que melhoram o desempenho dos games. Vários jogos e aplicativos da Valve podem ser instalados através de um aplicativos que já vem com a distribuição.

Tails


É voltada para navegação anônima na internet.

Ubuntu


A distribuição mais famosa do mundo, mantida pela Canonical. Muitos dos seus usuários migraram para o Mint depois que a empresa decidiu mudar a interface gráfica para Unity.

Xubuntu


Um Ubuntu mantido pela comunidade e voltado para desktops mais modestos.

Zorin


É uma distribuição baseada no Ubuntu e tem como objetivo trazer ao usuário um ambiente mais parecido com o Windows. É fácil de usar e é ideal para quem está querendo migrar do Windows para Linux.

Qual a melhor dsitribuição?

Perguntar qual a melhor distribuição Linux é como perguntar qual o melhor time de futebol do Brasil. Cada um vai gostar do seu. O ideal é que você teste várias distros, experimente, analise, veja as vantagens e desvantagens de cada uma e escolha a que melhor se encaixar ao teu gosto. E depois de definir a tua distribuição, aprofunde-se nela, conheça-a a fundo e, se possível, colabore com ela. E não seja fanático! Não seja um fundamentalista! A tua distro pode não ser a melhor para outra pessoa. Lembre-se de que todas elas são Linux e, por isso mesmo, se encaixam nos mais variados gostos e necessidades. Essa é a liberdade que só o software livre pode oferecer!