web-dev-qa-db-ja.com

Dockerと.bash_history

.bash_historyボリュームをDockerコンテナーと共有して、シェルに入るたびにbash履歴をスクロールできるようにする方法はありますか?

IPythonでも同じことができるのは素晴らしいことです。

31
tzenderman

ボリュームに関するドキュメント:ホストファイルをデータボリュームとしてマウントする からの例です:

docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash

これにより、新しいコンテナーのbashシェルにドロップされ、ホストからのbash履歴が得られます。コンテナーを終了すると、ホストはコンテナー内で入力されたコマンドの履歴があります。

17
user2915097

あなたの docker-compose.override.yml

version: '2'
services:
  whatever:
    …
    volumes:
      - …
      - ~/.bash_history:/root/.bash_history
6
Édouard Lopez

IPythonの履歴を保持するには、マップされたボリューム内のどこかにIPYTHONDIR環境変数を設定できます。

docker-compose.override.ymlは次のようになります。

version: '2'
services:
  some-service:
    environment:
      - IPYTHONDIR=/app/.ipython
    volumes:
      - .:/app
5
allthethings

私の解決策は次の場合に役立ちます:

  • ローカルを共有したくない.bash_history.bash_historyコンテナ内
  • 他のシェル(魚のシェルなど)を使用しているが、保存したい.bash_historyビルド間
  • コミットしたくない.bash_history to git repoしかし、コンテナの起動時に同じディレクトリ内に自動的に作成したい

私はファイル構造を次のように想定しています:

docker-compose.yml
docker/
   \--> bash/
      \--> .bashrc
      \--> .bash_history

docker-compose.yml

web-service:
  build: .
  volumes:
  - ./docker/bash/.bashrc:/home/YOUR_USER_NAME/.bashrc
  - ./docker/bash:/home/YOUR_USER_NAME/bash

./ docker/bash/.bashrc-.bash_historyを自動的に作成します:

export HISTFILE=~/bash/.bash_history
touch $HISTFILE

オプションで、。gitignoreに追加できます。

docker/bash/.bash_history
1
jozo

Bashの場合

volumes:
        - ./.data/Shell_history/php_bash_history.txt:/home/www-data/.bash_history #bash

Shの場合

volumes:
    - ./.data/Shell_history/nginx_bash_history.txt:/root/.ash_history #sh
0
max4ever