![докер и настройка подключения](https://rvso.com/image/1601539/%D0%B4%D0%BE%D0%BA%D0%B5%D1%80%20%D0%B8%20%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.png)
Я вытащил контейнер из публичного репозитория и хочу установить в него пакет. Но безуспешно... Помогите, пожалуйста? Как настроить подключение докера к репозиториям пакетов?
[root@adf2 adf2_umb_docker]# докер пс -l
ИДЕНТИФИКАТОР КОНТЕЙНЕРА ОБРАЗ КОМАНДА СОЗДАН СТАТУС ИМЕНА ПОРТОВ
8a9a015c5301 devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 "bash" 8 минут назад Вверх 8 минут admiring_shirley
[root@adf2 adf2_umb_docker]# docker run devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 bash -c "apt-get -y install vim"
Чтение списков пакетов...
Построение дерева зависимостей...
Чтение информации о состоянии...
E: Не удалось найти пакет vim
Администратор сообщил мне об этом журнале брандмауэра:
23 авг 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C OUTPUT -m addrtype --dst-type LOCAL -j DOCKER ! --dst 127.0.0.0/8' не удалось: iptables: Нет цепочки/цели/совпадения с таким именем.
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' не удалось: iptables: Нет цепочки/цели/совпадения с таким именем.
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: «/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION» не удалось: iptables: Нет цепочки/цели/совпадения с таким именем.
23 авг 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 192.168.0.0/20 ! -o docker0 -j MASQUERADE' не удалось: iptables: Нет цепочки/цели/совпадения с таким именем.
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN' не выполнено: iptables: Неверное правило (существует ли в этой цепочке соответствующее правило?).
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP' не удалось: iptables: Неверное правило (существует ли в этой цепочке соответствующее правило?).
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -j ACCEPT' не выполнено: iptables: Неверное правило (существует ли в этой цепочке соответствующее правило?).
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 ! -o docker0 -j ACCEPT' не удалось: iptables: Неверное правило (существует ли в этой цепочке соответствующее правило?).
23 авг. 23:02:08 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT' не удалось: iptables: Неверное правило (существует ли в этой цепочке соответствующее правило?).
23 авг. 23:02:09 adf2 firewalld[5882]: ПРЕДУПРЕЖДЕНИЕ: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' не удалось: iptables: Нет цепочки/цели/совпадения с таким именем.
решение1
Это не то, как вы добавляете пакет в Docker. С вашим методом экземпляр контейнера добавляет пакет к себе.. Это заставляет контейнер пытаться получить доступ к интернету, что может быть запрещено локальными правилами. Это также создает будущие проблемы:
- Как сделать резервную копию этого контейнера
- Как его перестроить, если необходимо
Правильный путь —извлечь образ, используя Dockerfile:
FROM devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi/18.4
RUN apt-get -y install vim
Затем вы создаете изображение, используя:
docker build -t "TheDerivedImageName" $TheDirectpryWithTheDockerfFile
И при необходимости запустить образ, создав из него экземпляр контейнера:
docker run TheDerivedImageName
Dockerfile и связанные с ним файлы являются файлами хоста: их можно резервировать, помещать в систему управления исходным кодом (git...), предоставлять к ним доступ другим людям...
Более того, установка Vim в образе docker не нужна и намекает, что вы, возможно, не используете Docker должным образом. Если вам нужно создать/отредактировать файлы в контейнере, вы либо:
- Добавьте их в образ во время сборки, используя
COPY
оператор в Dockerfile. - Предоставьте контейнеру общий доступ к файлу или каталогу на хосте с помощью"привязать крепление"и редактировать их с хоста.