Bash-Historie beibehalten
Sie können auch ein Mount verwenden, um Ihren bash-Befehlverlauf über Sitzungen / Container-Neuerstellungen hinweg beizubehalten.
Aktualisieren Sie zuerst Ihre Dockerfile so, dass jedes Mal, wenn ein Befehl in bash verwendet wird, der Verlauf aktualisiert und an einem Ort gespeichert wird, den wir beibehalten werden.
Wenn Sie einen Root-Benutzer haben, aktualisieren Sie Ihre Dockerfile mit dem Folgenden
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
&& echo "$SNIPPET" >> "/root/.bashrc"
Wenn Sie einen Nicht-Root-Benutzer haben, aktualisieren Sie Ihre Dockerfile mit dem Folgenden. Ersetzen Sie user-name-goes-here durch den Namen eines Nicht-Root-Benutzers im Container.
ARG USERNAME=user-name-goes-here
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
&& mkdir /commandhistory \
&& touch /commandhistory/.bash_history \
&& chown -R $USERNAME /commandhistory \
&& echo "$SNIPPET" >> "/home/$USERNAME/.bashrc"
Fügen Sie als Nächstes ein lokales Volume hinzu, um den Befehlverlauf zu speichern. Dieser Schritt variiert je nachdem, ob Sie Docker Compose verwenden oder nicht.
-
Dockerfile oder Image: Verwenden Sie die Eigenschaft
mounts(VS Code 1.41+) in Ihrerdevcontainer.json-Datei."mounts": [ "source=projectname-bashhistory,target=/commandhistory,type=volume" ] -
Docker Compose: Aktualisieren Sie (oder erweitern Sie) Ihre
docker-compose.ymlmit dem Folgenden für den entsprechenden Dienst.version: '3' services: your-service-name-here: volumes: - projectname-bashhistory:/commandhistory # ... volumes: projectname-bashhistory:
Schließlich, wenn Sie den Container bereits erstellt und sich damit verbunden haben, führen Sie **Dev Containers: Rebuild Container** aus der Befehlspalette (F1) aus, um die Änderung zu übernehmen. Andernfalls führen Sie **Dev Containers: Open Folder in Container...** aus, um sich mit dem Container zu verbinden.
Hinweis: Wenn auf Ihrem Host-Computer Linux (einschließlich WSL unter Windows) läuft und die UID und GID Ihres Benutzers nicht mit denen des Benutzers im Entwicklungscontainer übereinstimmen, werden die UID und GID des Entwicklungscontainer-Benutzers an die des Host-Benutzers angepasst und Sie müssen die gleiche Anpassung auf das Volume anwenden, indem Sie Folgendes zu devcontainer.json hinzufügen.
```json
"postCreateCommand": {
"Fix Volume Permissions": "sudo chown -R $(whoami): /commandhistory"
}
```