

mlflow という機械学習用の python ライブラリで作られた docker image があるのですが  
その中身を編集（具体的には ssh のインストールと鍵を設置）したいです

`mlflow sagemaker build-and-push-container --no-push`  
というコマンドでローカルに mlflow-pyfunc というイメージが作成されたのですが

`docker run -it mlflow-pyfunc bash`

と中に入ろうとしても

[code]

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/miniconda/lib/python3.7/site-packages/mlflow/models/container/__init__.py", line 53, in _init
        args=str(sys.argv)))
    Exception: Unrecognized command bash, full args = ['-c', 'bash']
    
[/code]

という ENTRYPOINT に書かれてあるコマンドが実行されてしまい  
コンテナを起動することができません

この ENTRYPOINT のコマンドの詳細はよくわからないのですが  
このイメージを sagemaker という AWS のサービスで使うために必要な内容だと思うので残したいです

**ENTRYPOINT を維持したまま** 中のイメージを変更する方法はないでしょうか

\--

### 追記

docker run のオプションに --entrypoint でエントリポイントを上書きする方法はあるみたいで

[code]

    docker run -it --name mlflow-pyfunc --entrypoint '' mlflow-pyfunc bash -c "apt-get -y update; apt-get -y install openssh-client; apt-get -y clean"
    
    docker cp ssh_files/. mlflow-pyfunc:.ssh
    
[/code]

でコンテナ上のファイルの設置はできたのですが

`docker commit mlflow-pyfunc mlflow-pyfunc`

でイメージに反映してしまうと ENTRYPOINT も上書きされてしまい  
この後このイメージの本来の使い方ができなくなります


CC BY-SA 4.0
2020-01-30T03:12:47.540
62652
2023-06-08T03:04:30.590
2020-01-31T07:46:19.027
question
docker
ENTRYPOINT を一時的に無視して docker コンテナを起動したい


docker runは、「新しくコンテナを作成」するコマンドです。  
やりたいことは起動しているコンテナに対してコマンドを実行することでしょうから、docker execを使いましょう。


CC BY-SA 4.0
2020-02-02T05:37:40.653
62713
2020-02-02T05:37:40.653
21329
62652
answer


ENTRYPOINT を使ったことがないので残せるかは不明ですが  
Dockerfile に FROM でよみこんで別のイメージを生成するのはだめなんでしょうか

[code]

    FROM mlflow-pyfunc
    RUN apt-get -y update; apt-get -y install openssh-client; apt-get -y clean
    COPY ssh_files /root/.ssh
    
[/code]

`docker build -t my-image .`


CC BY-SA 4.0
2020-02-04T13:03:29.370
62774
2020-02-04T13:03:29.370
62652
answer