aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Lantz <clantz@microsoft.com>2022-11-03 02:39:11 +0300
committerGitHub <noreply@github.com>2022-11-03 02:39:11 +0300
commitd003c1b1ac2ac20416218737981187e899edb0ec (patch)
tree0327278415156e0a5d5a7b42d8ec928c77fa16e6
parentb7c70d3d9ba2c1dd698e9c5bce2f2727cc6a6d31 (diff)
Add missing notes
-rw-r--r--src/docker-from-docker/NOTES.md16
-rw-r--r--src/docker-in-docker/NOTES.md6
-rw-r--r--src/node/NOTES.md18
3 files changed, 31 insertions, 9 deletions
diff --git a/src/docker-from-docker/NOTES.md b/src/docker-from-docker/NOTES.md
index 86cdd40..6729044 100644
--- a/src/docker-from-docker/NOTES.md
+++ b/src/docker-from-docker/NOTES.md
@@ -1,14 +1,12 @@
-## Supporting bind mounts from the workspace folder
-
-A common question that comes up is how you can use `bind` mounts from the Docker CLI from within the a dev container using this Feature (e.g. via `-v`). The trick is that, since you're actually using the Docker engine sitting outside of the container, the filesystem paths will be different than those in the container. You need to use the **host**'s paths instead.
+## Limitations
-> **Note:** The docker-from-docker approach does not currently enable bind mounting locations outside of the workspace folder.
+* As the name implies, the Feature is expected to work when the host is running Docker (or the OSS Moby container engine it is built on). It may be possible to get running in other container engines, but it has not been tested with them.
+* The host and the container must be running on the same chip architecture. You will not be able to use it with an emulated x86 image with Docker Desktop on an Apple Silicon Mac, for example.
+* This approach does not currently enable bind mounting the workspace folder by default, and cannot support folders outside of the workspace folder. Consider whether the [Docker-in-Docker Feature](../docker-in-docker) would better meet your needs given it does not have this limitation.
-### GitHub Codespaces
-
-In GitHub Codespaces, the workspace folder should work with bind mounts by default, so no further action is required.
+## Supporting bind mounts from the workspace folder
-### Remote - Containers
+A common question that comes up is how you can use `bind` mounts from the Docker CLI from within the a dev container using this Feature (e.g. via `-v`). If you cannot use the [Docker-in-Docker Feature](../docker-in-docker), the only way to work around this is to use the **host**'s folder paths instead of the container's paths.
A simple way to do this is to put `${localWorkspaceFolder}` in an environment variable that you then use when doing bind mounts inside the container.
@@ -24,4 +22,4 @@ Then reference the env var when running Docker commands from the terminal inside
docker run -it --rm -v ${LOCAL_WORKSPACE_FOLDER}:/workspace debian bash
```
-> **Note:** There is no `${localWorkspaceFolder}` when using the **Clone Repository in Container Volume** command ([info](https://github.com/microsoft/vscode-remote-release/issues/6160#issuecomment-1014701007)). \ No newline at end of file
+> **Note:** There is no `${localWorkspaceFolder}` when using the **Clone Repository in Container Volume** command in the VS Code Dev Containers extension ([info](https://github.com/microsoft/vscode-remote-release/issues/6160#issuecomment-1014701007)). \ No newline at end of file
diff --git a/src/docker-in-docker/NOTES.md b/src/docker-in-docker/NOTES.md
new file mode 100644
index 0000000..befd4aa
--- /dev/null
+++ b/src/docker-in-docker/NOTES.md
@@ -0,0 +1,6 @@
+## Limitations
+
+This docker-in-docker Dev Container Feature is roughly based on the [official docker-in-docker wrapper script](https://github.com/moby/moby/blob/master/hack/dind) that is part of the [Moby project](https://mobyproject.org/). With this in mind:
+* As the name implies, the Feature is expected to work when the host is running Docker (or the OSS Moby container engine it is built on). It may be possible to get running in other container engines, but it has not been tested with them.
+* The host and the container must be running on the same chip architecture. You will not be able to use it with an emulated x86 image with Docker Desktop on an Apple Silicon Mac, for example.
+
diff --git a/src/node/NOTES.md b/src/node/NOTES.md
new file mode 100644
index 0000000..a6a4aba
--- /dev/null
+++ b/src/node/NOTES.md
@@ -0,0 +1,18 @@
+## Using nvm from postCreateCommand or another lifecycle command
+
+Certain operations like `postCreateCommand` run non-interactive, non-login shells. Unfortunately, `nvm` is really particular that it needs to be "sourced" before it is used, which can only happen automatically with interactive and/or login shells. Fortunately, this is easy to work around:
+
+Just can source the `nvm` startup script before using it:
+
+```json
+"postCreateCommand": ". ${NVM_DIR}/nvm.sh && nvm install --lts"
+```
+
+Note that typically the default shell in these cases is `sh` not `bash`, so use `. ${NVM_DIR}/nvm.sh` instead of `source ${NVM_DIR}/nvm.sh`.
+
+Alternatively, you can start up an interactive shell which will in turn source `nvm`:
+
+```json
+"postCreateCommand": "bash -i -c 'nvm install --lts'"
+```
+