Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

GERAR ARQUIVO DENTRO DO DOCKER

Como Elaborar um script que, ao ser executado dentro de um container docker, escreva em um arquivo a lista de todos os containers ativos na máquina que este container está sendo executado (maquina host) no momento da execução

6 respostas

Não entendi mt bem, mas é possível verificar containers ativos com o comando:

docker ps

Convertendo para um script seria algo como:

#!/usr/bin/env sh

docker ps

O script tem que ser executado DENTRO do container docker e tem que mostrar todos os containers ativos no docker HOST.

Um container NÃO TEM acesso ao seu host, ele é ISOLADO do sistema hospedeiro. Essa é a ideia mesmo.

solução!

Guilherme, na verdade isso não é verdade. rsrs. Sim, um container pode sim ter acesso ao host. Seja através de uma porta seja através de de volumes. E com esse último foi que achei a solução.

Vamos lá. Criei um container DEBIAN que acessa o endpoint do serviço do docker usando volumes:

docker run -d --name=debian -v /var/run/docker.sock:/var/run/docker.sock debian sleep 1d

Entrei no container:

docker exec -it debian bash

Lá dentro instalei o vim e o curl:

apt update
apt install curl -y
apt install vim -y

Depois criei um .sh onde dentro dele cria-se um Json e joga num TXT todos os dados dos containers ativos naquele momento. Seguem os comandos.

vim containers-viewer.sh

#!/bin/bash

#Comando de visualização de todo os containers ativos no HOST curl --unix-socket /var/run/docker.sock http://localhost/containers/json >> containers.txt

Pronto, agora só executar o arquivo gerado quando executar esse .sh pra ter sempre informações de containers ativos no HOST

Opa, estamos falando de coisas diferentes. Faltou um "por padrão" na minha resposta. É possível acessar recursos da máquina host DESDE QUE você defina EXPLICITAMENTE estes recursos. Eu entendi que você queria um script genérico que funcionasse em QUALQUER container e esse não é o caso, e continua não sendo possível. Perceba que a sua solução depende muito mais do container, do que do script em si.

Agora, o que você fez foi criar um container especificamente para executar essa ação montando o socket do host nele. Isso funciona mesmo, conectar ao socket é também a ideia de um docker-machine, você se conecta no socket de outras máquinas para gerenciar seus containers remotamente.

Confesso que ainda não entendi a necessidade desse script kkkk, mas parabéns pela solução, cara.

NA verdade isso foi uma pergunta de u processo seletivo e eu tava queimando os dois únicos neurônios que tenho. Devo ter lesionado seriamente um deles mas deu certo. kkkk valeu pela participação camarada