/dockerfiles

Docker Files que eu uso

Primary LanguagePython

Colocar a data da maquina igual a do host:

-v /etc/localtime:/etc/localtime:ro

Programas graficos:

-e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix

Comando Dockers

  • Baixar imagem: docker pull [nome da imagem]

  • Listar imagens: docker images

  • Iniciar a imagem: docker run [nome da imagem]

  • Listar containers: docker ps -a

  • Log um container: docker logs <nome_container>
    (OBS: Para acompanhar em tempo real os logs de um container que esteja rodando, basta adicionar o parâmetro -f.)

  • Desligar um container: docker stop

  • Reiniciar um container: docker start

  • Remover um container: docker rm -f <nome_container>

  • Remove containers: docker rm <nome_contauner>

  • Remover uma imagem: docker rmi -f <nome_imagem>

  • Remove todos os containers: docker rm -f $(sudo docker ps -aq)

  • Remove todas as imagens: docker rmi $(sudo docker images -aq)

  • Executa comandos no container:
    docker exec [id do container] [comando] docker exec -it bash ( -i modo interativo, -t alocado um pseudo-TTY, por fim o comando bash será executado na “máquina” e lhe dará acesso a seu shell.)

  • Copiar um arquivo do container para o host: docker cp <nome_container>:/caminho/no/container /caminho/no/host
    Exemplo: docker cp app1:/home/ec2-user/log.txt /logs

EXEMPLOS:


Remover dangling images

docker rmi $(docker images -q -f dangling=true)

"Dangling images" são, basicamente, imagens sem uma tag. Se você alguma(s) vez(es) rodou um Dockerfile que falhou, provavelmente você deve ter uma ou mais imagens sem tags. Para removê-las, basta usar o comando acima.


docker pull nginx

docker run -d -p 80:80 nginx

O parâmetro "-d" informa que a "máquina" será executada em background e o parâmetro "-p" informa que toda requisição da porta 80 do hospedeiro X será redirecionada para a porta 80 da "máquina" que acabou de ser iniciada.


Build de uma imagem

docker build -t <nome_da_imagem> <caminho_para_dockerfile>

OBS: Lembre que as imagens são compostas de camadas (layers) e que o Docker usa caching para fazer o build somente das camadas que tiveram alguma mudança. Recentemente, o Docker publicou uma Image Specification, que explica como tudo isso funciona. Para buildar uma imagem sem utilizar caching, adicione a opção --no-cache ao comando.


https://github.com/crosbymichael/dockerui

sudo docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui

Open your browser to http://:9000


Executando um container MongoDB

No DockerHub está disponível a imagem oficial do Mongo, basta executar o comando abaixo para ter o Mongo rodando em um container.

docker run -d -v $PWD/mongodata:/data/db -p 27017:27017 mongo

A parte do $PWD/mongodata: pode ser substituida pelo caminho de sua preferencia, este é o local onde o Mongo irá salvar os dados.

Se preferir executar no modo efemero (perdendo todos os dados ao reiniciar o container) execute apenas docker run -d -p 27017:27017 mongo


Monitoramento de containers

docker stats <nome_container>

OBS: Para ver as estatísticas de todos os containers rodando no host, use:

docker stats docker ps | tail -n+2 | awk '{ print $NF }'


*********************************** Supeorvisord ********************************************* https://hub.docker.com/r/fr3nd/supervisor/

Create configuration for the service

mkdir -p $HOME/supervisor.d cat << EOF > $HOME/supervisor.d/collectd.conf [program:collectd] command=docker run --privileged -v /proc:/mnt/proc:ro fr3nd/collectd EOF

Run supervisord

docker run
--detach
--name supervisord
--volume /var/run/docker.sock:/var/run/docker.sock:rw
--volume $HOME/supervisor.d:/etc/supervisor/conf.d:ro
--volume /var/log/supervisor:/var/log/supervisor:rw
--volume $HOME/Pearson:/Pearson
fr3nd/supervisor

View status of the running services

docker exec
supervisord
supervisorctl status

docker run
--detach
--name java-supervisord
--volume /var/run/docker.sock:/var/run/docker.sock:rw
--volume $HOME/supervisor.d:/etc/supervisor/conf.d:ro
--volume /var/log/supervisor:/var/log/supervisor:rw
--volume $HOME/Pearson:/Pearson
maluuba/java-supervisor

************************************ Mysql *************************************************

sudo docker pull mysql

*** Para pegar o IP usar sudo docker inspect sudo docker run --name mymysql -e MYSQL_ROOT_PASSWORD=root6Beer -d mysql

*** -p 3306:3306 = localhost:3306 sudo docker run -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=root6Beer -d mysql


*********************************** intellij **********************************************

https://hub.docker.com/r/kurron/docker-intellij/

docker run
--rm
--name intellij
--net "host"
--env DISPLAY=unix$DISPLAY
--user 1000:1000
--volume /tmp/.X11-unix:/tmp/.X11-unix
--volume $HOME:/home/developer
kurron/docker-intellij:latest

docker run
--name intellij
--net "host"
--env DISPLAY=unix$DISPLAY
--user 1000:1000
--volume /tmp/.X11-unix:/tmp/.X11-unix
--volume $HOME:/home/developer
kurron/docker-intellij:latest

https://hub.docker.com/r/jamesnetherton/docker-intellij-community/

docker run -it
--name intellij_community
--net "host"
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=unix$DISPLAY
--volume $HOME:/home/developer
jamesnetherton/intellij-community

******************************* Pulse e skype *************************** docker run -d
-v /etc/localtime:/etc/localtime:ro
--device /dev/snd
--name pulseaudio
-p 4713:4713
-v /var/run/dbus:/var/run/dbus
-v /etc/machine-id:/etc/machine-id
jess/pulseaudio

docker run
--rm
--name skype
-v /tmp/.X11-unix:/tmp/.X11-unix
-v $HOME/.Skype:/home/skype/.Skype
-e DISPLAY=unix$DISPLAY
--link pulseaudio:pulseaudio
-e PULSE_SERVER=pulseaudio
--device /dev/video0
jess/skype ******************************************* Chrome **************************************** docker run -it
--net host
--cpuset-cpus 0
--memory 512mb
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=unix$DISPLAY
-v $HOME/Downloads:/root/Downloads
-v $HOME/.config/google-chrome/:/data
--device /dev/snd
-v /dev/shm:/dev/shm
--name chrome
jess/chrome


Teste com KDE Xeon

https://community.kde.org/Neon/Docker

Default user is neon and password is neon. The user has password-free sudo access.

To give it a try first set up Docker as you would for your distro. For Ubuntu distros that means running:

sudo apt install docker.io xserver-xephyr sudo usermod -aG docker $(whoami) and log out and in again

By default it will run a full session with startkde on DISPLAY=:1, you can use Xephyr as an X server window.

Xephyr -screen 1024x768 :1 & docker run -v /tmp/.X11-unix:/tmp/.X11-unix kdeneon/plasma:dev-unstable Or you can tell it to run on DISPLAY=:0 and run a single app

xhost + docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 kdeneon/plasma:dev-unstable dolphin This drops access restrictions to your X server (should be safe because network access is still off but reverse with xhost - once you’re done if you want to be sure), downloads kdeneon and runs okular.

For an interactive session where you have access to your coding directory ~/src run

xhost + docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v ~/src:/home/neon/src -e DISPLAY=:0 kdeneon/plasma:dev-unstable bash This will give you a Bash prompt, you can code as you would on your host machine and run X apps. Type exit to quit, the ~/src directory will be preserved on your host machine.

You can also commit your Docker images if you make changes you would like to come back to such as installing applications. For more information on using Docker see Docker Engine user guide.


Servidor smtp

https://hub.docker.com/r/exoplatform/smtp/

sudo docker run -d --name smtp exoplatform/smtp:latest


http://jmkhael.io/deploying-play-with-docker-com-on-my-machine/