1
0
mirror of https://github.com/docker/docs.git synced 2026-10-23 18:09:02 +03:00
Files
docs/layouts/_shortcodes/sandbox-auth.html
David Karlsson b98c400647 docs: prototype new get started journeys (#25986)
## Summary

Prototypes a task-first Get started experience organized around three
short journeys:

- Containerization: run a container and application stack, build an
image, and share it.
- AI development: move an existing full-autonomy coding-agent workflow
into a disposable Docker Sandbox.
- Administration: invite a pilot user, apply a Docker Desktop policy,
and verify the managed experience.

The change replaces the existing Get started landing content with a
compact journey selector, adds direct installation paths for Docker and
Docker Sandboxes above the tutorials, adds the tutorials as a
collapsible sidebar group, and updates homepage and `llms.txt` discovery
paths. The container and sandbox tutorials include focused next steps
into relevant concept and manual pages.

The superseded Introduction series and its unused images are removed.
Its published routes and legacy aliases, including the workshop routes
consolidated on `main`, redirect to the replacement container tutorial
or the Get Docker page. Inbound documentation links point to the new
tutorial.

The existing Docker concepts content remains available while this
direction is evaluated.

@netlify /get-started/

## Deploy preview

- [Get started landing
page](https://deploy-preview-25986--docsdocker.netlify.app/get-started/)
- [Containerization
tutorial](https://deploy-preview-25986--docsdocker.netlify.app/get-started/tutorials/run-an-app/)
- [AI agent
tutorial](https://deploy-preview-25986--docsdocker.netlify.app/get-started/tutorials/run-an-agent/)
- [Administrator
tutorial](https://deploy-preview-25986--docsdocker.netlify.app/get-started/tutorials/admin-set-up/)

Generated by Codex

---------

Co-authored-by: Codex <noreply@openai.com>
2026-09-07 13:38:47 +02:00

97 lines
4.4 KiB
HTML

<div
class="not-prose my-6 overflow-hidden rounded-lg border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900"
x-data="{ agent: 'codex', auth: 'codex-subscription' }"
>
<div
class="grid gap-4 border-b border-gray-200 bg-gray-50 p-4 sm:grid-cols-2 dark:border-gray-700 dark:bg-gray-800/50"
>
<label
class="grid gap-1.5 text-sm font-medium text-gray-700 dark:text-gray-200"
>
Agent
<select
class="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-gray-900 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:text-gray-100 dark:focus:border-blue-400"
x-model="agent"
@change="auth = { codex: 'codex-subscription', claude: 'claude-subscription', opencode: 'opencode-anthropic' }[$event.target.value]"
>
<option value="codex">Codex</option>
<option value="claude">Claude Code</option>
<option value="opencode">OpenCode</option>
</select>
</label>
<label
class="grid gap-1.5 text-sm font-medium text-gray-700 dark:text-gray-200"
>
Authentication
<select
class="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-gray-900 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:text-gray-100 dark:focus:border-blue-400"
x-model="auth"
x-show="agent === 'codex'"
>
<option value="codex-subscription">ChatGPT subscription</option>
<option value="codex-openai">OpenAI API key</option>
</select>
<select
class="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-gray-900 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:text-gray-100 dark:focus:border-blue-400"
x-model="auth"
x-cloak
x-show="agent === 'claude'"
>
<option value="claude-subscription">Claude subscription</option>
<option value="claude-anthropic">Anthropic API key</option>
</select>
<select
class="w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-gray-900 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none dark:border-gray-600 dark:bg-gray-900 dark:text-gray-100 dark:focus:border-blue-400"
x-model="auth"
x-cloak
x-show="agent === 'opencode'"
>
<option value="opencode-anthropic">Anthropic API key</option>
<option value="opencode-openai">OpenAI API key</option>
<option value="opencode-openrouter">OpenRouter API key</option>
<option value="opencode-google">Google API key</option>
</select>
</label>
</div>
<div class="p-4 sm:p-5" aria-live="polite">
<div x-show="auth === 'codex-subscription'">
<p class="m-0 text-gray-700 dark:text-gray-200">
No secret configuration is needed. When you run Codex, <code>sbx</code>
opens the OpenAI sign-in flow on your host before creating the sandbox.
</p>
</div>
<div x-cloak x-show="auth === 'claude-subscription'">
<p class="m-0 text-gray-700 dark:text-gray-200">
No secret configuration is needed. After Claude Code starts in the
sandbox, enter <code>/login</code> and sign in with your Claude account.
</p>
</div>
{{ range $choice := slice
(dict "id" "codex-openai" "service" "openai" "provider" "OpenAI")
(dict "id" "claude-anthropic" "service" "anthropic" "provider" "Anthropic")
(dict "id" "opencode-anthropic" "service" "anthropic" "provider" "Anthropic")
(dict "id" "opencode-openai" "service" "openai" "provider" "OpenAI")
(dict "id" "opencode-openrouter" "service" "openrouter" "provider" "OpenRouter")
(dict "id" "opencode-google" "service" "google" "provider" "Google")
}}
<div x-cloak x-show="auth === '{{ $choice.id }}'">
<p class="mt-0 mb-3 text-gray-700 dark:text-gray-200">
Store your {{ $choice.provider }} API key in the host credential
store. The command prompts for the key without displaying it:
</p>
<div
class="syntax-light dark:syntax-dark overflow-hidden rounded-md border border-gray-200 dark:border-gray-700"
>
{{ transform.Highlight
(printf "$ sbx secret set %s" $choice.service)
"console" ""
}}
</div>
</div>
{{ end }}
</div>
</div>