Instalação do Docker no Linux: curl ou wget ?

Me perguntaram qual a diferença entre usar o curl ou wget para instalar o Docker no Linux. Aqui vai a resposta:

wget -qO- https://get.docker.com/ | sh

OU

curl -sSL https://get.docker.com/ | sh

Essencialmente ambos os comandos fazem a mesma coisa neste caso. A opção do curl é para ser usada em ambientes que não possuem wget por padrão como o MAC OSX, por exemplo.

Ambos jogam a saída para a standard output no modo silencioso. No curl é necessário indicar que ele deve seguir o redirecionamento, caso exista.

Indo pra saída padrão é possível redirecionar para a Shell /bin/sh e executar imediatamente a instalação.

Veja o help dos comandos abaixo. 

wget

-q, --quiet : Turn off Wget's output.
-O file, --output-document=file : The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed to standard output

curl

-s, --silent : Silent  or  quiet  mode.  Don't  show  progress meter or error messages. 
-S, --show-error : When used with -s it makes curl show an error message if it fails.
-L, --location : If the server reports that the requested page has moved to a different location (indicated with a Location: header  and  a  3XX  response  code),  this option  will  make  curl  redo the request on the new place.

Eu pessoalmente prefiro o curl, que é muito mais poderoso.

Se você precisar de recursividade no processo de download, use o wget pois o curl não faz isso.


Deixe seu nome e e-mail para que eu possa enviar cupons de desconto para o curso sobre Docker


Para quem desejar mais detalhes sobre as diferenças entre os comandos veja esta explicação em inglês. Se precisarem de ajuda entre em contato.

What both commands do

  • both are command line tools that can download contents from FTP, HTTP and HTTPS
  • both can send HTTP POST requests
  • both support HTTP cookies
  • both are designed to work without user interaction, like from within scripts
  • both are fully open source and free software
  • both projects were started in the 90s
  • both support metalink

How they differ

curl

  • library. curl is powered by libcurl – a cross-platform library with a stable API that can be used by each and everyone. This difference is major since it creates a completely different attitude on how to do things internally. It is also slightly harder to make a library than a “mere” command line tool.
  • pipes. curl works more like the traditional unix cat command, it sends more stuff to stdout, and reads more from stdin in a “everything is a pipe” manner. Wget is more like cp, using the same analogue.
  • Single shot. curl is basically made to do single-shot transfers of data. It transfers just the URLs that the user specifies, and does not contain any recursive downloading logic nor any sort of HTML parser.
  • More protocols supported. curl supports FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB/CIFS, SMTP, RTMP and RTSP. Wget only supports HTTP, HTTPS and FTP.
  • More portable. curl builds and runs on lots of more platforms than wget. For example: OS/400, TPF and other more “exotic” platforms that aren’t straight-forward unix clones.
  • More SSL libraries and SSL support. curl can be built with one out of eleven (11!) different SSL/TLS libraries, and it offers more control and wider support for protocol details. curl supports public key pinning.
  • HTTP auth. curl supports more HTTP authentication methods, especially over HTTP proxies: Basic, Digest, NTLM and Negotiate
  • SOCKS support. curl supports several SOCKS protocol versions for proxy access
  • Bidirectional. curl offers upload and sending capabilities. Wget only offers plain HTTP POST support.
  • HTTP multipart/form-data sending, which allows users to do HTTP “upload” and in general emulate browsers and do HTTP automation to a wider extent
  • curl supports gzip and inflate Content-Encoding and does automatic decompression
  • curl offers and performs decompression of Transfer-Encoded HTTP, wget doesn’t
  • curl supports HTTP/2 and it does dual-stack connects using Happy Eyeballs
  • Much more developer activity. While this can be debated, I consider three metrics here: mailing list activity, source code commit frequency and release frequency. Anyone following these two projects can see that the curl project has a lot higher pace in all these areas, and it has been so for 10+ years. Compare on openhub

Wget

  • Wget is command line only. There’s no library.
  • Recursive! Wget’s major strong side compared to curl is its ability to download recursively, or even just download everything that is referred to from a remote resource, be it a HTML page or a FTP directory listing.
  • Older. Wget has traces back to 1995, while curl can be tracked back no earlier than the end of 1996.
  • GPL. Wget is 100% GPL v3. curl is MIT licensed.
  • GNU. Wget is part of the GNU project and all copyrights are assigned to FSF. The curl project is entirely stand-alone and independent with no organization parenting at all with almost all copyrights owned by Daniel.
  • Wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
  • Wget supports the Public Suffix List for handling cookie domains, curl does not.
  • Wget supports only GnuTLS or OpenSSL for SSL/TLS support
  • Wget supports only Basic auth as the only auth type over HTTP proxy
  • Wget has no SOCKS support
  • Its ability to recover from a prematurely broken transfer and continue downloading has no counterpart in curl.
  • Wget can be typed in using only the left hand on a qwerty keyboard!

A Caixa de Ferramentas Docker (Toolbox)

Recentemente a equipe do Docker lançou a sua Toolbox (Caixa de Ferramentas) para utilização do Ecosistema Docker. Esta Toolbox provê funcionalidades para gerenciamento facilitado para Contêineres no ambiente MAC OSX e Windows (No Linux não precisamos da Toolbox pois a instalação do Docker é direta).

 

 

Qual o objetivo a ser alcançado ?

Como o MAC OSX e Windows são Sistemas Operacionais diferentes do Linux e o Docker atualmente roda sob Kernel Linux, precisamos de um Ambiente Virtual para usar as facilidades do Docker nestes dois ambientes (que são largamente utilizados por Desenvolvedores e Administradores de Sistemas).

O que é o Docker Toolbox ?

O  Docker Toolbox é um instalador que permite fazer o setup do ambiente no Windows e no MAC OSX. Vale lembrar que podemos usar gerenciadores de pacote também quando pretendemos instalar e configurar o Docker e seus componentes. No OSX é possível usar o Homebrew para instalar o Docker facilmente. No Windows podemos usar o Chocolatey – https://chocolatey.org/packages/docker  – mas não trataremos aqui desta abordagem, pois preferimos o programa fornecido pela propria Docker inc.

O Docker Toolbox funciona como programa executável dependente de plataforma e tem a capacidade de acertar o ambiente pois detecta a existência de versão anterior fazendo automaticamente os upgrades e as migrações necessárias.

Como qualquer programa que envolva este tipo de complexidade, ele pode falhar em alguma situação específica e por isso ele pede que o usuário autorize o envio de dados anônimos relacionados ao processo de instalação (primeira vez) para a equipe do Docker  de forma que eles possam melhorar o programa. O usuário pode, no entanto, desmarcar esta opção.

O Docker Toolbox instala ou atualiza os seguintes softwares:

  • Docker Client
  • Docker Machine
  • Docker Compose (apenas na versão para MAC OSX)
  • Docker Kitematic
  • Docker Quickstart Terminal
  • VirtualBox

O Boot2Docker continua sendo suportado e também é atualizado.

É possível criar uma Docker Machine à partir de uma Maquina Virtual do Boot2Docker. Para isso devemos executar o comando:

docker-machine create -d virtualbox  \
--virtualbox-import-boot2docker-vm boot2docker-vm dev

Mas se optarmos por isso à partir desse momento devemos usar o comando docker-machine para interagir com a maquina virtual em vez do vínhamos utilizando que era o comando boot2docker
A comparação entre as duas abordagens pode ser vista em detalhes nesta tabela abaixo:

ou no link: http://docs.docker.com/installation/mac/#migrate-from-boot2docker onde vemos mais detalhes sobre migração.

Qualquer problema encontrado no processo de instalação pode ser reportado no endereço https://github.com/docker/toolbox/issues o que também ajuda na melhoria do programa.

Neste processo de instalação citado, o Docker Toolbox mantem a versão anterior do programa Boot2Docker (1) e instala Docker Quickstart Terminal e o Kitematic (Beta) (3) na pasta Docker (2)

As Imagens e Contêineres antigos ficam disponíveis via a Maquina Virtual Boot2Docker anterior e para usá-las basta executar:

boot2docker start

Se desejar migrar para a Máquina Virtual Docker Machine use o comando

“docker-machine create -d virtualbox …”  citado anteriormente.


Matricule-se no curso online Introdução ao Docker para saber mais sobre esta tecnologia revolucionária

.

Se desejar um cupom de desconto entre em contato via formulário abaixo.

Deixe seu nome e e-mail para que eu possa enviar cupons de desconto para o curso sobre Docker

Você pode também curtir a página do facebook no link abaixo :

https://www.facebook.com/joaoparanaweb

Como Instalar o Docker no Windows e no MAC OSX

Neste post vou mostrar como instalar o Docker no Windows 7 e no MAC OSX Yosemite.

Neste video começo com a Instalação no Windows.

Aos 10 minutos e 22 segundos do Video eu começo a instalação no MAC OSX que dura menos de 7 minutos, bem mais rápido que no Windows.

Qualquer dúvida deixe um comentário abaixo que responderei com o maior prazer.



Matricule-se no curso para saber mais sobre esta tecnologia revolucionária
.

Matricule-se no curso para saber mais sobre esta tecnologia revolucionária

Se desejar um cupom de desconto, deixe um comentário que enviarei o link direto por e-mail.

Você pode também acessar a página do facebook no link abaixo:

https://www.facebook.com/joaoparanaweb

Interface Bridge no Boot2Docker

Configurando o Virtual BOX

É bastante util configurar uma placa de rede adicional no Virtual Box com interface Bridge.

Isso permite que o Docker obtenha um endereço IP do servidor DHCP disponivel na rede do seu computador Host (Windows ou MAC)

O problema é que a faixa de IP padrão usada pelo Virtual Box é 10.0.2.* e no caso de sua rede usar esta mesma faixa você deverá informar ao Virtual Box que ele deve usar outra faixa.

Para isso você deve usar o comando abaixo:

VBoxManage modifyvm "boot2docker-vm" --natnet1 "192.168.197.0/24"

Usei aqui a faixa 192.168.197. pois usualmente as redes WiFi já usam 192.168.1.

Rede Boot2Docker

Veja na imagem:

  1. Adaptador de rede usando NAT (Adapter 1) que foi modificado via comando VBoxManage modifyvm
  2. Adaptador de rede usando Bridge (Adapter 3)

Você pode fazer a mesma coisa para outras maquinas virtuais. Por exemplo, suponha uma maquina virtual com Windows 7 chamada Win7-64bits, voce pode executar o comando abaixo

VBoxManage modifyvm "Win7-64bits" --natnet1 "192.168.199.0/24"

Listando as Interfaces de rede você verá algo parecido com isto abaixo:

C:\Users\admin>ipconfig

Configuração de IP do Windows


Adaptador Ethernet Conexão local 2:

   Sufixo DNS específico de conexão. . . . . . : exemplo.com.br
   Endereço IPv4. . . . . . . .  . . . . . . . : 192.168.2.15
   Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.0
   Gateway Padrão. . . . . . . . . . . . . . . : 192.168.2.1

Adaptador Ethernet Conexão local:

   Sufixo DNS específico de conexão. . . . . . : exemplo.com.br
   Endereço IPv6 de link local . . . . . . . . : fe80::4592:a448:1ac2:d90c%11
   Endereço IPv4. . . . . . . .  . . . . . . . : 192.168.199.15
   Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.0
   Gateway Padrão. . . . . . . . . . . . . . . : 192.168.199.2

Adaptador de túnel isatap.exemplo.com.br:

   Estado da mídia. . . . . . . . . . . . . .  : mídia desconectada
   Sufixo DNS específico de conexão. . . . . . : exemplo.com.br

O endereço 192.168.199.15 foi obtido para a interface usando o NAT e o endereço 192.168.2.15 foi obtido pelo DHCP server da rede local do Host MAC OSX.

Rede Boot2Docker

Veja na imagem:

  1. Adaptador de rede usando NAT (Adapter 1) que foi modificado.
  2. Adaptador de rede usando Bridge (Adapter 2)