ベースイメージスクラッチ付きドッカーコンテナへの取り付け? -- docker フィールド 関連 問題

Attaching to a docker container with base image scratch?












15
vote

問題

日本語

私は次のようにドッカーファイルを持っています:

<事前> <コード> FROM scratch ARG VERSION=NOT_SET ENV VERSION $VERSION COPY foobar foobar COPY foobar-*.yaml /etc/ COPY jwt/ /etc/jwt/ EXPOSE 8082 ENTRYPOINT ["./foobar"] CMD ["-config", "/etc/foobar-local.yaml"]

今、Docker PSは次のことを示しています:

<事前> <コード> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 653a9b287eb6 7693481.dkr.ecr.us-east-1.amazonaws.com/foobar:0.0.1 "./foobar -config /e" About a minute ago Up About a minute foobar

次のコマンドでこのコンテナにexer実行しようとします。

<事前> <コード> sudo docker exec -it 653a9b287eb6 /bin/bash

次のエラーを示します。

<事前> <コード> rpc error: code = 2 desc = oci runtime error: exec failed: exec: "/bin/bash": stat /bin/bash: no such file or directory
英語

I have a docker file as follows:

FROM scratch  ARG VERSION=NOT_SET ENV VERSION $VERSION  COPY foobar foobar COPY foobar-*.yaml /etc/ COPY jwt/ /etc/jwt/  EXPOSE 8082  ENTRYPOINT ["./foobar"] CMD ["-config", "/etc/foobar-local.yaml"] 

Now, docker ps shows the following:

CONTAINER ID        IMAGE                                                               COMMAND                  CREATED              STATUS              PORTS                         NAMES 653a9b287eb6        7693481.dkr.ecr.us-east-1.amazonaws.com/foobar:0.0.1           "./foobar -config /e"   About a minute ago   Up About a minute                                 foobar 

When I try to exec to this container with the following command:

sudo docker exec -it 653a9b287eb6 /bin/bash 

it shows the following error:

rpc error: code = 2 desc = oci runtime error:  exec failed: exec: "/bin/bash": stat /bin/bash: no such file or directory 
</div
  

回答リスト

15
 
vote

空のベースイメージにシェルを追加する必要があります。

今、あなたのイメージには実行可能ファイルのみが含まれています。

問題17896

FROM scratch は文字通り、空のゼロバイトのイメージ<コード> / ファイルシステムです。 たとえば、 <コード> を参照してください。合計860バイト

Docker Execを介して添付するシェルが必要な場合は、 small 画像から始めてください。 / "REL =" NOREFERRER "> Alpine

MsgBox0 だけがあります。 MsgBox2 を追加する必要があります。コード>、 user2915097
 

You need to add a shell to your empty base image (SCRATCH) in order to attach to it.

Right now, your image only include an executable, which is not enough.

As mentioned in issue 17896

FROM scratch literally is an empty, zero-byte image / filesystem, where you add everything yourself.
See for example, the hello-world which, produces an image that's 860 bytes total.

If you need a shell to attach to it through docker exec, start from a small image like Alpine (which has only /bin/sh though: you would need apk add bash to add bash, as commented below by user2915097).

</div
 
 
       
       
0
 
vote

Kubernetesを使用している場合は、ScratchからBusyBox Onをインストールするリポジがあります。-image: HTTPS: //github.com/phzfi/scratch-debug

原則として、同じプロセスを使用することで、BusyBoxやShellを他のDockerコンテナにインストールすることもできますが、まだデバッグ用のスクリプトを作成する必要があります。 Docker-ComposeとSwarm Orchestrators。

 

If you are using Kubernetes, I have a repo that installs busybox on FROM scratch -image: https://github.com/phzfi/scratch-debug

In principle, by using the same process, you can also install busybox and shell on any other docker container, but I need to still make a script for debugging e.g. docker-compose and swarm orchestrators.

</div
 
 

関連する質問

1  Docker内のMySQLに接続します  ( Connect to mysql inside docker ) 
Official MySQL Image Docker HubからPorts 3333:3306外部から接続するには。 /etc/mysql/my.cnf 内部のバインドIPをこのコンテナのIPに変更し、次のようにしてユーザーの許可を与えなければなら...

0  Dockerコンテナ内で実行しているときの異なる結果  ( Different results when running inside a docker container ) 
このlibaioサンプルに基づいていくつかのコードを実行しようとしています。 https://oxnz.github.io/2016/10 / 13 / Linux-AIO /#例-1 Libaioのドキュメントに従ってO_Directフラグを追加しま...

19  WindowsのCohabitation Docker&VirtualBox  ( Cohabitation docker virtualbox on windows ) 
DockerはHyper V機能を使用して、Dockerが正しく機能するように有効にする必要があります。 ただし、VirtualBoxが正しく機能するのにハイパーV機能を無効にする必要があります(ゲストを作成してそれらをエミュレートすることは可能ですが、32...

0  DockerのNginx - デーモン化してBashに添付してください[閉じる]  ( Nginx on docker daemonize and attach to bash ) 
閉鎖。この質問はもっと焦点を絞ったにする必要があります。現在答えを受け付けていません。 この質問を改善したいですか? ...

0  Docker NEO4JはリモートURLからCSVをロードするために接続できません  ( Docker neo4j cannot connect to load csv from remote url ) 
次のDockerを使用しています。 .com / u / tpires / no4j / Dockerを起動しました<コード> 99887761 コンテナ: <事前> <コード> docker run -i -t -d --name neo4j --ca...

3  ドッカーを使ってリリースを行う方法は?  ( How to use docker to make releases ) 
いつか私は会社とのインタビューをし、彼らのアプリはDockerと包装されていると述べました。また彼らは、彼らがコードを修正したときにそれらがコードをコミットするだけでなく画像全体をコミットすると言った。そのため、リリースはgit(?)からコミットを押すだけで構...

0  nginx daemonset - バインドするIPアドレスを選択するにはどうすればよいですか。  ( Nginx daemonset how do i select which ip address to bind to ) 
CentOS8上でDocker Enterprise K8 Bare Metalクラスタを実行し、公式ドキュメントを搭載し、gitからのマニフェストファイルを使用してNGINXをインストールした後: https://docs.nginx.com/nginx-...

0  Dockerを使用してテスト環境を作成することは可能ですか?  ( Is it possible to use docker to temporary create a test environment ) 
オープンポリシーエージェントサービスに送信されるアクセスポリシーを格納するnode.jsサービスを持っています。アプリケーションが起動します。ポリシーはテストになることができますが、それらは私のサービスの一部ではないオープンポリシーエージェント環境で実行する...

3  ドッカー画像/コンテナが更新されていません  ( Docker image container not updating ) 
ドッケルイメージを持っている場合は、DockerImage / Testを呼び出します。アップデートするたびに、タグをインクリメントするので、DockerImage / Test:1、DockerImage / Test:2など。 Dockerを使ってローカ...

0  Pythonを介して自動的にテーブルを作成するMariadBにCSVファイルをロードする  ( Load csv file into mariadb that automatically creates table through python ) 
Mariadb DockerコンテナのデータベースにアップロードしたいCSVファイルは、テーブルの列名としてCSVファイルのヘッダーを使用してCSVファイルからテーブルを自動的に作成します。 ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有