パブリック リポジトリからコンテナーを取得し、そこにパッケージをインストールしたいのですが、うまくいきません... 助けてください。docker のパッケージ リポジトリへの接続を設定するにはどうすればよいでしょうか。
[root@adf2 adf2_umb_docker]# docker ps -l
コンテナID イメージ コマンド 作成ステータス ポート名
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 が見つかりません
管理者からファイアウォールからの次のログについて通知がありました:
8月23日 23:02:08 adf2firewalld[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: その名前のチェーン/ターゲット/一致がありません。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' が失敗しました: iptables: その名前のチェーン/ターゲット/一致がありません。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION' が失敗しました: iptables: その名前のチェーン/ターゲット/一致がありません。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 192.168.0.0/20 ! -o docker0 -j MASQUERADE' が失敗しました: iptables: その名前のチェーン/ターゲット/一致がありません。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN' が失敗しました: iptables: 不正なルールです (そのチェーンに一致するルールが存在します?)。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP' が失敗しました: iptables: 不正なルールです (そのチェーンに一致するルールが存在します?)。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -j ACCEPT' が失敗しました: iptables: 不正なルールです (そのチェーンに一致するルールが存在します?)。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 ! -o docker0 -j ACCEPT' が失敗しました: iptables: 不正なルールです (そのチェーンに一致するルールが存在します?)。
8月23日 23:02:08 adf2firewalld[5882]: 警告: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT' が失敗しました: iptables: 不正なルールです (そのチェーンに一致するルールが存在します?)。
8月23日 23:02:09 adf2firewalld[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...) に配置したり、他のユーザーと共有したりできます。
さらに、Docker イメージに Vim をインストールすることは不要であり、Docker を適切に使用していない可能性があります。コンテナー内でファイルを作成/編集する必要がある場合は、次のいずれかを実行します。
COPY
Dockerfile内のステートメントを使用して、ビルド時にイメージにそれらを追加します。- ホスト上のファイルまたはディレクトリをコンテナと共有するには、「バインドマウント」、ホストから編集します。