Bash 기록 유지
세션 또는 컨테이너 재빌드를 통해 bash 명령 기록을 유지하기 위해 마운트를 사용할 수도 있습니다.
먼저 Dockerfile을 업데이트하여 bash에서 명령이 사용될 때마다 기록이 업데이트되고 유지할 위치에 저장되도록 합니다.
루트 사용자가 있는 경우 다음을 사용하여 Dockerfile을 업데이트합니다.
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
&& echo "$SNIPPET" >> "/root/.bashrc"
루트가 아닌 사용자가 있는 경우 다음을 사용하여 Dockerfile을 업데이트합니다. user-name-goes-here를 컨테이너의 루트가 아닌 사용자 이름으로 바꾸십시오.
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"
다음으로, 명령 기록을 저장할 로컬 볼륨을 추가합니다. 이 단계는 Docker Compose 사용 여부에 따라 다릅니다.
-
Dockerfile 또는 이미지:
devcontainer.json파일에서mounts속성(VS Code 1.41+)을 사용합니다."mounts": [ "source=projectname-bashhistory,target=/commandhistory,type=volume" ] -
Docker Compose: 해당 서비스에 대해 다음을 사용하여
docker-compose.yml을 업데이트하거나 (확장) 합니다.version: '3' services: your-service-name-here: volumes: - projectname-bashhistory:/commandhistory # ... volumes: projectname-bashhistory:
마지막으로, 컨테이너를 이미 빌드하고 연결한 경우 명령 팔레트(F1)에서 **Dev Containers: Rebuild Container**를 실행하여 변경 사항을 적용합니다. 그렇지 않으면 **Dev Containers: Open Folder in Container...**를 실행하여 컨테이너에 연결합니다.
참고: 호스트 머신이 Linux(Windows의 WSL 포함)를 실행 중이고 해당 사용자의 UID 및 GID가 개발 컨테이너의 사용자와 일치하지 않는 경우, 개발 컨테이너 사용자의 UID 및 GID가 호스트 사용자의 UID 및 GID로 업데이트되며, devcontainer.json에 다음을 추가하여 볼륨에도 동일한 업데이트를 적용해야 합니다.
```json
"postCreateCommand": {
"Fix Volume Permissions": "sudo chown -R $(whoami): /commandhistory"
}
```