Navegar em sites pornô no modo privado não é tão seguro quanto você pensa. Entenda porque.

chrome incognito mode

A premissa deste post é tentar demonstrar que, mesmo acessando sites através da navegação privativa (Firefox) ou no Incognito Mode (Chrome) você está totalmente seguro contra a espionagem dos sites e (sim!) você pode ser exposto em algum momento e sofrer todas as consequências deste ato.
Se, de um lado, o modo de navegação privativa é inútil para proteger a sua privacidade, a ameaça (pelo menos, diretamente) não vem dos sites de conteúdo adulto.
Se você mora no Brasil ou em Portugal, está sob as mesmas condições de insegurança que qualquer outro. Mas a exposição pode ser mais do que “apenas” embaraçosa para quem mora em países de leis mais rígidas e conservadoras.
firefox private mode
Imagine se as autoridades de uma região, onde há pena de morte para homossexuais, descobre que um desafortunado andou vendo vídeos gays no PornHub ou Xvideos. Ainda que o tenha feito por mera curiosidade, ele ou ela estará em maus lençóis.
Em países de cultura moralista/conservadora e (possivelmente) hipócrita, uma exposição destas pode ocasionar danos irreversíveis a um profissional ou, mesmo, a um político.
Será que a segurança de sua audiência é prioridade para sites de conteúdo erótico/pornográfico?!

Quais são as possibilidades de você ser exposto publicamente?

O tópico é desconfortável, eu sei. Mas a gente precisa falar sobre isso e sobre como chegamos a este ponto.

Você é adulto, paga as suas contas etc. e tem todo o direito de olhar o que quiser, do seu computador, tablet ou smartphone — seja por curiosidade, para fins de pesquisa ou, mesmo, por diversão.
Não é?

Segue algumas considerações técnicas, que podem ajudar a entender a ameaça:

  1. As pegadas que seu navegador deixa pra trás.
    Navegadores web costumam deixar rastros ou pegadas, a cada vez em que você visita um site.
    Isto ocorre inclusive no modo de navegação privativa ou incognito mode.
    Várias ferramentas, como o Panopticlick podem confirmar que você fornece uma grande quantidade de informações sobre sua localização, seu computador etc.
  2. Identificadores globais.
    Este tipo de comportamento é responsável por ligar os rastros deixados por seu navegador em um site às pegadas deixadas em outro website ou em outra página, no mesmo website.
    Por isto é que você deveria pensar no seu navegador como um identificador global persistente e isto é particularmente verdadeiro se você não toma medidas para esconder o seu endereço IP (com o uso de uma VPN, por exemplo).
  3. Rastreamento de usuários.
    Este tipo de ação tem grande valor para os grandes websites (em particular, redes sociais, como o Facebook).
    Cada site tradicional que você já tenha visitado, guarda dados o suficiente , para ligar a sua conta de usuário aos rastros deixados pelo seu navegador — ou diretamente ou através de terceiros.
  4. … e seu computador pode ser invadido, claro!
    Você conhece o conteúdo das denúncias de Edward Snowden?
    Pois é. Imagine o que um Estado policial e vigilante pode fazer, de posse das informações sobre os lugares pelos quais os dissidentes navegam, na Internet?
    Imagine o que um concorrente comercial ou um adversário político pode fazer contra o outro.

Alguém malicioso, de posse de logs de acesso identificados, de um único site, que contenha o seu nome e as informações sobre o que você olhou, pode ligar o seu perfil no Facebook às suas preferências de visualização em sites pornôs.
Semelhante à exposição dos usuários do site Ashley Madison ou dos funcionários/salários da Apple, é questão de tempo alguém difundir uma lista com nomes de visitantes que passaram por sites pornôs, associada às suas preferências.
google chrome incognito mode

A prática do doxing consiste em pesquisar informações sobre alguém, com o objetivo de disseminar e expôr a pessoa a uma situação de humilhação pública.
Pode ser motivada por várias razões, o que inclui auxiliar agentes da lei, extorsão, vigilantismo etc.

O que os sites adultos dizem sobre o assunto?

Em um questionamento levantado pelo Motherboard Vice, o Pornhub foi o único que retornou resposta.
Segundo o site, a afirmação de que armazenam informações pessoais de visitantes “é completamente falsa e induz perigosamente a erro”.
Eles apontaram que, com 300 milhões de requisições diárias, provavelmente precisariam ter disponíveis 3.600 TiB em espaço, só para armazenar o histórico de navegação dos usuários do site.
Além disto, pesquisar em tal banco de dados, para minerar informações, seria quase impossível e tomaria uma quantidade insana de tempo.
“Os logs dos servidores do Pornhub retém apenas o IP e o user agent (que identifica o nome e a versão do navegador), por um tempo limitado. E jamais rastreia seus usuários.”

Modo privativo ou incógnito não ajudam muito

Como já foi dito, a configuração dos navegadores permite que suas impressões digitais se espalhem por toda a página que você visitou.
Suas informações pessoais são distribuídas entre os parceiros do site.
Sites que usam o Google Analytics, AddThis etc para monitorar o tráfego, recolhem informações sensíveis sobre seus visitantes.

Embora aleguem não recolher informações que permitam identificar pessoalmente de quem os dados foram colhidos, os críticos dizem que podem ser obtidos se cruzados com os dados de um segundo site (o de uma rede social, por exemplo).

Pesquisadores e experts em segurança na Internet concordam que os hábitos dos consumidores de pornô não são, nem de longe, tão privativos como imaginam — ainda que concordemos que não interessa aos negócios que seus clientes se sintam intimidados ou ameaçados.
“É uma preocupação legítima”, de acordo com o expert em privacidade, do Center for Democracy & Technology, Justin Brookman. “O modo privativo dos navegadores não proíbe mecanismos de rastreamento cruzados”.
Em outras palavras, usar este modo e limpar seu histórico no computador não irá impedir que as empresas de pornô rastreiem seu comportamento na web.

Faz parte de qualquer negócio conhecer o gosto do(a) cliente, para oferecer conteúdo e produtos que sejam do seu agrado e que ele(a) esteja mais disposto(a) a comprar.

Para ter uma idéia melhor de quem, exatamente, está obtendo dados dos visitantes de sites de sexo, Brian Merchant usou o app de privacidade Ghostery, que identifica e bloqueia elementos de rastreamento instalado nas páginas web.
A investigação envolveu os 5 sites mais visitados da categoria: XVideos, XHamster, Pornhub, XXNX, and Redtube.
O app revelou que cada um deles tem elementos de rastreamento instalado e, portanto, transmitem dados a terceiros, o que inclui o Google, Tumblr e serviços de anúncios específicos para a área, como o Pornvertising e o DoublePimp.

A URL do site pode denunciar o visitante

Se o site armazena o seu IP e as URLs pelas quais você passou, provavelmente temos um problema — que não é tão fácil de se livrar, como o seu histórico local.
A pesquisa de Merchant mostrou que apenas o Pornhub e o Redtube mascaram a natureza ou categoria do vídeo visto pelo usuário com strings numéricos, como no final do endereço:
http://www.pornhub.com/view_video.php?vwky=phb56376cf55800.
Outros sites, deixam o nome do vídeo exposto na URL, como no seguinte exemplo:
http://xhamster.com/movies/cena_complicada_de_explicar.html.
A URL é uma das peças chave de informação em todas as requisições HTTP;
As strings com caracteres alfanuméricos não expõem as preferências sexuais de ninguém — mas dá para saber que é referente a um site pornô.
Por outro lado, URLs descritivas, mostram claramente o que o visitante gosta de ver.
O Xvideos informa que não armazena o endereço IP do visitante, nem mantém registro de suas atividades.
Segundo o site, votações ou toques dados na página não podem ser relacionados a quem os fez.
Ainda assim, as empresas que analisam os dados e os anunciantes recebem estas informações — e você não tem como saber para onde vão e como serão usadas.

Você é monitorado o tempo todo

Espero que você não fique surpreso com o fato de que somos, sim, monitorados o tempo todo na Internet.
O monitoramento não segue princípios maliciosos, necessariamente.
O que ocorre é que os desenvolvedores web, o que inclui aqueles que desenvolvem sites pornô, têm se tornado excessivamente confiantes e relaxados em relação a ferramentas de terceiros — muitas das quais são “grátis”, para aumentar a funcionalidade e simplificar o compartilhamento por parte dos usuários.
De uma perspectiva técnica, é muito difícil garantir o monitoramento zero dos visitantes, de acordo com Brookman. “Afinal, estamos todos anexados a um endereço IP, que pode, potencialmente ser identificado através dos registros dos provedores de Internet (ISP)”.
Já pensou, como é que o governo e as agências de polícia conseguem chegar até as pessoas que veem e distribuem pornografia infantil, hoje?!
Lembra que a NSA espionava os hábitos de ver pornografia entre homens muçulmanos, com o objetivo de expô-los frente à sua comunidade, como maus religiosos?
Não é apenas “um governo” ou uma grande corporação que pode te expôr. Crackers podem acessar estas informações, da mesma forma como acessam dados de cartões de crédito — e este é o cenário mais próximo da realidade.
Diante disto, o alvo mais provável dos invasores não é exatamente o site de conteúdo pornô.
São os dados guardados pelos sites de análise, monitoramento e anúncios que podem verdadeiramente ajudar a traçar um perfil completo do visitante.
Não é o Pornhub ou o Xvideos.
Estes sites tem interesse em respeitar a privacidade de seus clientes. Se você não confiar neles, você não vai voltar.
O grande “pecado” destes sites, em relação aos seus visitantes, é relaxar e confiar exageradamente nos serviços onde depositam seus dados.

Referências

http://brettpthomas.com/online-porn-could-be-the-next-big-privacy-scandal.html.
http://motherboard.vice.com/read/your-porn-is-watching-you .
https://en.wikipedia.org/wiki/Doxing.

5 mitos sobre a segurança do website da sua empresa

O site White Hat Security tem divulgado dados preocupantes que demonstram aumentos nos ataques a sites de pequenas e médias empresas em relação ao número de ataques aos das grandes.
Um dos motivos para esta mudança de foco, por parte dos invasores, é que as grandes empresas, agora, têm programas profissionais de segurança na Web — o que já torna mais difícil o cracking de seus sites.

Mudaram as vítimas, mas as técnicas de invasão continuam, basicamente, as mesmas.

O propósito deste artigo é questionar e, quem sabe, ajudar a desconstruir 5 dos maiores mitos sobre a segurança na web.

O SSL deixa o meu site mais seguro?

ssl 256 bit lock
O TSL, sigla para Transport Layer Securty e o seu predecessor, SSL (Secure Sockets Layer), ambos são comumente referenciados pela mesma sigla: SSL.
Trata-se de protocolos criptográficos que oferecem um ambiente de comunicações seguro sobre uma rede de computadores.
O principal objetivo do protocolo é garantir privacidade e integridade à transferência de dados entre o servidor da empresa e o navegador do cliente.
Em outras palavras, sua função é dar ao seu cliente a certeza de que o site que ele está vendo é um site genuíno — e não uma impostura, com o objetivo de fornecer falsas informações ou de obter dados de forma fraudulenta de seus visitantes.
O SSL também assegura que o conteúdo da conversação entre o cliente e o site não possa ser lido, caso seja interceptada.
Se um website for crackeado e passar a ter um comportamento nocivo em relação aos visitantes, tudo o que SSL fará é lhes assegurar que o site é legítimo, genuíno — cumprindo a sua função.
Desta forma, o SSL não tem absolutamente qualquer impacto na segurança do website ou no modo como os seus dados e os dados dos usuários são manipulados e guardados.
Por ser um protocolo de transporte de dados, o SSL procura garantir a segurança dos dados, enquanto trafegam entre um ponto e outro, na rede.
Os dados armazenados no cliente ou no servidor, não são protegidos por este protocolo — nem ele foi concebido para protegê-los.
Leia mais sobre o SSL: É hora de encriptar toda a Internet? Isto é possível?

Firewalls protegem de ataques externos?

Firewall by Bruno Pedrozo
O firewall é um programa ou um equipamento que controla o fluxo de dados em uma rede, baseado em um conjunto de regras.
Sua função é estabelecer uma barreira entre uma rede segura e confiável e outra não considerada tão segura ou tão confiável (a Internet, por exemplo).
A principal função de um firewall é criar restrições ou filtros de acesso entre redes e evitar propagação de acessos ou comportamentos nocivos.
Os firewalls, ou “paredes corta-fogo”, não tem a função de proteger o site em si, seus dados ou a forma como são manipulados.
Portanto, todos os problemas e falhas de segurança de seus aplicativos Web (comércio eletrônico, fóruns, email etc) continuam intocados pela presença de um firewall.

Enquanto o SSL foi concebido para dar segurança ao transporte dos dados, os firewalls foram criados para dar segurança à sua passagem entre redes. Em todos os outros momentos, as vulnerabilidades permanecem inalteradas.

A ideia do firewall é a de separar o tráfego nocivo do “benigno” — o que é feito através de Listas de Controle de Acesso, ou ACL (Access Control List).
O ACL determina o que pode trafegar entre as redes e o que deve ser bloqueado.
Uma vez dentro da sua rede, através de algum dos serviços permitidos pelo(s) firewall(s), um visitante malicioso estaria livre para agir.
Isto quer dizer que o mundo inteiro entra no seu site, usa seus serviços de email, contatos, chat, navega por onde quiser etc — e é aí que mora o perigo.

Scanners de vulnerabilidade de rede são capazes de protegê-la?

Um scanner de vulnerabilidades, é um programa projetado para acessar computadores, sistemas computacionais, redes ou aplicações em busca de pontos falhos na segurança.
Há vários tipos de vulnerability scanners. O que os distingue, entre si, é o foco dado a problemas específicos. O ponto em comum é o objetivo de listar as vulnerabilidades encontradas em um ou mais alvos.
No início dos anos 90, o programa SATAN (descontinuado), escrito em Perl, era muito popular entre administradores de sistemas e profissionais de segurança de rede, como software de teste de vulnerabilidades, entre outros.
satan vulnerabilities scan
A lógica é que, após encontrar e resolver todos os problemas de vulnerabilidade o website estará suficientemente seguro na Internet.
Contudo, os scanners de vulnerabilidades não abrangem os aplicativos Web, rodando nos servidores, que podem conter inúmeras falhas de segurança.
Este tipo de software pode ser usado para conduzir testes de reconhecimento da rede — um comportamento típico de um acesso remoto malicioso, com o objetivo de coletar informações ou obter acessos privilegiados e não autorizados à rede.

Os scanners trabalham com seus próprios bancos de dados ou listas, contendo os tipos e os detalhes das vulnerabilidades que devem ser encontradas.
Estas listas são baseadas em falhas já conhecidas.

As fragilidades e pontos de suscetibilidade dos seus aplicativos Web não são conhecidos pelos scanners e, por isto, não serão detectados.
Mesmo tendo um website profundamente comprometido, inseguro e com seus bancos de dados totalmente desprotegidos, você vai receber um sinal verde, informando que tudo está bem.

Os desenvolvedores são sempre culpados pelas falhas?

Infelizmente, não é tão fácil encontrar culpados.
Há muitos fatores, fora do controle dos desenvolvedores, que promovem as fragilidades dos sites.
Parte do código (fechado ou não), escrito por terceiros e inserido nos aplicativos web da sua empresa, pode conter vulnerabilidades.

Com prazos curtos para finalizar projetos, os desenvolvedores raramente têm tempo para checar os meandros das linhas de código que chegam através de atualizações e patches.

Além disto, as falhas de segurança podem surgir da simples combinação entre componentes do sistema — e estamos provavelmente falando de milhares de componentes e quantidades exponenciais de possibilidades de combinação.
É humanamente impossível prever ou prevenir todas as falhas, portanto.

Avaliações anuais das vulnerabilidades são suficientes?

O código dos aplicativos Web estão em constante mudança. Muita coisa sofre alterações no período de um ano.
Cada nova versão do aplicativo ou atualização (mesmo que de segurança), traz novos riscos e potenciais pontos fracos a serem explorados por crackers.
Finalizar projetos estratégicos para os negócios é sempre prioritário e (como já foi dito) os desenvolvedores nunca têm tempo para testar todas as possibilidades de quebra da segurança dos aplicativos.
O ideal é ter práticas sempre em curso para resolver problemas de segurança, à medida em que forem detectados.

Conclusão

Se já sabemos que algumas ações não são eficazes para tornar um website mais seguro.
Há várias outras medidas, contudo, que podem ajudar neste sentido e devem ser consideradas com seriedade:

  1. A segurança do website deve ser reavaliada com maior periodicidade e, principalmente, a cada atualização de cada novo componente — cada nova linha de código é, potencialmente, um novo problema de segurança.
  2. Os scanners de vulnerabilidade podem ser usados em conjunto com um processo manual de testes, personalizado e adaptado aos aplicativos que você tem rodando no site.
  3. Aos desenvolvedores cabe nunca confiar nos dados fornecidos por usuários. Sempre preveja a introdução de códigos maliciosos nos formulários — esta é a principal porta de entrada dos crackers.

Referência: https://www.whitehatsec.com/assets/WP5myths041807.pdf

As vantagens do FLAC sobre o MP3

flac logo black and white

Neste post, vou tentar mostrar alguns bons argumentos a favor do uso do formato digital de áudio FLAC, em substituição ao MP3.
Embora eu escreva sob a perspectiva de um cara que usa Linux, os conceitos abordados servem para qualquer plataforma, seja Android, Mac OS, UNIX, Windows etc.
Assim como a maioria das pessoas, acredito que você já ouviu falar do bom e velho formato MP3.
Ele tem pelo menos 2 características, que considero indesejadas:

  1. Não é um formato aberto e várias organizações reclamam patentes sobre ele.
  2. É um formato lossy, ou seja, que impõe perdas à qualidade do áudio.

flac logo
Formatos lossy, para conseguir uma taxa de compressão que resulte em arquivos de tamanho significantemente reduzidos, precisam “jogar fora” parte das informações do sinal de áudio contido no arquivo original.
Inicialmente, a razão para isto era obter arquivos de música mínimos, que pudessem ser mais facilmente distribuídos ou guardados em mídias com pouco espaço.

Ter espaço para guardar uma discografia ou duas em arquivos digitais, era um problema nos anos 90.
Hoje, não é mais.

Em contraste, há outros formatos de áudio digital que seguem especificações de formatações lossless, que permitem compressão com ou sem perda do sinal original.
Música digital contida em CD ou Compact Disc é um exemplo de formato lossless — no caso dos CDs de áudio e não no dos CDs com arquivos MP3…
Só por curiosidade, vale mencionar que há 2 métodos importantes de codificação digital de música:

  • PCM ou Pulse Code Modulation — que é um método usado para representar digitalmente sinais analógicos sampleados.
    Este é padrão do áudio digital em computadores, Compact Discs, telefonia digital e outras aplicações digitais de áudio.
  • DSM ou Delta-Sigma Modulation é um método de codificação de sinais analógico para digital.
    Até recentemente, a maior parte das músicas digitais tem sido codificada pelo método PCM.
    Contudo a Sony e a Philips introduziram um padrão baseado no DSM, chamado DSD — e o implementaram no SACD (Super Audio Compact Disc), que não se tornou uma mídia popular.

As limitações dos anos 90 não existem mais

Quando o padrão foi lançado, em 1993, os arquivos MP3 eram armazenados pelos usuários em CDs de 650 MiB ou em discos rígidos, com capacidades médias em torno dos 500 MiB.
Quando um arquivo digital era distribuído ou compartilhado pela Internet, a conexão doméstica ocorria através de modems que alcançavam taxas de transferência de até 14.4 Kbps. Os modems de 56 Kbps só chegaram ao mercado no fim daquela década.
Hoje, não temos mais estas limitações para nos preocupar — nem em relação ao espaço de armazenamento, nem na velocidade de download.
Com uma boa conexão e uma boa quantidade de leechers, já é possível baixar uma extensa discografia, em formato FLAC, em menos de 1 hora, via torrent.

Faz cada vez menos sentido optar pelos formatos lossy, se você realmente se preocupa em ouvir um áudio de qualidade.
Ainda que os arquivos FLAC tenham tamanhos consideravelmente maiores, hoje você tem 100 vezes mais espaço em um cartão de memória ou em um pendrive do que era comum na década de 90 — se compararmos um CD (650 MiB) com as atuais mídias de 64 GiB.

As armadilhas das lojas de músicas online

É importante falar das restrições abusivas das lojas online de venda de arquivos digitais de músicas.
Vale a pena, quando for comprar, evitar formatos que incluam o DRM (Digital Rights Management ou gestão de direitos digitais).
Para a maioria das pessoas, o DRM é tido como sendo apenas um mecanismo de prevenção do uso não-autorizado da propriedade intelectual de alguém.
Na verdade, o DRM é usado para forçar os consumidores a usar determinados softwares ou determinadas plataformas de hardware, à revelia de seu direito de escolha.
Em outras palavras, suas músicas podem vir com restrições absurdas que te impeçam de ouvir arquivos legalmente adquiridos aonde você quiser (no carro, no outro smartphone etc.)
Além disto, o mecanismo acaba por representar uma ameaça muito séria à segurança do seu sistema.
Tanto na hora de comprar música online, quanto na hora de ripar CDs, LPs etc. é possível e (desejável) optar pelo formato lossless FLAC.
Entusiastas de música, comumente sequer consideram gastar dinheiro em lojas que não oferecem a opção lossless, ou seja, sem perda da qualidade original da gravação.
Quando oferecem, o meu formato favorito é o FLAC!

E a compatibilidade?

Os smartphones Android atuais reproduzem, com seus apps nativos, os formatos OGG e FLAC, sem problemas.
Além disto, podem transmitir seu áudio via Bluetooth ou NFC para outros aparelhos.
Já o iPhone, no app nativo, prefere usar o formato proprietário ALAC. Você pode baixar outros apps, na lojinha da Apple, contudo, que podem reproduzir seus arquivos no formato FLAC.
FLAC AUDIO RECEIVER

A resolução das músicas

Vamos falar um pouco sobre a resolução dos arquivos de áudio.
As músicas em um CD são apresentadas em uma sampling rate ou frequência de amostragem de 44.1 kHz e com uma extensão de palavra de 16 bits.
Teoricamente, isto significa que o som mais forte, gravado em um CD é 216 ou 65.536 vezes mais alto que o mais delicado.
Em consequência, você terá uma gravação que mostra toda esta extensão dinâmica e que lhe permite ouvir as partes mais tenras do áudio ao aumentar o volume no máximo. Claro que, neste caso, as partes mais altas do áudio poderão causar algum “estrago”.
Ouvidos humanos, em média, podem captar sons até as frequências de 20kHz. Algumas pessoas, conseguem ouvir até 22kHz, contudo.
O padrão do CD, de 44.1kHz, portanto é bem mais do que o suficiente para qualquer pessoa preocupada com a qualidade.
Ainda assim, alguns audiófilos preferem mais do que isto. Vamos entender seus motivos.
De acordo com Chris Hermansen, uma gravação com uma taxa de 96kHz e uma extensão de 24 bits provê muito mais espaço para caber uma variedade muito maior de sons, entre o mais alto e o mais baixo.
Um dos atrativos, possibilitados por esta taxa de amostragem é que os sons mais brandos passam a dispor de mais bits para serem representados, em uma gravação.
Usar taxas de frequência mais altas permite suavizar mais os filtros, que precisam ser aplicados ao sinal analógico, antes dele ser digitalizado.
Para finalizar, outra razão para adquirir arquivos de áudio em alta resolução é que, nestes casos, eles costumam ser tratados com mais carinho pelo pessoal responsável pela gravação, não têm ruídos acidentais e, para ouvidos mais exigentes, preservam a “vida” da música.
Pelos mesmos motivos, ao fazer downloads de seus torrents ou ao ripar suas mídias físicas, opte pelo formato FLAC e tente obter arquivos 24-bit com frequências de 88.2 ou 96Khz.

A história do Windows NT, do Windows 10 e do que vier depois.

O atual Windows 10 é descendente linear do Windows NT, um sistema operacional que ganhou este nome em 1998, mas sua origem remonta a década de 70, como veremos neste artigo.
Sua ascendência remonta ao VMS, da Digital Equipment Corporation (ou DEC) e passa longe do GNU/Linux ou de qualquer UNIX — propositadamente.
Senta, que lá vem história.

O NT era uma nova tecnologia?

Quando a Microsoft lançou a primeira versão do Windows NT, em Abril de 1993, o departamento de marketing e de relações com o público, foram enfáticos em dizer que o ‘NT’ no nome do produto queria dizer New Technology ou Nova Tecnologia.
Obviamente, a empresa queria destacar que seu produto era uma novidade, que incluía todos os recursos que os usuários esperavam de um sistema operacional para estações de trabalho (workstations) e servidores de tamanho médio etc.
A empresa anunciava, ainda, uma nova API, a Win32, e um novo kit de ferramentas de gestão do sistema e usuários. Mas as origens da arquitetura central e de suas implementações, vinham de softwares e conceitos construídos nas 2 décadas anteriores.
Digital DEC logo

A história que antecede o NT — ou de onde ele veio

A história da atual família Windows, começa com o sistema operacional VMS, da Digital Equipment Corporation.
A história do NT está ligada à de David N. Cutler, arquiteto chefe do VMS na DEC e, posteriormente, na Microsoft (em relação ao Windows NT).

Graduado na Michigan’s Livet College, em 1965, Cutler trabalhou para a DuPont, uma empresa química estadunidense.
Embora não tivesse, inicialmente, interesse prioritário voltado para computadores, seu trabalho envolvia rodar simulações em máquinas da Digital.

.
Do seu trabalho, na DuPont, Cutler adquiriu conhecimento em desenvolvimento de softwares e voltou seu interesse para criar sistemas operacionais, em vez de aplicações.
Ele chegou à Digital em 1971 e trabalhou no secular prédio da companhia, transformado a partir de um enorme moinho de algodão, do século 19 —, o “wool mill” (veja a figura).
Foi responsável pelo desenvolvimento de sistemas operacionais para a família de computadores da DEC PDP-11. O RSX-11M foi o primeiro SO em que Cutler incorporou conceitos e princípios que norteariam o desenvolvimento posterior do Windows NT.
O sistema operacional RSX-11M foi criado para controle industrial e fabricação.

Sede da DEC, em Massachusetts.
Clique, para saber mais sobre a sede da Digital (DEC).

A DEC ou Digital Equipment Corporation foi adquirida pela Compaq, em Junho de 1998. Esta última, por sua vez, foi adquirida pela HP ou Hewlet-Packard, em Maio de 2002.
Partes da DEC, notadamente o negócio de compiladores e o prédio de Hudson, no estado de Massachusetts, foram adquiridas pela Intel.

Em 1975, a Digital se deu conta de que seus competidores estavam desenvolvendo processadores de 32-bit e
que esta tecnologia poderia levar embora seus clientes, usuários de computadores de 16-bit.
Gordon Bell, lendária figura da história da computação e, então, vice-presidente de engenharia na Digital, liderou o desenvolvimento de seu processador de 32-bit, nomeado VAX.
À esta época, Cutler já era uma estrela em ascensão na DEC e fazia parte do time de desenvolvimento inicial do VAX, junto com Dick Hustvedt e Peter Lipman.
Esta equipe foi encarregada de liderar o projeto de desenvolvimento do novo sistema operacional para o VAX: o VMS.
Embora o nome de Cutler tenha ganhado mais proeminência no decurso da história, estes 3 nomes são igualmente importantes, cada qual em sua área, no desenvolvimento das bases do Windows NT.
Para a Digital, era prioritário que o projeto mantivesse compatibilidade com os processadores PDP-11 e flexibilidade suficiente para rodar em estações de trabalho mais baratas ou low-end desktop workstations, bem como servidores de nível corporativo ou enterprise-level servers.
A Digital também manteve a compatibilidade com o RSX-11M e projetou o VMS para rodar em máquinas de diferentes tamanhos.
Em 1977, a Digital anunciou o minicomputador VAX-11/780 e o VMS 1.0.
Os primeiros lotes do produto foram enviados em 1978.
Cutler, líder do projeto e um dos principais arquitetos do VMS, continuou a trabalhar nas novas versões do sistema operacional e em seus novos recursos.
Apesar disto, se sentia inquieto na Digital. Chegou a ameaçar deixar a corporação em 1981.
Para manter seu principal desenvolvedor, a DEC lhe concedeu aproximadamente 200 engenheiros de hardware e de software. Isto manteve Cutler no trabalho por mais algum tempo e ele levou sua equipe para Seattle, onde iniciou um centro de desenvolvimento.
Este grupo de elite tinha o objetivo de projetar uma nova arquitetura de CPU e um SO que levaria a Digital à vanguarda dos anos 90.
O projeto de hardware do grupo, foi batizado de Prism, pela Digital. O projeto do sistema operacional, de Mica.

VAX 11/780
VAX 11/780 – Clique para ampliar.

Em 1988, executivos da Digital cancelaram o projeto de Cutler e demitiram vários membros de seu grupo.
Cutler decidiu que era hora de sair da digital. Mas, antes disto, os executivos da Microsoft já havia se inteirado do seu trabalho e entenderam que sua contratação poderia ser uma oportunidade interessante.
À época em que Cutler deixou a Digital, o VMS estava na versão 5.0. Em Junho de 2015, já se encontrava na versão 8.4 (e se chama OpenVMS).
Logo do OpenVMS

Cutler é conhecido por suas críticas ácidas ao sistema operacional UNIX. Mas esta é uma posição pessoal dele e de aficionados NT/VMS.
A Digital tinha o seu próprio UNIX, o ULTRIX (baseado no BSD) e posteriormente desenvolveu o Tru64 UNIX, ou Digital UNIX.
Chamado, inicialmente de DEC OSF/1 AXP, era o sistema operacional nativo dos primeiros PDP.
O Tru64 é baseado no kernel Mach, desenvolvido na Carnegie Mellon University. Outros produtos baseados neste kernel são o NeXTSTEP, MkLinux, Mac OS X e o Apple iOS.
Você conhece algum deles?

Portanto, Cutler foi contratado por Bill Gates em Agosto de 1988.
Uma de suas condições, para ir para Microsoft, foi levar aproximadamente 20 ex-funcionários da Digital para a sua nova equipe, o que incluía vários engenheiros de hardware do projeto Prism.
A MS concordou, prontamente, com esta exigência — um arquiteto de sistemas operacionais da estatura de Cutler, já era um troféu. Trazer seus engenheiros seria ótimo.
À esta época, Gates tinha o sentimento de que o futuro de longo prazo da sua companhia dependia do desenvolvimento de um novo sistema operacional, que pudesse rivalizar com o UNIX.
Internamente, a Microsoft apelidou o projeto do novo SO de OS/2 NT, uma vez que sua intenção era que este novo sistema sucedesse o, já existente, OS/2 — mantendo, contudo, a OS/2 API como sua principal interface.
Mas o sucesso de vendas, obtido pelo Windows 3.0 em 1990, alterou a maneira como a Microsoft pensava a respeito.
Microsoft Windows NT logo
6 semanas após o lançamento do Windows 3.0,a Microsoft renomeou o OS/2 NT para Windows NT e determinou que a API do Win32 (uma evolução da API de 16 bit do Windows 3.0) seria a principal.
Gates decidiu que as prioridades deste projeto seriam buscar a compatibilidade com a API de 16 bit do Windows 3.0 e a habilidade de rodar suas aplicações, sem qualquer modificação.
Adicionalmente, o NT deveria ter suporte a porções do DOS, do OS/2 e as APIs POSIX.
De 1990 até a 1993, quando o NT foi anunciado ao público, a equipe de Cutler estavam em um corrida louca para concluir o novo sistema — o que levou o projeto a crescer a ponto de envolver 200 engenheiros e testadores.
Esta é uma breve história do projeto do Windows NT, que cresceu e, mais tarde, acabou tomando o lugar do Windows 3.0, interrompendo a sua linhagem (que chegou até o Windows ME).

O Windows 2000, lançado em 17 de Fevereiro de 2000, é o sucessor do Windows NT 4.0 e é o último sistema operacional da Microsoft a ostentar a designação “Windows NT”. Durante o seu desenvolvimento, era conhecido como “Windows NT 5.0”.
Ele representa o fim da linha do DOS/Windows 3.0.

Tal como outros sistemas operacionais comerciais, o NT tem 2 modos de execução:

  • o user mode, onde os aplicativos e as APIs do OS/2, DOS e POSIX são executados.
    Estes componentes são “desprivilegiados”, uma vez que o NT controla o hardware sobre o qual eles rodam.
    Em outras palavras, sem a permissão do sistema operacional, estes componentes não podem acessar diretamente o hardware.
    Os componentes do modo de usuário, precisam chamar o kernel quando precisam acessar o hardware ou alocar recursos lógicos ou físicos.
  • o privileged mode, onde é executado o kernel do sistema. Ele pode acessar diretamente a memória e o hardware.
    Consiste de vários subsistemas executivos, responsáveis por gerenciar recursos, o que inclui o gerenciador de processos, o gerenciador de E/S e o gerenciador de memória virtual (VMM – Virtual Memory Manager), o Security Reference Monitor e um microkernel que manipula os agendamentos e as interrupções.

O sistema carrega os drivers dos dispositivos dinamicamente, que são componentes que interfaceiam o NT em relação aos variados periféricos.
A camada de abstração de hardware ou hardware abstraction layer (HAL), esconde os intrincamentos da camada de hardware, composta pela placa-mãe e pela CPU, do NT.
A API nativa do NT é a que está disponível aos aplicativos no modo de usuário, para que estes “conversem” com o kernel.
Esta API não tem sido muito bem documentada — uma vez que é esperado que as aplicações falem Win32, DOS, OS/2, POSIX ou, até mesmo, Win16. São estes ambientes operacionais que interagem com o kernel, em nome da aplicação que o chamou.

A reação da Digital e a evolução do NT e do VMS

Em 28 de Abril, de 1997, a revista Business Week publicou o artigo “Why the Fastest Chip Didn’t Win” (Por que o chip mais rápido não venceu) — no qual contam que os engenheiros da Digital perceberam as semelhanças entre o VMS e o NT e levaram o caso à administração da empresa.
A Digital optou por um acordo com a Microsoft, em detrimento da via judicial.
No verão de 1995, a Digital anunciou a chegada do recurso Affinity para OpenVMS , um programa que requeria treinamento dos técnicos em NT da Digital.
O acordo com a Microsoft previa que esta daria o treinamento, ajudaria a promover o NT e o OpenVMS como 2 peças-chave de uma solução de rede cliente/servidor e a promessa de manter suporte ao NT nos processadores Alpha da Digital.
Além disto, estima-se que a Microsoft pagou entre 65 e 100 milhões de dólares à Digital, àquela época (atualizados para 2015, estes valores equivaleriam a 77 e 119 milhões de dólares).

Em sistemas Alpha e I64, mecanismos affinity e capabilities permitem que o agendamento da CPU seja adaptado a configurações mais amplas, com o controle de distribuição de processos e threads.
Estes mecanismos dão aos usuários oportunidades de realizar as seguintes tarefas:

  1. criar e modificar um conjunto de possibilidades de processos definido pelo usuário
  2. criar e modificar um conjunto de possibilidades relacionadas à CPU, definido pelo usuário
  3. permitir que um processo aplique o mecanismo affinity a um subconjunto de uma CPU ativa a uma configuração de multiprocessamento simétrico ou symmetric multiprocessing (SMP)

Para finalizar, apesar das campanhas de marketing propalarem a novidade total, seu projeto e sua arquitetura vieram de outro sistema operacional e você pode encontrar inúmeros textos, na Internet que demonstram as grandes similaridades entre o VMS (cujo desenvolvimento continua ativo) e o NT.
Durante os anos 90, ambas as empresas trocaram e adicionaram recursos entre seus sistemas operacionais.
Recursos, como suporte a clustering nativo (1984) e APIs para gestão de memória 64 bit, foram adicionados primeiro ao VMS e chegaram depois ao NT.
Reciprocamente, o VMS trouxe do NT os recursos de kernel-mode threads, logging de eventos e o (tenebroso, na opinião de alguns) registro do sistema.

McAffee antivirus para anunciado para Windows NT
Clique, para ver detalhes.

A história continua.
Ambos os sistemas operacionais continuam em desenvolvimento — embora o Windows (já na versão 10) esteja mais ativo e conte com uma empresa mais sólida e uma estratégia de marketing que todos conhecemos.
O VMS ou OpenVMS mudou de mãos algumas vezes, mas continua de pé e sendo usado em setores que não podem prescindir dele.

Referências:

http://www.sigcis.org/files/Goodwin_paper.pdf
https://books.google.com.br/books?id=TDgEAAAAMBAJ&pg=PA41&lpg=PA41&dq=Affinity+for+OpenVMS&source=bl&ots=aY18A8xwwq&sig=TyfCqJCFFhzLVcbqPgFCuuFbcM8&hl=en&sa=X&ved=0CEoQ6AEwCGoVChMIgMHKkLrOyAIVhY6QCh3PtwZj#v=onepage&q=Affinity%20for%20OpenVMS&f=false
http://h71000.www7.hp.com/doc/82final/5841/5841pro_012.html
http://windowsitpro.com/windows-client/windows-nt-and-vms-rest-story

Como criar e manipular contêineres no Docker

Há várias formas de iniciar o uso do Docker e fazer uso dos containers. Neste texto, vou me concentrar nos comandos de execução — a começar por alguns comandos de verificação do estado da sua instalação.
Para saber se o Docker foi instalado corretamente, use o parâmetro ‘info’, na linha de comando:

docker info

O comando deve retornar algo semelhante ao que se vê abaixo:

Containers: 48
Images: 18
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 114
Execution Driver: native-0.2
Kernel Version: 3.13.0-63-generic
WARNING: No swap limit support

A saída do comando vai depender da configuração atual do seu sistema e do Docker.

O Docker trabalha sob a perspectiva cliente/servidor.
O mesmo binário Docker é usado tanto pelo servidor quanto pelos comandos do cliente.
Desta forma, quando executamos os comandos do lado do cliente, estes são repassados ao daemon Docker, em execução no seu sistema.

Para rodar um contêiner, use o comando ‘run’ (do próprio Docker).
Note que, nos exemplos deste artigo, o docker é usado pelo usuário normal — sem privilégios administrativos.
Na configuração padrão do aplicativo, é necessário rodá-lo precedido do sudo ou como root.
Leia mais sobre como configurar o docker para rodar com os privilégios de usuário comum, aqui.
O comando que segue, vai colocar a imagem do Ubuntu (ou a tag mais atual dele) para rodar como um contêiner, com uma shell bash dentro:

docker run -i -t ubuntu /bin/bash

Veja o que mais foi feito acima:

  • -i pede para que a entrada ou input permaneça aberta, para receber instruções
  • -t pede ao contêiner para atribuir-lhe um terminal
  • /bin/bash é a opção de programa terminal escolhida

Se vocẽ abrir uma nova janela do console (Ctrl + Alt + T, no Ubuntu), agora, vai poder verificar que o contêiner está rodando. Use o comando ‘ps’ do Docker, para isto:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
bdaaca495be7        ubuntu:latest       /bin/bash           10 seconds ago      Up 10 seconds                           jolly_meitner

O Docker é um excelente construtor de blocos para sistemas distribuídos e automatizados — o que inclui aplicações web de larga escala, clusters de bancos de dados, sistemas de distribuição/desenvolvimento continuado, PaaS privado, arquiteturas orientadas a serviço etc.
(Manual do Docker)

Os contêineres podem ser identificados e chamados pelos seus IDs. Tendo vários no seu sistema, cada contêiner terá sua própria identificação.
Se você acrescentar a opção ‘-a’, o Docker irá mostrar mais — o que inclui os contêineres que já estão parados no sistema.
dokcer-ps--a
Note as colunas das extremidades: à esquerda fica a ID de cada contêiner. À direita, o seu nome.
Você pode se referir a um contêiner, pela sua ID ou, se preferir, pelo seu nome.
O Docker “batiza” todos os novos contêineres criados sem nome. Ele cria/escolhe nomes aleatórios — jolly_meitner, goofy_hopper, stoic_torvalds etc. (Veja a figura, acima).

Como nomear contêineres Docker

Como já mencionei, é possível (e opcional) dar um nome a cada novo contêiner criado no Docker.
Caso o usuário não o faça, o Docker cria um nome aleatório e o atribui ao novo contêiner, no momento de sua criação.
Mas você pode (e deve) dar nomes que tenham mais significado para você.
Use o parâmetro ‘–name’ para escolher e atribuir um nome ao seu contêiner:

docker run --name primeiro_conteiner -i -t ubuntu /bin/bash

De dentro de um contêiner, use o comando ‘exit’ para terminá-lo e sair.

Opções para parar e iniciar um contêiner Docker

Você pode iniciar e parar um contêiner, com o uso dos comandos ‘start’ e ‘stop’, seguido da ID ou do nome do contêiner que você deseja atingir:

docker start 697f662350ab
697f662350ab
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
697f662350ab        ubuntu:latest       /bin/bash           7 minutes ago       Up 6 seconds                            primeiro_conteiner   
bdaaca495be7        ubuntu:latest       /bin/bash           About an hour ago   Up About an hour                        jolly_meitner        
docker stop primeiro_conteiner
primeiro_conteiner
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
bdaaca495be7        ubuntu:latest       /bin/bash           About an hour ago   Up About an hour                        jolly_meitner

docker-start-stop
Como você pode ver, nos exemplos acima (tanto no texto quanto na imagem), é possível se referir tanto ao ID quanto ao nome de um contêiner.
Ao aplicar os exemplos, você deve ter percebido que, embora o contêiner volte a rodar, você não está “dentro dele”.
Para poder assumir o controle da linha de comando (shell) dentro de um contêiner, use o comando ‘attach’ — seguido do seu ID ou do seu nome:

docker attach bdaaca495be7

Como rodar um contêiner em modo daemon

Além de usar estes contêineres interativos, que vimos até agora, podemos rodá-los nos bastidores do sistema ou daemonized.
Este modo é muito útil para executar tarefas (aplicações ou serviços) de longa duração em um contêiner.
Na verdade esta é a maneira mais comum de se executar Docker containers.
Veja um exemplo:

docker run --name primeiro_daemon -d ubuntu /bin/sh -c "while true; do echo ola mundo; sleep 1; done"
65f05aeced672283ba639aa240268d23fdaa7713ca0beb66da3f39155224502c

Aqui, usamos o comando ‘docker run’, em conjunto com o parâmetro ‘-d’ para enviar o contêiner pros bastidores ou background.
Dentro dele, escrevemos um pequeno script em loop, como comando.
O script envia a frase “ola mundo” uma vez a cada segundo, até ser interrompido — parando o contêiner ou o processo.
Com esta combinação de opções e parâmetros, é possível ver que o Docker não te coloca na shell de comandos. Ele apenas retorna a ID do contêiner o prompt linha de comando do seu terminal — enquanto o script continua a ser executado dentro do contêiner.
Como você já sabe, é possível acompanhar a execução dele, através do comando docker ps:

docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
65f05aeced67        debian:latest       /bin/sh -c 'while tr   29 minutes ago      Up 29 minutes                           primeiro_daemon     
bdaaca495be7        ubuntu:latest       /bin/bash              2 hours ago         Up 43 minutes                           jolly_meitner

Como ver o que acontece dentro de um contêiner

É possível, a qualquer momento, obter informações sobre processos que estejam em execução dentro de contêineres.
Neste momento, há um com um laço while em execução.
Você pode usar o comando ‘logs’ do Docker para obter informações sobre o andamento da execução dos processos:

docker logs primeiro_daemon
ola mundo
ola mundo
ola mundo

...

O comando ‘logs’ vai mostrar o resultado do script em execução no contêiner.
Se você deseja monitorar os resultados de alguma tarefa, acrescente a opção ‘-f’ — e observe os resultados como se estivesse executando o tails:

docker logs -f primeiro_daemon

Acrescente a opção ‘-t’ para exibir o timestamp ao lado de cada resultado:

docker logs -tf primeiro_daemon
[Sep 14 17:40:59.675] ola mundo
[Sep 14 17:41:00.676] ola mundo
[Sep 14 17:41:01.677] ola mundo
[Sep 14 17:41:02.678] ola mundo
[Sep 14 17:41:03.680] ola mundo
[Sep 14 17:41:04.681] ola mundo
[Sep 14 17:41:05.683] ola mundo
[Sep 14 17:41:06.684] ola mundo
[Sep 14 17:41:07.686] ola mundo
[Sep 14 17:41:08.688] ola mundo

Para concluir o monitoramento, pressione Ctrl + C.
Uma outra forma de observar o trabalho dentro do contêiner é rodando o comando ‘top’ com o Docker:

docker top primeiro_daemon
[/false]

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                13434               2306                0                   14:37               ?                   00:00:00            /bin/sh -c while true; do echo ola mundo; sleep 1; done
root                16200               13434               0                   15:13               ?                   00:00:00            sleep 1

Também é possível ver estatísticas de funcionamento dos processos, através do comando ‘stats’:

sudo docker stats primeiro_daemon
CONTAINER           CPU %               MEM USAGE/LIMIT     MEM %               NET I/O
primeiro_daemon     0.12%               557.1 kB/8.059 GB   0.01%               10.47 kB/648 B

Para sair do painel de estatísticas, use a combinação Ctrl + C.

Como iniciar outro processo dentro de um contêiner existente

Um contêiner preexistente e com processos em andamento, pode aceitar novas tarefas e/ou novos processos, sem problemas — esta também é uma situação muito comum.
O comando ‘exec’ do Docker é que permite acrescentar tarefas aos contêineres.
Estas tarefas podem ser de 2 tipos: de background ou interativas.
As primeiras são inseridas para execução no contêiner e não tem interação depois disto.
As tarefas interativas são interessantes, pois permitem abrir uma shell dentro do contêiner.
Veja, no exemplo, como executar um comando em segundo plano dentro de um contêiner:

docker exec -d primeiro_daemon touch /etc/new_config_file

Aqui, o ‘-d’ sinaliza um processo rodando em segundo plano.
Em seguida, especificamos o nome do contêiner que queremos atingir e o comando que irá ser executado dentro dele.
Neste caso, o comando touch cria um arquivo vazio ‘new_config_file’ dentro do diretório ‘/etc’ dentro do contêiner ‘primeiro_daemon’.
Desta forma é que podemos usar o comando ‘exec’ do Docker para rodar comandos de manutenção, aplicativos de monitoramento, gerenciar tarefas etc. tudo dentro dos contêineres.
Com este método, é possível alterar a execução de um script on the fly.
Se você deseja obter acesso a uma shell dentro do contêiner, use as opções ‘-t’ e ‘-i’ (que já foram vistas anteriormente).
Com estas opções, é possível criar um terminal TTY e capturar o STDIN (standard input) dos processos em execução.
Além disto, é preciso indicar qual o contêiner e qual programa de shell a ser usado. Veja o exemplo:

docker exec -t -i primeiro_daemon /bin/bash

root@a3f74bdffacc:/# echo "Olha mae! Estou dentro do container!"

Olha mae! Estou dentro do container!

root@a3f74bdffacc:/# exit

Como você pode ver, o comando acima, criou uma nova sessão bash — dentro da qual é possível dar comandos dentro do contêiner.
No nosso exemplo, não esqueça, existe um processo rodando em background, ainda, dentro do ‘primeiro_daemon’.

Como reiniciar automaticamente um contêiner

Se um contêiner parar ou for finalizado em consequência de um erro, é possível configurar o Docker para pô-lo pra rodar de novo automaticamente — para o caso de você não “estar por perto”, isto pode ser útil.
Podemos sinalizar com ‘–restart’, quando queremos que haja um reinício e até quantas vezes tentar.
A flag ‘–restart’ aceita valores, como ‘always’ (sempre) e ‘on-failure’ (em caso de falhas).
Veja um exemplo:

docker run --restart=on-failure:3 --name segundo_daemon -d ubuntu /bin/sh -c "while true; do echo ola mundo; sleep 1; done"
4f505f038e885ef24f5b63474f28778f75d22098a4597d19dd92ff9cf1bb20d4

Neste exemplo, portanto, a configuração --restart=on-failure:3 pede para que ele tente retomar suas atividades, em caso de falha, (failure) até 3 vezes.

Como obter mais informações sobre um contêiner

O comando ‘inspect’ pode oferecer mais dados sobre um determinado contêiner.
Experimente:

docker inspect segundo_daemon

A saída deste comando pode ser muito extensa.
Para filtrar apenas a informação desejada, use o comando grep ou a opção ‘–format’ do docker:

docker inspect segundo_daemon | grep -A5 -i "state"
    "State": {
        "Running": true,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,

A opção ‘-A5’, do comando grep, diz para mostrar mais 5 linhas além daquela que contém a string ‘state’.
O que se vê é que o processo está rodando, não está pausado, não foi reiniciado, não foi alvo de um kill, não está morto…
Com a opção ‘–format’, é possível obter uma resposta mais objetiva para “o contêiner está em execução?”:

docker inspect --format='{{ .State.Running }}' segundo_daemon

true

Se quiser obter informações sobre as configurações de rede, use o template .NetworkSettings.IPAddress. No exemplo abaixo, mostro como obter informações de 2 contêineres (ou mais. Basta enfileirar os nomes):

docker inspect --format='{{ .NetworkSettings.IPAddress }}' segundo_daemon primeiro_daemon
172.17.0.2
172.17.0.3

Experimente explorar o diretório /var/lib/docker, onde se encontram imagens e configurações variadas de contêineres.
Já, os seus contêineres (que você criou) podem ser encontrados em /var/lib/docker/containers.

Como remover um contêiner

Ao terminar de usar um contêiner, é possível usar o Docker command ‘rm’ (remove).
É o mesmo comando que usamos para remover arquivos no UNIX ou no GNU/Linux.
Nas versões atuais do Docker, é possível remover um contêiner, ainda em execução, com o uso da opção ‘-f’ (force):

docker rm -f primeiro_daemon segundo_daemon
primeiro_daemon
segundo_daemon

Se quiser conferir a remoção, use o comando ‘ps’:

docker ps -a

No meu caso, não há mais nenhum contêiner rodando:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Este artigo abordou o uso básico do Docker, com comandos para iniciar instâncias do aplicativo e como manipular processos internamente. Vimos, ainda, como obter informações sobre os recipientes e, finalmente, como removê-los e onde encontrar mais imagens e configurações prontas, que podem ajudar a aprender mais sobre o assunto.
Há outros artigos sobre o uso do Docker neste site. Para encontrá-los, experimente usar a caixa de pesquisa.

Referências:
Google Books.
Slashroot.