Mostrando postagens com marcador Linux. Mostrar todas as postagens
Mostrando postagens com marcador Linux. Mostrar todas as postagens

terça-feira, 9 de julho de 2019

Linux ultrapassa Windows Server no Microsoft Azure


Foto: Shutterstock

Quando a Microsoft anunciou o lançamento de distribuições Linux em seu serviço de nuvem, poucas pessoas levaram o assunto a sério. Afinal, em 2012 o CEO da companhia era Steve Ballmer, que chegou a afirmar que considerava o Linux "um câncer".
Mas o investimento da empresa de Redmond deu certo. Isso porque, de acordo com informações do site especializado ZDNet, recentemente um desenvolvedor da Microsoft, chamado Sasha Levin, revelou que o uso do Linux ultrapassou o Windows Server no Azure.
O processo de crescimento do pinguim na plataforma da Microsoft se deu aos poucos, conforme aponta o próprio ZD Net. Em 2015, Mark Russinovich, CTO do Azure, afirmou que 25% das instâncias rodavam Linux. Em seguida, em 2017, a Microsoft anunciou que o Linux já era responsável pela participação de 40% nas máquinas virtuais. No ano seguinte, o número subiu para a metade, e agora Levin afirmou que o uso do Linux já é maior que o Windows no serviço de nuvem.
Segundo Scott Guthrie, vice-presidente-executivo de nuvem e grupo corporativo da companhia, os usuários estão migrando para sistemas operacionais de código aberto há cerca de uma década. "Tudo começou há mais de 10 anos, quando criamos o ASP.NET de código aberto. Reconhecemos que o código aberto é algo de que todo desenvolvedor pode se beneficiar. Não é legal, é essencial. Não é apenas código, é comunidade."
Sem contar o Sphere OS, da própria Microsoft, atualmente há oito distribuições Linux disponíveis no Azure: Red Hat, SUSE, openSUSE, Ubuntu, CentOS, Debian, CoreOS e Oracle Linux.

quarta-feira, 6 de fevereiro de 2019

New cryptocurrency malware SpeakUp hits Linux & Mac devices

Por Waqas em 04/02/2019 no site HackHead


Resultado de imagem para malware linux


The IT security researchers at Check Point have identified a new malware called SpeakUp targeting Linux and macOS – The new findings prove that there has been a surge in malware attacks against Linux and Apple devices.

SpeakUp is a new backdoor Trojan that is being distributed by cybercriminals through a malicious new campaign designed to target servers running six different Linux versions and macOS systems. The malware manages to target multiple previously identified security flaws and can evade antivirus programseffectively.
Check Point researchers noted that the hackers are utilizing the exploit for ThinkPHP (CVE-2018-20062) remote code execution flaw for infecting Linux and macOS servers. Hackers often prefer backdoor Trojans because this malware can allow them easy access to compromised devices and also let them control the infected devices by establishing a connection with a C&C server. Usually, such malware help attackers in running campaigns to gain full control of the machine.
While the exact identity of the threat actor behind this new attack is still unconfirmed, Check Point Researchers were able to correlate SpeakUp’s author with malware developer under the name of Zettabit. Although SpeakUp is implemented differently, it has a lot in common with Zettabit’s craftsmanship, said researchers in their blog post.
According to researchers, SpeakUp exploits ThinkPHP, which is a framework that almost 90% of the leading 1M domains in America use. Furthermore, it can infect Mac machines without getting detected, which is a phenomenal capability. At the moment, SpeakUp is mainly targeting devices in East Asia, Latin America, and mostly AWS hosted devices are its prime victims. Approx. 70,000 servers across the globe are targeted in this campaign.
New cryptocurrency malware SpeakUp hits Linux & Mac devices
Check Point researchers, who identified the campaign around three weeks back, assessed that exploiting the ThinkPHP vulnerability is only the initial attack vector that helps the Trojan infect the device. Later, the hackers modify the local cron utility to obtain boot persistence, execute files that are downloaded from a remote C&C server, run shell commands, and uninstall or upgrade itself.

Moreover, SpeakUp has a built-in Python script that lets the malware to spread alongside the local network. The Python script scans local networks to locate open ports as well as brute-forces systems that it identifies in the nearest vicinity. This is performed using a list of pre-defined login credentials.
It also uses seven different exploits including remote command execution and Oracle WebLogic Server component of Oracle Fusion Middleware, etc., to control unpatched systems. After infecting new machines the malware deploys itself on the systems.
Apparently, the attackers are using SpeakUp to deploy Monero cryptocurrency miners on infected devices and so far, the group has managed to make 107 Monero coins (around $4,500). Although currently, the attackers are exploiting the Chinese PHP framework it is also possible that they switch to other exploits to further expand the scope of their backdoor and the range of targets. However, they haven’t yet targeted anything other than ThinkPHP framework. 

quinta-feira, 31 de agosto de 2017

Instalando o básico para programar em Java no Ubuntu e Linux Mint

Dionatan Simioni
Em 29/08/2017 no Blog Diolinux

Quando se está aprendendo uma linguagem nova de programação podem surgir muitas dúvidas, uma delas é: quais softwares eu devo instalar na meu computador? Aqui vamos apresentar a maneira mais simples (embora bastante completa e instalar o necessário para programar em Java) no Ubuntu. Antes que eu esqueça: quando eu falar em Java e JDK (mais a frente eu explico o que é), estou me referindo ao mesmo software.

Como montar um ambiente de programação Java no Ubuntu






Este material foi co-escrito com o nosso leitor Tiago Funk. Este conteúdo destina-se a programadores que utilizam Ubuntu, Linux Mint ou derivados.


Instalação do JDK


O JDK (Java Development Kit) é um software permite que aquilo que você programa em Java, que basicamente é apenas texto, seja traduzindo em linguagem de máquina e depois executado (não vou entrar em detalhes, mas o Java é executado dentro de uma máquina virtual). Além disso, ele contém bibliotecas (código já existentes da linguagem), assim você podem também utilizá-las e vários outros recursos importantes que ajudam a programar.


Para trabalhar com JDK no Ubuntu e no Linux Mint nós vamos instalá-lo via PPA para manter o Java sempre atualizado, porém, antes vamos verificar se você já não tem o programa instalado.

Abra o terminal e digite:

java -version

Com Java Instalado
Com Java instalado

Sem Java Instalado
Na imagem de cima o Java está instalado (versão 1.8 ou versão 8, como queiram chamar) e na de baixo ele não está instalado.
Assim, se o Java estiver instalado, você pode pular essa parte do tutorial, indo direto para as IDEs.
Para instalar o Java basta digitar os seguintes comandos para começar a instalação:

sudo add-apt-repository ppa:webupd8team/java

Repare que quando o PPA for adicionado, aparecerá uma mensagem dizendo que já existe a versão 9 do Java, mas esta em fase de desenvolvimento, ou seja, não é aconselhável a sua instalação para produção estável.

Aqui vamos instalar a versão 8, a versão mais recente e estável.
Voltando aos comandos:

sudo apt-get update
sudo apt-get install oracle-java8-installer


O ultimo comando baixa um scrip que automatizará a instalação do Java, por isso ele é tão pequeno (menos de 100 Kb), mas ele vai baixar e instalar o JDK que é bem maior, esse processo pode demorar bastante dependendo da velocidade da internet que você tem. 

Depois de instalado você teoricamente teria o necessário para começar a programar em Java, basta escrever o código no bloco de notas e compilar pelo terminal cada arquivo, simples não?  Simples sim, prático? Nem tanto. Por isso escolher uma IDE é um passo fundamental, a IDE é um software que escolhido com calma pode adiantar muita coisa que antes era feita manualmente.

Escolhendo uma IDE


Existe duas opções iniciais mais populares para quem programa em Java, o Eclipse e o Netbeans. Obviamente existem outras, mas isso fica a critério de programadores mais experientes usá-las e testá-las. Vou mostrar como instalá-las por possuir experiência com ambas e são os softwares oficiais da mesma empresa que cuida da linguagem Java. 

Eu particularmente recomendo o Eclipse para quem estiver começando a programar, por ser um pouco mas flexível, e na medida do tempo, com mais experiencia, utilize o Netbeans, é interessante saber utilizar ambas, cada uma traz seus pontos fortes e fracos, mas se você está começando a programar não se preocupe com eles.


Instalando o Eclipse


Acesse o site oficial e baixe a versão mais nova. (atualmente é o Eclipse Oxygen). Será feito o download de um arquivo de extensão tar.gz, descompacte-o e dentro da pasta que você acabou de descompactar execute o arquivo eclipse-inst.

Instalando o Eclipse

Será aberta uma janela de instalação, selecione Java ou Java EE (mais completa) quando for solicitado. Depois é só esperar a instalação pacientemente, ela demora um pouco.

Ao terminar a instalação será criado um uma pasta chamada 'eclipse' (tudo minúsculo) na sua pasta de usuário. Dentro desta pasta, entre no diretório eclipse-(nomeVersãoEclipse), depois entre na pasta "eclipse" novamente, e execute o "eclipse" (pode colar na área de trabalho para ser mais rápido o acesso).

ATENÇÂO: Esses passos foram feitos com o eclipse oxygen, versões anteriores e posteriores podem ser diferentes (mas nada que o Youtube e o Google não resolvam).

Binário do Eclipse

Ao iniciar o Eclipse será necessário indicar a pasta do WorkSpace, ou seja, aonde vão ficar guardados os projetos que você for criar, pode deixar o padrão ou escolher uma nova pasta (é legal você criar uma pasta apenas para guardá-los).

Workspace do Eclipse

Na barra de cima de interface, clique no primeiro item, depois escolha “Java”, “Java project”, depois dê um nome para o projeto. Vamos chamá-lo de “OlaMundo” (sem acentos ou caracteres especiais pois podem ocorrer erros).

Eclipse

No lado esquerdo, vai aparecer o seu projeto, clique duas vezes nele, vai se abrir uma pasta “src”, clique com o botão direito nela, depois “new” e “class”, e finalmente, dê um nome para esse arquivo.
Vai-se abrir o novo arquivo, digite o código da imagem que vem a seguir e clique no ícone verde para executar, logo abaixo vai surgir a mensagem “olá mundo”.

Instalação do NetBeans


Atenção: o Netbeans é um software que consome bastante recursos do computador, por conta disso é aconselhável ter um processador da geração mais nova e ter pelo menos 4 Gb de RAM, não que você não consiga utilizar o Netbeans em máquinas que não possuam esse hardware, mas compromete bastante (experiência própria). 


Na página você pode ver várias opções:
Download NetBeans

Note que é possível programar em várias linguagens no NetBeans, mas isso é história para outro dia. Escolha a segunda opção, a versão completa para o Java. Paciência para o download de quase 200 MB.

Com o download finalizado, vá na pasta que foi feito o download pelo terminal e digite:

sudo sh NomedoArquivo.sh

Quando abrir a janela apenas clique “próximo”, em todas as janelas, além de aceitar o termo de utilização, pode deixar tudo no padrão.Não se assuste com a demora para a instalação, isso é algo comum, além disso, não cancele a instalação, senão a instalação ficara comprometida e arrumar tudo depois vai dar muita dor de cabeça.

Para abrir o Netbeans, basta pesquisar no seu computador (Aperte a tecla do Windows) e abra-o, não assuste se demorar para abrir o programa, é bem comum também.

Para abrir um projeto e executá-lo é bem parecido com o que foi feito no Eclipse. 

Clique no segundo ícone e escolhe “Java” e “aplicação Java”, depois atribua um nome para o projeto. Repare que o Netbeans já criou o arquivo e muito do código para fazermos o teste.

Basta deixar igual à imagem e clicar na flecha verde.

NetBeans

Antes de terminarmos tenho mais duas coisas para comentar:

Primeira: Eclipse e Netbeans consomem muitos recursos da máquina, então não se assustem se eles demorem para executar uma ação.

Segunda: Se ficaram com dúvida de com utilizá-los, busquem, pesquisem, vejam tutoriais. Vai ser importante para quem está começando a programar aprender a pesquisar e felizmente existem muita documentação sobre estes softwares na internet.

That’s all folks, por hoje seria apenas isto. Até mais.

Nota do blog: Se você quiser participar do blog também e enviar uma matéria para que ela seja publicada aqui, entre em contato.

segunda-feira, 7 de agosto de 2017

Hacker Sentenced to 46 Months in Prison for Spreading Linux Malware

Por Wang Wei
Em 03/08/2017 no site The Hacker News


hacker-jailed-linux-malware
A Russian man accused of infecting tens of thousands of computer servers worldwide to generate millions in fraudulent payments has been imprisoned for 46 months (nearly four years) in a United States' federal prison.

41-year-old Maxim Senakh, of Velikii Novgorod, was arrested by Finnish police in August 2015 for his role in the development and maintenance of the infamous Linux botnet called Ebury that siphoned millions of dollars from victims worldwide.

Senakh was extradited to the United States in February 2016 to face charges and pleaded guilty in late Marchthis year after admitting of creating a massive Ebury botnet and personally being profited from the scheme.

First spotted in 2011, Ebury is an SSH backdoor Trojan for Linux and Unix-style operating systems, such as FreeBSD or Solaris, which gives attackers full shell control of an infected machine remotely even if the password for affected user account is changed regularly.

Senakh and his associates used the malware to build an Ebury botnet network of thousands of compromised Linux systems, which had the capacity of sending over 35 million spam messages and redirecting more than 500,000 online visitors to exploit kits every day.
ebury-linux-malware-backdoor
Senakh fraudulently generated millions of dollars in revenue running spam campaigns and committing advertising click frauds.
"Working within a massive criminal enterprise, Maxim Senakh helped create a sophisticated infrastructure that victimized thousands of Internet users across the world," said Acting U.S. Attorney Brooker. 
"As society becomes more reliant on computers, cyber criminals like Senakh pose a serious threat. This Office, along with our law enforcement partners, is committed to detecting and prosecuting cyber criminals no matter where they reside."
Ebury first came into headlines in 2011 after Donald Ryan Austin, 27, of El Portal, Florida, installed the Trojan on multiple servers owned by kernel.org and the Linux Foundation, which maintain and distribute the Linux operating system kernel.

Austin, with no connection to the Ebury criminal gang, was arrested in September last year and was charged with 4 counts of intentional transmission causing damage to a protected computer.
Linux-malware-backdoor
Senakh was facing up to a combined 30 years in prison, after pleading guilty to conspiracy to commit wire fraud as well as violate the Computer Fraud and Abuse Act.

However, a US judge on Thursday sentenced Senakh to 46 months in prison, the Department of Justice announced on Thursday. The case was investigated by the Federal Bureau of Investigation's field office in Minneapolis.

Senakh will be deported back to Russia following his release from the U.S. prison.

sexta-feira, 4 de agosto de 2017

Red Hat Enterprise Linux 7.4 já está disponível para download

Por Edivaldo
Em 02/08/2017 no Blog do Edivaldo

A Red Hat anunciou o lançamento do Red Hat Enterprise Linux 7.4 (RHEL). Conheça mais um pouco sobre ela e descubra onde baixar a distro.
O Red Hat Enterprise Linux (RHEL) é uma distribuição Linux desenvolvida pela Red Hat e voltada para o mercado comercial. O sistema é lançado em edições de servidor para arquiteturas x86, x86_64, Itanium, PowerPC e IBM System z e edições de desktop para processadores x86 e x86_64.
Red Hat Enterprise Linux 7.4 já está disponível para download

Todo o suporte e treinamento oficial da Red Hat e o Programa de Certificação Red Hat centram-se em torno da plataforma Red Hat Enterprise Linux.
A Red Hat usa regras de marcas estritas para restringir a redistribuição gratuita de suas versões oficialmente suportadas do Red Hat Enterprise Linux, mas ainda fornece livremente seu código-fonte. Os derivativos de terceiros podem ser construídos e redistribuídos removendo componentes não livres.

Novidades do Red Hat Enterprise Linux 7.4

Esta versão concentra-se fortemente na atenuação das atuais ameaças à infraestrutura de TI, recursos novos e aprimorados.
O Red Hat Enterprise Linux 7.4 oferece novos recursos de automação projetados para limitar a complexidade de TI ao mesmo tempo em que aumentam a segurança e o desempenho da carga de trabalho.
Isso fornece um backbone do sistema operacional poderoso e flexível para atender as necessidades de TI da empresa em servidores físicos, máquinas virtuais e pegadas híbridas, públicas e multi-nuvem.
O RHEL 7.4 apresenta uma visualização tecnológica de “Funções do sistema” como uma interface de gerenciamento comum com suporte Ansible, o USB Guard como meio de proporcionar maior controle e evitar o vazamento/injeção de dados, maior segurança de contêineres, várias melhorias de desempenho e outras atualizações.
Alguns dos trabalhos de desempenho observados incluem suporte NVMe Over Fabric e aprimoramentos para RHEL em nuvens publicas.

sexta-feira, 21 de julho de 2017

Critical Code Injection Flaw In Gnome File Manager Leaves Linux Users Open to Hacking

Swati Khandelwal
Em 19/07/2017 no site The Hacker News



linux-gnome-vulnerability
A security researcher has discovered a code injection vulnerability in the thumbnail handler component of GNOME Files file manager that could allow hackers to execute malicious code on targeted Linux machines.

Dubbed Bad Taste, the vulnerability (CVE-2017-11421) was discovered by German researcher Nils Dagsson Moskopp, who also released proof-of-concept code on his blog to demonstrate the vulnerability.

The code injection vulnerability resides in "gnome-exe-thumbnailer" — a tool to generate thumbnails from Windows executable files (.exe/.msi/.dll/.lnk) for GNOME, which requires users to have Wine application installed on their systems to open it.

Those who are unaware, Wine is a free and open-source software that allows Windows applications to run on the Linux operating system.

Moskopp discovered that while navigating to a directory containing the .msi file, GNOME Files takes the filename as an executable input and run it in order to create an image thumbnail.

For successful exploitation of the vulnerability, an attacker can send a crafted Windows installer (MSI) file with malicious VBScript code in its filename, which if downloaded on a vulnerable system would compromise the machine without further user interaction.
"Instead of parsing an MSI file to get its version number, this code creates a script containing the filename for which a thumbnail should be shown and executes that using Wine," Moskopp explains while demonstrating his PoC. 
"The script is constructed using a template, which makes it possible to embed VBScript in a filename and trigger its execution."
The flaw can be exploited by potential hackers using other attack vectors as well, for example, by directly inserting a USB-drive with a malicious file stored on it, or delivering the malicious file via drive-by-downloads.

How to Protect Yourself from Bad Taste


Moskopp reported the vulnerability to the GNOME Project and the Debian Project. Both of them patched the vulnerability in the gnome-exe-thumbnailer file.

The vulnerability affects gnome-exe-thumbnailer before 0.9.5 version. So, if you run a Linux OS with the GNOME desktop, check for updates immediately before you become affected by this critical vulnerability.

Meanwhile, Moskopp also advised users to:

  • Delete all files in /usr/share/thumbnailers.
  • Do not use GNOME Files.
  • Uninstall any software that facilitates automatically execution of filenames as code.

Moskopp also advised developers to not use "bug-ridden ad-hoc parsers" to parse files, to "fully recognise inputs before processing them," and to use unparsers, instead of templates.

quinta-feira, 20 de julho de 2017

New Linux Malware Exploits SambaCry Flaw to Silently Backdoor NAS Devices

Mohit Kumar
Em 18/07/2017 no site The Hacker News

sambacry-backdoor-nas-devices
Remember SambaCry?

Almost two months ago, we reported about a 7-year-old critical remote code execution vulnerability in Samba networking software, allowing a hacker to remotely take full control of a vulnerable Linux and Unix machines.

We dubbed the vulnerability as SambaCry, because of its similarities to the Windows SMB vulnerabilityexploited by the WannaCry ransomware that wreaked havoc across the world over two months ago.

Despite being patched in late May, the vulnerability is currently being leveraged by a new piece of malware to target the Internet of Things (IoT) devices, particularly Network Attached Storage (NAS) appliances, researchers at Trend Micro warned.

For those unfamiliar: Samba is open-source software (re-implementation of SMB/CIFS networking protocol), which offers Linux/Unix servers with Windows-based file and print services and runs on the majority of operating systems, including Linux, UNIX, IBM System 390, and OpenVMS.

Shortly after the public revelation of its existence, the SambaCry vulnerability (CVE-2017-7494) was exploited mostly to install cryptocurrency mining software—"CPUminer" that mines "Monero" digital currency—on Linux systems.

However, the latest malware campaign involving SambaCry spotted by researchers at Trend Micro in July mostly targets NAS devices used by small and medium-size businesses.

SHELLBIND Malware Exploits SambaCry to Targets NAS Devices


Dubbed SHELLBIND, the malware works on various architectures, including MIPS, ARM and PowerPC, and is delivered as a shared object (.SO) file to Samba public folders and loaded via the SambaCry vulnerability.

Once deployed on the targeted machine, the malware establishes communication with the attackers' command and control (C&C) server located in East Africa, and modifies firewall rules to ensure that it can communicate with its server.

After successfully establishing a connection, the malware grants the attackers access to the infected device and provides them with an open command shell in the device, so that they can issue any number and type of system commands and eventually take control of the device.

In order to find the affected devices that use Samba, attackers can leverage the Shodan search engine and write the original malware files to their public folders.
"It is quite easy to find devices that use Samba in Shodan: searching for port 445 with a 'samba' string will turn up a viable IP list," researchers said while explaining the flaw. 
"An attacker would then simply need to create a tool that can automatically write malicious files to every IP address on the list. Once they write the files into the public folders, the devices with the SambaCry vulnerability could become ELF_SHELLBIND.A victims."
However, it is not clear what the attackers do with the compromised devices and what's their actual motive behind compromising the devices.

The SambaCry vulnerability is hell easy to exploit and could be used by remote attackers to upload a shared library to a writable share and then cause the server to load and execute the malicious code.

The maintainers of Samba already patched the issue in Samba versions 4.6.4/4.5.10/4.4.14, so you are advised to patch your systems against the vulnerability as soon as possible.

Just make sure that your system is running updated Samba version.

Also, attackers need to have writable access to a shared location on the target system to deliver the payload, which is another mitigating factor that might lower the rate of infection.

quarta-feira, 12 de julho de 2017

Docker e SQL Server – Container as a Service

Por Waldemar Dibiazi Junio
Em 11/07/2017 no site Profissionais TI

Resultado de imagem para docker

Este artigo abordará como configurar e executar um serviço do SGBD Microsoft SQL no sistema operacional Linux sob um container Docker, utilizar a persistência de volumes de dados sob o container, bem como, explorar a execução de binários como o sqlcmd para estabelecer uma sessão com o serviço do SQL Server e realizar o processo de backup e restore de uma base de dados.

Um pouco de história

Docker é um projeto open source que permite automatizar o desenvolvimento, distribuição e execução de aplicações em Linux containers.
Um Linux container é um método para executar isoladamente um ou mais binários em um único host (hospedeiro), sem a necessidade de um hipervisor (que demandaria a instalação de um sistema operacional convidado).
projeto Docker pode ser instalado e configurado com facilidade não apenas em sistemas GNU/Linux, mas também em sistemas como Windows e Mac OS/X.
Diferentemente de uma tecnologia de virtualização como Linux KVM, VMWare vSphere, Xen e Hyper-V que demandam a instalação de um sistema operacional convidado, compartilham apenas o Kernel do host no qual estão sendo executados, onde binários e bibliotecas dentro de cada container são a priori restritos ao ambiente de execução de cada container.
Deste modo, cada aplicação/serviço em execução dentro de um container poderá ter seus binários e bibliotecas atualizados sem a preocupação de prejudicar outros containers.
Docker é baseado na tecnologia LXC (Linux Containers), mas temos outras tecnologias de containers como o Jails de sistemas BSD, assim como, temos tecnologias muito mais simples para criação de sandbox (que é base para a idéia empregada em Linux Containers), por exemplo, chroot, onde é possível isolar serviços como o Web Service Apache e o DNS Service Bind.
Deste modo, através do chroot podemos criar uma árvore de filesystem apenas com os arquivos necessários para o serviço, isolando um ou mais processos do serviço em questão, evitando que estes processos tenham acesso aos filesystems do host. Essa abordagem é muito útil em situações onde um serviço tem uma ou mais vulnerabilidades e uma delas foi explorada permitindo que um atacante obtenha um shell.
A partir do momento que este shell for obtido pelo atacante, o processo deste shell visualizará apenas a árvore do filesystem disponibilizada via chroot, criando assim uma sandbox que ajudará na contenção do ataque, contenção essa que se não fosse realizada permitiria ao atacante explorar outros arquivos e serviços no mesmo host.
O Docker foi desenvolvido inicialmente como uma API de alto nível que complementaria o LXC , mas a partir da versão 0.9 introduziu sua própria biblioteca, desenvolvida utlizando a linguagem GO.
Através do Docker é possível executar aplicações diversas como, por exemplo, servidores de banco de dados, web application service, servidores de banco de dados (alvo deste artigo).
Supondo que temos um host com Debian, é possível executarmos containers que disponibilize um sistema/distribuição Ubuntu, Suse ou CentOS, pois toda a árvore de filesystem contendo binários, arquivos de configuração, bibliotecas (dinâmicas e estáticas) particulares para cada distribuição estarão isoladas em cada container, onde o único elemento utilizado em comum por cada container é o kernel.

Iniciando os trabalhos:

A imagem de container Docker disponibilizada pela Microsoft que será utilizada é: microsoft/mssql-server-linux
Para este artigo utilizaremos o Docker Hub para realizar o pull da imagem acima mencionada.
A seguir temos os requisitos mínimos para poder utilizar a imagem de container Docker disponibilizada pela Microsoft:
  • Docker Engine 1.8 ou superior
  • Mínimo de 4 GB de espaço em disco
  • Mínimo de 4 GB de RAM
  • Configurar uma senha forte para a conta de administrador do serviço do SQL Server, senha essa contendo pelo menos 8 caracteres utilizando letras maiúsculas e minúsculas, números e/ou símbolos não alfanuméricos.
Para este artigo foi utilizada a distribuição Debian 9.
A instalação do Docker pode ser realizada de maneira simples através da etapas abaixo:
– Instale os pacotes que serão dependências no restante do processo de instalação do Docker Engine:
– Adicione a chave do repositório:
– Adicione o repositório ao sistema:
 – Atualize o banco de dados de referência de pacotes do sistema:
 – Instale o pacote do Docker Engine:
 – Execute os daemons do Docker e ative o serviço na inicialização do sistema:
 – Adicione o atual usuário logado no grupo de usuário Docker. Essa ação fará com que não seja necessária a utilização do comando sudo para utilização docker.
– Reinicie o sistema para testar a inicialização do serviço do Docker:
– Liste os containers criados (em execução e também que não estão em execução):
Obviamente a listagem não retornará nada pois não existem container criados.
– Crie e execute um container utilizando uma imagem de teste chamada hello-run
Esta ação fará com que o engine do Docker realize o pull da imagem diretamente do Docker Hub.
Após a execução do conteiner ele exibirá algumas mensagens, dentre elas: Hello from Docker !
Você poderá verificar que o host possui um container que não está em execução, pois o container criado e que entrou em execução apenas exibiu algumas mensagens relacionadas a teste e em seguida teve a execução finalizada.
Da mesma forma que existe um container que não está em execução, temos uma imagem que sofreu o download para o host, imagem essa utiliza de base para execução do nosso container de teste:
Vamos realizar o pull da imagem de container do SQL Server e utiliza-la para criar e executar o container que proverá um serviço de banco de dados da Microsoft sob o host atual.
Entretanto, antes disso iremos criar uma estrutura de diretórios que permitirá termos persistência dos dados do container, especificamente, do diretório /var/opt/mssql que no caso é o diretório dentro da estrutura do container que armazenará os datafiles dos bancos de dados do SQL Server.
É muito importante a configuração da persistência, pois ao finalizar o container por padrão os dados serão perdidos e em muitas situações a perda dos dados gerados durante a execução do container não é aceitável. Entretanto, tudo dependerá da finalidade do container, afinal, podemos executar um container, gerar informações nele, mas tais informações poderem ser descartadas ou as mesmas já terem sido armazenadas em outro host ou container que utiliza persistência de dados.
Portanto, crie a seguinte estrutura de diretórios:
Em seguida execute o container, que será nomeado como SQLServer01.
Aguarde o pull (download) da imagem para que o container seja criado e entre em execução.
O comando acima pode ser entendido da seguinte maneira:
run – esta opção realiza três ações: pull da imagem, criação do container e em seguida execução do container criado.
-e – permite a criação de variáveis de ambiente sob o ambiente de execução do container. No caso acima, foram criadas duas variáveis de ambiente: ACCEPT_EULA recebendo o valor Y e SA_PASSWORD recebendo o valor #AdminSQLServer2017 (que será a senha da conta System Administrator do SQL Server). Deste modo, durante a execução do binário existente na imagem que sofreu o pull, este binário irá verificar a existências destas variáveis e utilizar os valores setados nelas.
A variável ACCEPT_EULA permite que definir se os termos da licença de uso serão aceitos.
-p – permite realizar o mapeamento de portas. No caso acima, qualquer conexão a porta 1433 (  valor numérico a esquerda dos :  ) será redirecionada para a porta 1433 (  valor numérico a direita dos :  ) em listening no container.
-d – executará o container em modo background.
-v – anexará um volume externo a um volume dentro do container, no caso, teremos o mapeamento do diretório /data/containers/SQLServer01/mssql existente no host para o diretório /var/opt/mssql existente no container.
Portanto ação de criação, exclusão e alteração ocorrida em /var/opt/mssql dentro do container também ocorrerá em /data/containers/SQLServer01/mssql (que encontra-se acessível no host que executa o container).
–name – Define o nome que o container terá ao ser criado.
Em seguida verifique se o container está em execução:
Caso o container não seja listado, então execute novamente o comando docker run sem a opção -d para podermos visualizar no console qualquer mensagem de erro durante a inicialização dos binários do container.
Um erro muito comum é a falta de memória no host, lembrando que a recomendação mínima são 4 GB.
Verificada a existência de algum erro (por exemplo, quantidade de memória insuficiente), abra outro terminal e pare o container com o comando:
Para executar novamente o container, basta executar:
Verifique novamente se o container está em execução:
Com o container em execução iremos estabelecer uma sessão de usuário com o serviço em execução sob o Container.
Dentro das das vantagens clássicas de container temos isolamento, portabilidade e flexibilidade e graças a isso podemos não apenas executar binários e bibliotecas existentes em uma imagem na forma de um container que atuará como serviço, mas também podemos simplesmente realizar a chamada a outros binários existentes no container já em execução, por exemplo, um binário que represente uma ferramenta de linha de comando que faz parte da solução empacotada dentro da imagem.
Iremos iniciar o binário bastante conhecido por DBAs que trabalham com SQL Server, o sqlcmd para estabelecermos uma sessão de usuário com o serviço do SQL Server.
A opção exec realiza a chamada a binários existentes dentro de um container em execução, ou seja, sem precisar criar um novo container apenas para executar um binário já existente na imagem que foi utilizada de base para a criação do container anterior.
Já as opções -it permitem que durante a execução do binário sqlcmd seja possível estabelecer a interação entre entre o shell e o binário em execução no momento.
Após a execução do binário sqlcmd será exibido o prompt
1>
Execute a instrução SQL select a seguir acompanhada da instrução GO:
 Serão exibidos os databases padrão do SQL Server, no caso:
  • master
  • tempdb
  • model
  • msdb
Realizaremos a seguir algumas operações simples em SQL:
  • Criação de um database;
  • Abertura do database;
  • Criação de uma tabela;
  • Inserção de registros nesta tabela;
  • Consulta de registros;
Com a sessão finalizada com a instrução exit, iremos parar o container e inicia-lo novamente para comprovar que a persistência de dados está sendo realizada corretamente.
Verifique se o container não encontra-se mais em execução:
Liste os arquivos e diretórios criados no nosso diretório utilizado para persistência de dados do container:
Podemos constatar que os datafiles do nosso database empresa, bem como os datafiles dos bancos de dados default do SQL Server foram criados efetivamente no diretório de persistência.
Inicie o container novamente e verifique que o binário do serviço do SQL Server em execução sob o container irá obter acesso aos datafiles:
Execute o binário do cliente sqlcmd novamente:
Liste os databases existentes:
Executando backup completo do database empresa:
Devido o mapeamento de volume de dados no container, podemos copiar o arquivo backup-empresa.sql (existentente em /data/containers/SQLServer01/mssql) para outro local.
Restaurando o backup completo do database empresa:
Este é um exemplo simples de backup e restore, entretanto, vale salientar que existem outras opção relacionadas ao backup como, por exemplo, backup do log de transações, entre outras.
O objetivo do artigo foi apenas demonstrar a chamada de binários existentes no container não apenas para prover um serviço de banco dados, mas também utilizar ferramentas como sqlcmd existente na árvore do filesystem do container.
No próximo artigo iremos ver a instalação e configuração de um Cluster utilizando Docker Swarm e o gerenciamento de containers utilizando uma web interface.