Ir para o conteúdo
ou

Software livre Brasil

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.
cover do http://fernandoike.com

Docker 1.3

23 de Outubro de 2014, 15:02, por Software Livre Brasil - 0sem comentários ainda

<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>



Docker 1.3

23 de Outubro de 2014, 15:02, por Software Livre Brasil - 0sem comentários ainda

<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>



docker 1 dot 3

23 de Outubro de 2014, 0:00, por Fike's Mnemonics - 0sem comentários ainda

{% img center /images/solomon-keynote-penguin-authentication-300x235.png %}

A versão 1.3 do Docker foi lançada recentemente. Eu gostei dela por duas razões.

Verificação da assinatura digital

O pessoal da DotCloud já tinha anunciado alguns repositórios oficiais de alguma ferramentas e linguagens de programação (C(++)/GCC, PHP, Go, Java, Nodejs, Python, Perl, Ruby, 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)

Antes disso eu tinha um pouco de restrição com os repositórios de terceiros. Até então, preferia criar meus templates de containers.

Entrar num container em execução

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.

Na versões anteriores teria que ser feito assim:

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:

{% codeblock Dockerfile lang:bash %}

FROM debian:wheezy

MAINTAINER fike at midstorm.org

RUN apt-get udpate && apt-get install apache2

ADD mysite /var/www/

RUN apt-get autoremove -y && rm -rf /tmp/* /var/tmp/*

ENV APACHE_RUN_USER www-data

ENV APACHE_RUN_GROUP www-data

ENV APACHE_LOG_DIR

VOLUMES [“/var/log/apache2”, “/var/www”]

CMD [“/usr/sbin/apache2”, “-D”, “FOREGROUND”]

{% endcodeblock %}

Criando o container

{% codeblock lang:bash %}

fike@kamino:~$ docker build -t=“mysimplesite” .

{% endcodeblock %}

Executando

{% codeblock lang:bash %}

fike@kamino:~$ sudo docker run -d -p 80:80 mysimplesite

{% endcodeblock %}

Putz! Os internautas não estão conseguindo acessar meu site, ele está retornando 403.

Se não tiver uma versão mais recente do util-linux (> 2.27) não poderá usar o nsenter. Outra forma seria executar um segundo container e acessar os diretórios compartilhados do primeiro.

{% codeblock lang:bash %} fike@kamino:~$ CONTAINERID=$(docker ps |grep mysimplesite|awk ‘{ print $1}’

fike@kamino:~$ docker run -it –volumes-from=$CONTAINERID /bin/bash

{% endcodeblock %}

Se estiver usando um Fluent 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.

Se o problema estiver relacionado a rede, a abordagem era parecida. Um bom exemplo, alterar uma zona DNS no Bind9 usando o rndc.

{% codeblock lang:bash %} fike@kamino:~$ CONTAINERID=$(docker ps |grep mysimplesite|awk ‘{ print $1}’

fike@kamino:~$ docker run -it –volumes–from=$CONTAINERID –net=‘container:$CONTAINERID’ mysimplesite /bin/bash

{% endcodeblock %}

No 1.3 é bem mais simples.

{% codeblock lang:bash %} fike@kamino:~$ CONTAINERID=$(docker ps |grep mysimplesite|awk ‘{ print $1}’

fike@kamino:~$ docker exec -it $CONTAINERID /bin/bash {% endcodeblock %}



Eu fui: TDC 2014- Edição POA

19 de Outubro de 2014, 20:40, por Software Livre Brasil - 0sem comentários ainda

Participar de eventos é sempre uma boa oportunidade de aprender coisas novas, aumentar o networking e repassar conhecimento ou algumas lições aprendidas. :)

Acredito que o pessoal da organização do TDCtdc gostou da minha apresentação na edição de São Paulo (Você está preparado para um milhão de usuários?) porque eles aprovaram as três proposta que inscrevi.

Gostei bastante desta edição de Porto Alegre porque vi algumas coisas novas bem interessantes. As que destacam: (para mim)

No meu trabalho atual, costumo usar um quadro branco ou papel em detrimento à apresentações em Power Point/LibreOffice Impress para discutir com os clientes produtos e serviços, como também, definição de arquitetura.

Não sabia que isso era chamado de Visual Thinking, eu costumava chamar de “Quer que eu desenhe?” Aliás, alguns meses atrás comecei esboçar uma apresentação falando disso, vou aumentar a prioridade dela no meu TODO.

Nunca iria imaginar que uma apresentação sobre Software Delivery poderia ter encenação teatral, foi animal!

Foi muito interessante porque o Diogo usou o mesmo termo que eu para definir o Docker: “Disruptivo”. Bom, falei sobre ele na apresentação: “Docker na vida real

As outras apresentações foram sobre Web Performance – “Será que seu site está preparado para um milhão de usuários simultâneos?” e “Managenment 3.0 – a vida pós-agilidade


Será que seu site está preparado para um milhão de usuários simultâneos?

Docker na vida real

Managenment 3.0 – a vida pós-agilidade