![docker e configurando a conectividade](https://rvso.com/image/1601539/docker%20e%20configurando%20a%20conectividade.png)
Retirei um contêiner do repositório público e quero instalar um pacote nele. Mas sem sucesso... Alguma ajuda, por favor? Como fazer a configuração da conectividade do docker com repositórios de pacotes?
[root@adf2 adf2_umb_docker]# docker ps -l
CONTENTOR ID IMAGEM COMANDO CRIADO STATUS NOMES DE PORTAS
8a9a015c5301 devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 "bash" 8 minutos atrás Até 8 minutos admiring_shirley
[root@adf2 adf2_umb_docker]# docker run devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 bash -c "apt-get -y install vim"
Lendo listas de pacotes...
Construindo árvore de dependências...
Lendo informações do estado...
E: Não foi possível localizar o pacote vim
O administrador me informou sobre este log do firewall:
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C OUTPUT -m addrtype --dst-type LOCAL -j DOCKER! --dst 127.0.0.0/8' falhou: iptables: Nenhuma cadeia/destino/correspondência com esse nome.
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' falhou: iptables: Nenhuma cadeia/destino/correspondência por aquele nome.
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION' falhou: iptables: Nenhuma cadeia/destino/correspondência por isso nome.
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 192.168.0.0/20 ! -o docker0 -j MASQUERADE' falhou: iptables: Nenhuma cadeia/destino/correspondência com esse nome.
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN' falhou: iptables: regra incorreta (faz uma regra correspondente existe nessa cadeia?).
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP' falhou: iptables: regra incorreta (faz uma regra correspondente existe nessa cadeia?).
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -j ACCEPT' falhou: iptables: regra incorreta (faz existe uma regra de correspondência nessa cadeia?).
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 ! -o docker0 -j ACCEPT' falhou: iptables: regra incorreta (existe uma regra correspondente nessa cadeia?).
23 de agosto 23:02:08 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT' falhou: iptables: Regra incorreta (existe uma regra correspondente nessa cadeia?).
23 de agosto 23:02:09 adf2 firewalld [5882]: AVISO: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' falhou: iptables: Nenhuma cadeia/destino/correspondência por aquele nome.
Responder1
Não é assim que você adiciona um pacote no Docker. Com o seu método, faça com que uma instância do contêiner adicione um pacote a si mesma. Isso faz com que o contêiner tente acessar a Internet, o que pode ser proibido pelas regras locais. Isso também cria problemas futuros:
- Como você faz backup deste contêiner
- Como você reconstruí-lo, se necessário
A maneira correta éderivar a imagem, usando um Dockerfile:
FROM devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi/18.4
RUN apt-get -y install vim
Então você cria a imagem usando:
docker build -t "TheDerivedImageName" $TheDirectpryWithTheDockerfFile
E quando necessário execute a imagem, criando uma instância de contêiner a partir dela:
docker run TheDerivedImageName
O Dockerfile e os arquivos associados são arquivos host: podem ser copiados, colocados em um sistema de controle de origem (git...), compartilhados com outras pessoas...
Além disso, instalar o Vim na imagem do Docker é desnecessário e indica que talvez você não esteja usando o Docker corretamente. Se precisar criar/editar arquivos no contêiner, você:
- Coloque-os na imagem em tempo de construção usando uma
COPY
instrução no Dockerfile - Compartilhe um arquivo ou diretório no host com o contêiner usando um"vincular montagem"e edite-os no host.