2015-02-02 18 views
18

Có cách nào để chia sẻ một khối lượng .bash_history với một thùng chứa docker để mỗi khi tôi đi vào một vỏ tôi có lịch sử bash của tôi có sẵn để di chuyển qua?Docker và .bash_history

Sẽ thật tuyệt vời để có thể làm điều tương tự với IPython.

Trả lời

13

Đây là ví dụ từ documentation about volume: Mount a host file as a data volume:

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

này sẽ thả bạn vào một vỏ bash trong một container mới, bạn sẽ có lịch sử bash của bạn từ các máy chủ và khi bạn thoát khỏi container, máy chủ sẽ có lịch sử của các lệnh được nhập trong khi trong vùng chứa.

+0

tôi nên đã thêm một nhận xét về vấn đề này - Tôi thấy điều này và thử nó, nhưng không thành công. Dường như các lệnh tôi chạy bên trong vùng chứa không cập nhật tệp '.bash_history'. Tôi đang chạy các lệnh bên trong container như người dùng root. Bất kỳ ý tưởng? – tzenderman

+0

Có phải cùng một người dùng trên máy chủ và trong vùng chứa không? – user2915097

+0

Không, người dùng trên máy chủ của tôi là người dùng của tôi và người dùng bên trong vùng chứa là gốc. Nhưng tôi không nghĩ rằng nên thay đổi bất cứ điều gì? Khi tôi ở trong thùng chứa, có vẻ như không có tệp .bash_history ở bất kỳ nơi nào được ghi vào khi tôi thực thi lệnh. – tzenderman

3

Trong docker-compose.override.yml của bạn:

version: '2' 
services: 
    whatever: 
    … 
    volumes: 
     - … 
     - ~/.bash_history:/root/.bash_history 
+0

Tài liệu hướng dẫn rằng các ổ đĩa được gắn phải bắt đầu bằng '/'. Nó không làm việc cho tôi với '~'. – aghull

+0

@aghull bạn có thể thay thế '~' bằng giá trị của '$ HOME', nhưng nó sẽ ít di động hơn –

4

Để giữ lịch sử IPython, bạn có thể thiết lập các biến môi trường IPYTHONDIR đến nơi nào đó trong khối lượng ánh xạ của bạn.

Các docker-compose.override.yml sẽ trông như thế này:

version: '2' 
services: 
    some-service: 
    environment: 
     - IPYTHONDIR=/app/.ipython 
    volumes: 
     - .:/app 
Các vấn đề liên quan