docker e configurando a conectividade

docker e configurando a conectividade

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 COPYinstrução no Dockerfile
  • Compartilhe um arquivo ou diretório no host com o contêiner usando um"vincular montagem"e edite-os no host.

informação relacionada