|
1 | 1 | <!-- |
2 | 2 | SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. |
3 | 3 | SPDX-License-Identifier: Apache-2.0 |
4 | | -
|
5 | | -Licensed under the Apache License, Version 2.0 (the "License"); |
6 | | -you may not use this file except in compliance with the License. |
7 | | -You may obtain a copy of the License at |
8 | | -
|
9 | | -http://www.apache.org/licenses/LICENSE-2.0 |
10 | | -
|
11 | | -Unless required by applicable law or agreed to in writing, software |
12 | | -distributed under the License is distributed on an "AS IS" BASIS, |
13 | | -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
14 | | -See the License for the specific language governing permissions and |
15 | | -limitations under the License. |
16 | 4 | --> |
17 | 5 |
|
18 | 6 | # NVIDIA Dynamo Development Environment |
19 | 7 |
|
20 | 8 | > Warning: Dev Containers (aka `devcontainers`) is an evolving feature and we are not testing in CI. Please submit any problem/feedback using the issues on GitHub. |
21 | 9 |
|
| 10 | +## Known Issues |
| 11 | + |
| 12 | +### Docker Version Compatibility |
| 13 | + |
| 14 | +**Docker 29.x has compatibility issues with Dev Containers (by Anysphere):** |
| 15 | +- It is known that Docker Engine version **29.0.1** (released November 14, 2025) may cause Dev Containers to hang all the time, rendering it unusable |
| 16 | +- The Dev Containers extension (v1.0.26) and devcontainer CLI (v0.75.0) were not tested against Docker 29.x |
| 17 | +- Symptoms: Container builds successfully but connection hangs, requiring a manual reload to connect |
| 18 | +- This may be fixed in a later version of the Anysphere Dev Containers extension and/or Docker Engine patch |
| 19 | + |
| 20 | +**Recommended Docker Version:** |
| 21 | +- Use Docker Engine **28.5.2** or earlier for stable Dev Container operation |
| 22 | +- Docker 27.x and 28.x series are confirmed working with current Dev Containers tooling |
| 23 | + |
22 | 24 | ## Framework-Specific Devcontainers |
23 | 25 |
|
24 | 26 | This directory contains framework-specific devcontainer configurations generated from a Jinja2 template: |
@@ -79,16 +81,16 @@ graph TB |
79 | 81 | HFCACHE["~/.cache/huggingface<br/>(host cache)"] |
80 | 82 | GITCONFIG["~/.gitconfig<br/>(host git config)"] |
81 | 83 |
|
82 | | - subgraph CONTAINER["Docker Container<br/>vsc-dynamo-SHA-uid<br/>Running as: ubuntu user"] |
83 | | - MOUNT["/home/ubuntu/dynamo<br/>(mounted directory)"] |
84 | | - HFMOUNT["/home/ubuntu/.cache/huggingface<br/>(mounted cache)"] |
85 | | - GITCONFIGCOPY["/home/ubuntu/.gitconfig<br/>(via Dev Container setting)"] |
| 84 | + subgraph CONTAINER["Docker Container<br/>vsc-dynamo-SHA-uid<br/>Running as: dynamo user"] |
| 85 | + MOUNT["/home/dynamo/dynamo<br/>(mounted directory)"] |
| 86 | + HFMOUNT["/home/dynamo/.cache/huggingface<br/>(mounted cache)"] |
| 87 | + GITCONFIGCOPY["/home/dynamo/.gitconfig<br/>(via Dev Container setting)"] |
86 | 88 | TOOLS["rust-analyzer<br/>cargo<br/>etc."] |
87 | 89 | end |
88 | 90 |
|
89 | 91 | IMAGE["Docker Image<br/>dynamo:latest-{framework}-local-dev<br/>(vllm/sglang/trtllm)"] |
90 | 92 |
|
91 | | - IMAGE -->|"docker run<br/>as ubuntu user"| CONTAINER |
| 93 | + IMAGE -->|"docker run<br/>as dynamo user"| CONTAINER |
92 | 94 | end |
93 | 95 |
|
94 | 96 | TERM -->|"SSH Connection"| DIR |
@@ -260,9 +262,9 @@ File Structure: |
260 | 262 | - Local dynamo repo mounts to `/workspace` |
261 | 263 | - Python venv in `/opt/dynamo/venv` |
262 | 264 | - Build artifacts in `/workspace/target` |
263 | | -- Hugging Face cache preserved between sessions (either mounting your host .cache to the container, or your `HF_HOME` to `/home/ubuntu/.cache/huggingface`) |
264 | | -- Bash memory preserved between sessions at `/home/ubuntu/.commandhistory` using docker volume `dynamo-bashhistory` |
265 | | -- Precommit preserved between sessions at `/home/ubuntu/.cache/precommit` using docker volume `dynamo-precommit-cache` |
| 265 | +- Hugging Face cache preserved between sessions (either mounting your host .cache to the container, or your `HF_HOME` to `/home/dynamo/.cache/huggingface`) |
| 266 | +- Bash memory preserved between sessions at `/home/dynamo/.commandhistory` using docker volume `dynamo-bashhistory` |
| 267 | +- Precommit preserved between sessions at `/home/dynamo/.cache/precommit` using docker volume `dynamo-precommit-cache` |
266 | 268 |
|
267 | 269 | ## Documentation |
268 | 270 |
|
@@ -397,8 +399,8 @@ docker volume prune -f |
397 | 399 | **Note:** This resets bash history and pre-commit cache. |
398 | 400 |
|
399 | 401 | **Volume Mounts in devcontainer.json:** |
400 | | -- `dynamo-bashhistory` → `/home/ubuntu/.commandhistory` (bash history) |
401 | | -- `dynamo-precommit-cache` → `/home/ubuntu/.cache/pre-commit` (pre-commit cache) |
| 402 | +- `dynamo-bashhistory` → `/home/dynamo/.commandhistory` (bash history) |
| 403 | +- `dynamo-precommit-cache` → `/home/dynamo/.cache/pre-commit` (pre-commit cache) |
402 | 404 |
|
403 | 405 | ### Permission Issues |
404 | 406 |
|
|
0 commit comments