Docker 1.3
23 de Outubro de 2014, 15:02 - sem 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>&&</span> apt-get install apache2 </span><span> </span><span>ADD mysite /var/www/ </span><span> </span><span>RUN apt-get autoremove -y <span>&&</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>'{ print $1}'</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>'{ print $1}'</span> </span><span> </span><span>fike@kamino:~<span>$ </span>docker run -it --volumes--from<span>=</span><span>$CONTAINERID</span> --net<span>=</span><span>'container:$CONTAINERID'</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>'{ print $1}'</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 - sem 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>&&</span> apt-get install apache2 </span><span> </span><span>ADD mysite /var/www/ </span><span> </span><span>RUN apt-get autoremove -y <span>&&</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>'{ print $1}'</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>'{ print $1}'</span> </span><span> </span><span>fike@kamino:~<span>$ </span>docker run -it --volumes--from<span>=</span><span>$CONTAINERID</span> --net<span>=</span><span>'container:$CONTAINERID'</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>'{ print $1}'</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 - sem 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 - sem comentários aindaParticipar 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)
- Visual Thinking (Diogo Lucas e Guilherme Lacerda)
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.
Análise de sentimento durante a Copa usando Big Data (Alan Braz) A IBM chama isso de FAMA mas me pareceu coisa do Watson. Gostei muito e fiquei ainda mais com a sensação do Big Brother (1984, George Orwell)
Software Delivery like a Boss (Guilherme Elias e Fabrízio Mello)
Nunca iria imaginar que uma apresentação sobre Software Delivery poderia ter encenação teatral, foi animal!
- Carregue seus ambientes no bolso com Vagrant e Docker (Diogo Lucas)
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