Some minor corrections at "rodando aplicações gui em docker" and "running gui...

Some minor corrections at "rodando aplicações gui em docker" and "running gui applications with docker"
parent 935c1c0d
Pipeline #7638645 failed with stages
in 45 seconds
......@@ -7,22 +7,22 @@ tags = [ "Docker", "X11" ]
author = "somatorio"
+++
Already using [Docker](https://docker.com/) containers?
How about run your GUI apps with it? Thats right, i'm talking about running your browser, text editor, games, etc.
How about run your GUI apps with it? That's right, i'm talking about running your browser, text editor, games, etc.
## Why? X11 running at Docker seems complicated
That's quite easy (at least easier than most people think) and it gives you an astounding control over the application... Dont want the app to access (inter)net for some reason? Just use `--net null`. Maybe a isolated network? `--net networkname` (in this case you need to create the Docker Network before). Want to limit how much RAM it will use? `--memory mem` (eg: `--memory 1gb`). Want to choose which cpu cores will run the app? `--cpuset-cpus cpus` (eg: `--cpuset-cpus 0,3` or `--cpuset-cpus 0-3`). Anyway... Feel free to use your imagination. :)
(yeah, i know thats possible to do that kind of stuff at linux... But it's not as easy as setting a flag at a command)
(yeah, i know that's possible to do that kind of stuff at linux... But it's not as easy as setting a flag at a command)
Another advantage is that program installs are just "running the app", when you run "`docker run [...] imagename`" Docker Engine verify if this image is available at local repository, and if not, download it and run.
And the application already comes with its dependencies at the container, and that means no "garbage" staying behind as orfan packages (and config files) when the app is removed for some reason. ;)
This experience beyond being fun, takes you to a total immersion with Docker operation, you simply can't use your tools in a daily basis withou needing use various Docker resources.
This experience beyond being fun, takes you to a total immersion with Docker operation, you simply can't use your tools in a daily basis without needing use various Docker resources.
## Oh yeah, like i believe that everything is easy, simple and life turns into rainbows and unicorns... Tell me the truth
Ok, ok... Not everything is chocolate and cakes, mainly when you get to the point there's no image made to the app you need...
The dependencies listed by the developers aren't always the only needed... Which is acceptable if you really think about it, because they are usually already installed at your computer, but in containers case it doesn't turn out that way. This may end pretty frustrating some times, there's another moments that may frustrate you a little, but that's the most common to me (but when you find out what was the problem, the sensation is undescriptable)
The dependencies listed by the developers aren't always the only needed... Which is acceptable if you really think about it, because they are usually already installed at your computer, but in containers case it doesn't turn out that way. This may end pretty frustrating some times, there's another moments that may frustrate you a little, but that's the most common to me (but when you find out what was the problem, the sensation is indescripable)
### Ok, then if i only run apps that already have a image, i won't have problems at all?
Well, like i said before, the problems are **mainly** when you make a image, but not the only ones...
......@@ -33,7 +33,7 @@ Nothing is 100% bullet-proof and it's almost certain that some problems will occ
## I really don't like to jump at new stuff...
Well, that depends of what you think as new :p
Docker itself isn't exactly old (actually is pretty new... Just 3 years old), but many people already does use it at production (and says it have some challenges but it's worth the effort) and... (roll the drums)
...what i'm talking about started pratically together with Docker first public release :)
...what i'm talking about started practically together with Docker first public release :)
### Really?
Yes! here's the timeline i could get with my searches:
......@@ -147,7 +147,7 @@ Here's a "bonus": <https://github.com/somatorio/dockercompose-sample-workbench>
If we can run apps at containers, how about run it through [Docker Compose](https://docs.docker.com/compose/)?
That idea is from [@gomex](http://techfree.com.br), not mine... He talked about it at a conversation about GUI at Docker at a [meetup](https://www.meetup.com/pt-BR/Docker-Porto-Alegre/events/232916179/) (if you look at the meetup date you'll see that was a some time ago... my bad :p) and i just "executed" (read that as: "tested and wrote about") it.
And here's my [humble script - highly based on Jess dockerfunc script (nope, defitenelly not just a coincidence)](https://github.com/somatorio/docker-desktop/blob/master/comandosdocker)
And here's my [humble script - highly based on Jess dockerfunc script (nope, definitely not just a coincidence)](https://github.com/somatorio/docker-desktop/blob/master/comandosdocker)
## OH, some friends of mine use Mac and Windows, can they do that too?
Sure, they'll just need some hacks (not that what we did until now wasn't hacks :p)
......@@ -174,7 +174,7 @@ xming :0 -ac -clipboard -multiwindow
docker run -e DISPLAY=hostip:0 [...] image OR DISPLAY=hostip:0 docker-compose up [-d]
```
### Everything works like a charm?
Unfortunally no everything (at least until now...), sound doesn't work for exemple and as Docker for Mac/Windows runs with VM, you may expect a little performance loss...
Unfortunately not everything (at least until now...), sound doesn't work for exemple and as Docker for Mac/Windows runs with VM, you may expect a little performance loss...
#### So, it's not a good idea to tell them about it?
Hey, i was just telling you what they can expect, not to avoid it :)
......
......@@ -15,7 +15,7 @@ Isso é bem simples (ou ao menos mais do que se imagina) e te dá um controle ab
Outra vantagem é que assim instalações de um programa acabam sendo simplesmente "mandar abrir o programa", quando você roda um "`docker run [...] nomedaimagem`" o Docker engine verifica se essa imagem está disponível no repositório local, e em caso negativo, baixa a mesma e então roda.
Isso sem falar de que a aplicação já fica com as suas dependencias no container, ou seja, nada de "sujeira" ficando pra trás na forma de pacotes orfãos (e arquivos de configuração) quando a aplicação for removida por algum motivo ;)
Isso sem falar de que a aplicação já fica com as suas dependencias no container, ou seja, nada de "sujeira" ficando pra trás na forma de pacotes órfãos (e arquivos de configuração) quando a aplicação for removida por algum motivo ;)
Essa experiência além de divertida, proporciona uma imersão total no funcionamento do Docker, simplesmente não há como usar as suas ferramentas diariamente sem acabar precisando usar vários recursos diferentes proporcionados pelo Docker.
......@@ -26,7 +26,7 @@ Nem sempre as dependencias listadas pelos desenvolvedores são as únicas depend
### Ok, então se eu só rodar aplicações que já tem imagem, não vou ter problema algum?
Bem, como eu disse antes, os problemas são **principalmente** quando se monta uma imagem, não os únicos...
Algumas integrações com outros softwares são bem díficeis (na verdade até agora eu não consegui resolver nenhum desses casos, mas como "nada é impossível"...), por exemplo: alguns softwares permitem que se clique em um link e o navegador padrão abre
Algumas integrações com outros softwares são bem difíceis (na verdade até agora eu não consegui resolver nenhum desses casos, mas como "nada é impossível"...), por exemplo: alguns softwares permitem que se clique em um link e o navegador padrão abre
com a página do link, mas quando se tem um container de digamos "Telegram-desktop", não há um navegador instalado na máquina (na maioria das vezes nem o software que faz essa verificação sobre qual é o navegador padrão e que chama ele).
Nada é "bala de prata" e é quase certo que alguns problemas irão acontecer... E às vezes vai ficar uma verdadeira "pulga atrás da orelha" em relação ao problema ser exatamente por ser em um container (ao menos no meu caso nunca era, mas sempre vinha a dúvida).
......@@ -56,7 +56,7 @@ Funciona basicamente assim, é montado um volume do arquivo de socket do X11 da
Relaxa que eu só estava explicando a teoria por trás da coisa, na prática vamos colocar duas flags: `-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix` e a "mágica" está feita :)
## Ok, vamos aos comandos?
Antes de mais nada... Em 99% dos casos é preciso liberar ,o acesso ao X: `xhost local` (essa liberação ficará vigente até desligar/reinicar o host)
Antes de mais nada... Em 99% dos casos é preciso liberar ,o acesso ao X: `xhost local` (essa liberação ficará vigente até desligar/reiniciar o host)
Comando mais simples o possível, monta o socket X11 do host no container e define o display (note que vamos "evoluindo" o comando aos poucos, mas pode usar apenas as flags que achar necessário):
```
......@@ -149,13 +149,13 @@ imagem [comando]
Bem, claro que tem outros lugares pra ler :)
MAS antes aqui vai um "bônus": <https://github.com/somatorio/dockercompose-sample-workbench>
Se podemos rodar as aplicações em container, que tal rodá-las através do [Docker Compose](https://docs.docker.com/compose/)? Assim se pode definir todas as ferramentas a serem utilizadas e elas estarão disponíveis após um único comando :)
Essa idéia é do [@gomex](http://techfree.com.br), não minha... Ele falou disso durante uma conversa em um [meetup](https://www.meetup.com/pt-BR/Docker-Porto-Alegre/events/232916179/) sobre GUI em Docker (se olharem o link verão que tem um belo tempo entre a conversa e este post... foi mal =p) e eu apenas "executei" ela.
Essa ideia é do [@gomex](http://techfree.com.br), não minha... Ele falou disso durante uma conversa em um [meetup](https://www.meetup.com/pt-BR/Docker-Porto-Alegre/events/232916179/) sobre GUI em Docker (se olharem o link verão que tem um belo tempo entre a conversa e este post... foi mal =p) e eu apenas "executei" ela.
Buenas, quanto a recomendações de leitura:
* [Livro do Gomex (sobre Docker em geral)](https://leanpub.com/dockerparadesenvolvedores)
* [Post da Jess sobre GUI em Docker](https://blog.jessfraz.com/post/docker-containers-on-the-desktop/)
* [Meu singelo script - altamente baseado no da Jess (não, definitivamente não é coincidencia)](https://github.com/somatorio/docker-desktop/blob/master/comandosdocker)
* [Meu singelo script - altamente baseado no da Jess (não, definitivamente não é coincidência)](https://github.com/somatorio/docker-desktop/blob/master/comandosdocker)
## AH, alguns amigos meus usam Mac e Windows, eles podem aproveitar isso?
Claro, só precisa de umas gambiarras (não que isso que fizemos até agora não tenha sido, hehe)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment