私はDockerを初めて使用し、TurnbullのDockerBookを読んでいます。基本的に、Transmission Protocolと仮想化オペレーティングシステムでコンテナがどのように機能し、イメージがどのように機能するかについての用語とプロセスを理解しています。
ただし、dockerfileがローカルの実行可能ファイルを実行しておらず、ローカルの実行可能ファイルをコンテナの/ binディレクトリに追加する方法がわかりません。
私の目標:name.exeをコンテナの/ binディレクトリに追加したいと思います。次に、次のようなDockerファイルが必要です。
FROM ubuntu
MAINTAINER [email protected]
RUN ["name.exe", "input1", "output"]
コンテナにプログラムを実行させ、出力を作成します。私の目標は、彼らが私のコンテナを私のリポジトリに置き、私が書いたすべての/ binプログラムと一緒にそれを共有することです。
しかし、私はそうすることができません。
name.exe
はdockerfileと同じディレクトリにある必要があります。 ドキュメントから :
<src>
パスはビルドのコンテキスト内にある必要があります。それはいけませんCOPY ../something /something
、dockerビルドの最初のステップは、コンテキストディレクトリ(およびサブディレクトリ)をdockerデーモンに送信することであるためです。
その場合、dockerfileは次のようになります。
FROM ubuntu
MAINTAINER [email protected]
COPY name.exe /bin/
CMD ["/bin/name.exe", "input1", "output"]
次に、次のようにビルドできます。
docker build --tag=me/my-image .
そして、あなたがそれを実行するとき(docker run me/my-image
)、実行されます/bin/name.exe input1 output
。
試してください:
FROM ubuntu
ADD name.exe /bin/name.exe
ENTRYPOINT["name.exe"]
CMD["input1","input2"]
ただし、このinput1 input2もdockerにある必要があります。そうでない場合は、実行時に-vを追加する必要があります。
基本的に、「add」コマンドはファイルをローカルシステムからDockerイメージにコピーします。
詳細については、こちらをご覧ください: https://docs.docker.com/reference/builder/#add