Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Blog
Tela cheia

Docker 1.3

23 de Outubro de 2014, 15:02 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 11 vezes
<p><img src="http://www.fernandoike.com/images/solomon-keynote-penguin-authentication-300x235.png" /></p> <p>A <a href="https://blog.docker.com/2014/10/docker-1-3-signed-images-process-injection-security-options-mac-shared-directories/">versão 1.3</a> do <a href="http://www.docker.com">Docker</a> foi lançada recentemente. Eu gostei dela por duas razões.</p> <h2>Verificação da assinatura digital</h2> <p>O pessoal da DotCloud já tinha <a href="https://blog.docker.com/2014/09/docker-hub-official-repos-announcing-language-stacks/">anunciado</a> alguns repositórios oficiais de alguma ferramentas e linguagens de programação (<strong>C(++)/GCC</strong>, <strong>PHP</strong>, <strong>Go</strong>, <strong>Java</strong>, <strong>Nodejs</strong>, <strong>Python</strong>, <strong>Perl</strong>, <strong>Ruby</strong>, etc.). O Docker verifica se os repositórios oficiais estão íntegros, eles (os repositórios) são assinados com chave criptográficas. (Obs. procurando que tipos de chaves são e como são assinados)</p> <p>Antes disso eu tinha um pouco de restrição com os repositórios de terceiros. Até então, preferia criar meus templates de containers.</p> <h2>Entrar num container em execução</h2> <p>Nas versões anteriores era um pouco trabalhoso para você entrar num container e analisar um problema que estivesse ocorrendo, exemplo: identificar um problema de permissão num diretório.</p> <p>Na versões anteriores teria que ser feito assim:</p> <p>Na criação do container deveria compartilhar os diretórios de log e da aplicação. Supondo que seja um servidor web simples, o dockerfile seria como o abaixo:</p> <span>Dockerfile </span> <div><table><tr><td><pre><span>1</span> <span>2</span> <span>3</span> <span>4</span> <span>5</span> <span>6</span> <span>7</span> <span>8</span> <span>9</span> <span>10</span> <span>11</span> <span>12</span> <span>13</span> <span>14</span> <span>15</span> <span>16</span> <span>17</span> <span>18</span> <span>19</span> </pre></td><td><pre><code><span>FROM debian:wheezy </span><span> </span><span>MAINTAINER fike at midstorm.org </span><span> </span><span>RUN apt-get udpate <span>&amp;&amp;</span> apt-get install apache2 </span><span> </span><span>ADD mysite /var/www/ </span><span> </span><span>RUN apt-get autoremove -y <span>&amp;&amp;</span> rm -rf /tmp/* /var/tmp/* </span><span> </span><span>ENV APACHE_RUN_USER www-data </span><span> </span><span>ENV APACHE_RUN_GROUP www-data </span><span> </span><span>ENV APACHE_LOG_DIR </span><span> </span><span>VOLUMES <span>[</span><span>"/var/log/apache2"</span>, <span>"/var/www"</span><span>]</span> </span><span> </span><span>CMD <span>[</span><span>"/usr/sbin/apache2"</span>, <span>"-D"</span>, <span>"FOREGROUND"</span><span>]</span> </span></code></pre></td></tr></table></div> <h3>Criando o container</h3> <div><table><tr><td><pre><span>1</span> </pre></td><td><pre><code><span>fike@kamino:~<span>$ </span>docker build -t<span>=</span><span>"mysimplesite"</span> . </span></code></pre></td></tr></table></div> <h3>Executando</h3> <div><table><tr><td><pre><span>1</span> </pre></td><td><pre><code><span>fike@kamino:~<span>$ </span>sudo docker run -d -p 80:80 mysimplesite </span></code></pre></td></tr></table></div> <h3>Putz! Os internautas não estão conseguindo acessar meu site, ele está retornando 403.</h3> <p>Se não tiver uma versão mais recente do util-linux (> 2.27) <a href="http://jpetazzo.github.io/2014/03/23/lxc-attach-nsinit-nsenter-docker-0-9/">não poderá usar</a> o nsenter. Outra forma seria executar um segundo container e acessar os diretórios compartilhados do primeiro.</p> <div><table><tr><td><pre><span>1</span> <span>2</span> <span>3</span> </pre></td><td><pre><code><span>fike@kamino:~<span>$ CONTAINERID</span><span>=</span><span>$(</span>docker ps |grep mysimplesite|awk <span>&#39;{ print $1}&#39;</span> </span><span> </span><span>fike@kamino:~<span>$ </span>docker run -it --volumes-from<span>=</span><span>$CONTAINERID</span> /bin/bash </span></code></pre></td></tr></table></div> <p>Se estiver usando um <a href="http://www.fluentd.org/">Fluent</a> ou outro agregador de logs não precisaria disso, certo? Nesse caso, sim. Entretanto pode ocorrer de precisar inspecionar um container para verificar um vazamento de memória ou algo que necessite analisar a aplicação em produção.</p> <p>Se o problema estiver relacionado a rede, a abordagem era parecida. Um bom exemplo, alterar uma zona DNS no Bind9 usando o <strong>rndc</strong>.</p> <div><table><tr><td><pre><span>1</span> <span>2</span> <span>3</span> </pre></td><td><pre><code><span>fike@kamino:~<span>$ CONTAINERID</span><span>=</span><span>$(</span>docker ps |grep mysimplesite|awk <span>&#39;{ print $1}&#39;</span> </span><span> </span><span>fike@kamino:~<span>$ </span>docker run -it --volumes--from<span>=</span><span>$CONTAINERID</span> --net<span>=</span><span>&#39;container:$CONTAINERID&#39;</span> mysimplesite /bin/bash </span></code></pre></td></tr></table></div> <p>No 1.3 é bem mais simples.</p> <div><table><tr><td><pre><span>1</span> <span>2</span> <span>3</span> </pre></td><td><pre><code><span>fike@kamino:~<span>$ CONTAINERID</span><span>=</span><span>$(</span>docker ps |grep mysimplesite|awk <span>&#39;{ print $1}&#39;</span> </span><span> </span><span>fike@kamino:~<span>$ </span>docker <span>exec</span> -it <span>$CONTAINERID</span> /bin/bash </span></code></pre></td></tr></table></div>
Fonte: http://www.fernandoike.com/2014/10/23/docker-1-dot-3/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.