---
title: 'Codex CLI v Dockeru: Windows 11 + WSL2 i čisté Ubuntu'
url: 'https://duckd.cz/en/home/codex-cli-docker-wsl2-ubuntu'
markdown: 'https://duckd.cz/en/home/codex-cli-docker-wsl2-ubuntu.md'
lang: en
date: '2026-09-17'
description: 'Codex CLI v Dockeru: Windows 11 + WSL2 i čisté Ubuntu Tento návod sjednocuje dvě funkční varianty: Windows 11 + WSL2 (Ubuntu) + Docker Desktop čisté Ubuntu + Docker Engine Cíl je stejný: spouštět Codex CLI v izolovaném kontejneru jen nad aktuálním projektem, s trvalým loginem a bez zbytečných pro…'
taxonomy:
  category:
    - linux
    - windows
    - ai
  tag:
    - wsl2
    - ubuntu
    - docker
    - codex
    - cli
    - sandbox
---

Documentation

# Codex CLI v Dockeru: Windows 11 + WSL2 i čisté Ubuntu

 [› Obsah stránky](#content) [› Zpět](https://duckd.cz/en) [› Nahoru](#top) 

# Codex CLI v Dockeru: Windows 11 + WSL2 i čisté Ubuntu

Tento návod sjednocuje dvě funkční varianty:

- **Windows 11 + WSL2 (Ubuntu) + Docker Desktop**
- **čisté Ubuntu + Docker Engine**

Cíl je stejný: spouštět Codex CLI v izolovaném kontejneru jen nad aktuálním projektem, s trvalým loginem a bez zbytečných problémů.

> Doporučení: projekty drž lokálně v Linuxovém filesystemu. Ve WSL tedy v `~/projects`, na Ubuntu stejně. Nepracuj přímo z `/mnt/c` ani z NAS mountu.

## Co budeš mít na konci

- funkční Docker bez `sudo`
- image `codexbox:node20-ca`
- Codex spuštěný jen nad aktuálním projektem
- trvalé přihlášení přes mount `~/.codex`
- jednoduchou funkci `codexsafeproxy`
- otestované TLS spojení z kontejneru

## Kdy použít kterou variantu

### Varianta A: Windows 11 + WSL2

Použij ji, když pracuješ na Windows a chceš vyvíjet ve WSL.

### Varianta B: čisté Ubuntu

Použij ji, když máš samostatný Linux stroj nebo VM a WSL vůbec nepotřebuješ.

## 1. Připrav projekty

V Linuxu si udělej pracovní adresář:

```bash
mkdir -p ~/projects/mojeapp
cd ~/projects/mojeapp
```

`/workspace` v kontejneru není skutečná složka na hostu. Je to jen pracovní adresář uvnitř image. Tvoje data jsou ta složka, kterou mountneš přes `-v`.

## 2. Docker

### Varianta A: Windows 11 + WSL2

1. Nainstaluj WSL2 a Ubuntu.
2. Nainstaluj Docker Desktop.
3. V Docker Desktop zapni: 
    - `Use the WSL 2 based engine`
    - `WSL Integration` pro tvoje Ubuntu

Ve WSL ověř:

```bash
docker --version
docker ps
```

Pokud ve WSL chybí Docker CLI, doinstaluj balíček `docker.io`:

```bash
sudo apt update
sudo apt install -y docker.io
```

Na WSL s Docker Desktop nespouštěj vlastní Docker daemon přes `systemctl`.

### Varianta B: čisté Ubuntu

Nainstaluj Docker Engine a ověř běh:

```bash
sudo apt update
sudo apt install -y docker.io ca-certificates curl
sudo systemctl enable docker
sudo systemctl start docker
docker --version
sudo docker ps
```

Přidej se do skupiny `docker`:

```bash
sudo usermod -aG docker $USER
newgrp docker
docker ps
```

Pokud se změna nechytí, odhlas se a přihlas znovu.

## 3. Oprava `permission denied` na `docker.sock`

Když uvidíš chybu:

```text
permission denied while trying to connect to the Docker daemon socket
```

ověř:

```bash
ls -l /var/run/docker.sock
groups
docker ps
```

Na WSL někdy pomůže i úplné vypnutí instance. Tento příkaz spusť ve Windows PowerShellu nebo CMD, ne uvnitř Ubuntu:

```powershell
wsl --shutdown
```

Pak znovu otevři Ubuntu.

## 4. Připrav build adresář pro Codex image

```bash
mkdir -p ~/codex-docker
cd ~/codex-docker
```

Pokud jsi ve firemní síti a potřebuješ vlastní CA certifikát, zkopíruj ho sem:

```bash
cp /usr/local/share/ca-certificates/corp-ca.crt ~/codex-docker/
```

Pokud firemní CRT nepotřebuješ, vynech v Dockerfile řádky `COPY corp-ca.crt ...` a `RUN update-ca-certificates`.

## 5. Dockerfile

Použij tento Dockerfile:

```dockerfile
FROM node:20

USER root
RUN apt-get update && apt-get install -y ca-certificates curl \
  && rm -rf /var/lib/apt/lists/*

COPY corp-ca.crt /usr/local/share/ca-certificates/corp-ca.crt
RUN update-ca-certificates

RUN npm install -g npm@11.11.0
RUN npm install -g @openai/codex@latest

USER node
WORKDIR /workspace
```

Pokud firemní CA nepotřebuješ, může Dockerfile vypadat i takto:

```dockerfile
FROM node:20

USER root
RUN apt-get update && apt-get install -y ca-certificates curl \
  && rm -rf /var/lib/apt/lists/*

RUN npm install -g npm@11.11.0
RUN npm install -g @openai/codex@latest

USER node
WORKDIR /workspace
```

### Poznámky

- `npm@latest` klidně použít můžeš, ale fixní verze je stabilnější pro návod.
- `WORKDIR /workspace` jen nastaví výchozí adresář v kontejneru.
- Codex se instaluje v image, ne na hosta. Samostatná instalace `npm install -g @openai/codex` mimo Docker tady není nutná.
- Pokud certifikát nepoužíváš, Dockerfile bez těch dvou řádků kolem `corp-ca.crt` je správně.

## 6. Build image

```bash
docker build --pull --no-cache -t codexbox:node20-ca ~/codex-docker
```

Ověření verze Codexu v image:

```bash
docker run --rm codexbox:node20-ca codex --version
```

> Poznámka: hláška o legacy builderu není sama o sobě chyba.

## 7. Otestuj komunikaci z kontejneru

Stačí jeden jednoduchý test:

```bash
docker run --rm -it codexbox:node20-ca sh -lc 'curl -I https://chatgpt.com'
```

Tím ověříš síťovou komunikaci i TLS. Není důležité, jestli vrácený HTTP status bude `200`, `301`, `302`, `401` nebo `403`; pro tento test je podstatné, že spojení a certifikáty projdou bez TLS chyby.

Pokud test selže, bývá problém v chybějícím firemním CA certifikátu v image.

## 8. Trvalé přihlášení

Vytvoř persistentní adresář pro přihlášení:

```bash
mkdir -p ~/.codex
```

Díky mountu se login zachová mezi kontejnery i po restartu WSL nebo Ubuntu.

## 9. Funkce `codexsafeproxy`

Do `~/.bashrc` přidej:

```bash
codexsafeproxy() {
  local PROJ="$PWD"
  local PROJ_ID
  PROJ_ID="$(printf '%s' "$PROJ" | sha1sum | awk '{print $1}')"

  docker run --rm -it -u node \
    -e HOME=/home/node \
    -v "$HOME/.codex":/home/node/.codex \
    -v "$PROJ":"/workspaces/$PROJ_ID" \
    -w "/workspaces/$PROJ_ID" \
    --cap-drop=ALL --security-opt no-new-privileges \
    codexbox:node20-ca sh -lc '
      codex resume --last || exec codex
    '
}
```

Načti změny:

```bash
source ~/.bashrc
```

Použití:

```bash
cd ~/projects/mojeapp
codexsafeproxy
```

Tato varianta je praktičtější než starý alias `codexsafe`, protože odděluje pracovní adresáře podle hashovaného `PROJ_ID`.

Funkce se nejdřív pokusí obnovit poslední relaci přes `codex resume --last`. Pokud žádná není, spustí novou přes `codex`.

## 10. Login

Při prvním spuštění se přihlas. Když bude zlobit callback na localhost, použij device auth:

```bash
codex login --device-auth
```

To je nejspolehlivější hlavně ve WSL a Dockeru.

## 11. Co není nutné

- Není nutné zavádět speciální funkci typu `codexnew`, pokud už máš `codexsafeproxy`.
- Není nutné instalovat Codex i na hosta, pokud ho spouštíš jen z Docker image.
- Není nutné řešit `/workspace` jako reálnou složku v home. Je to jen pracovní cesta uvnitř kontejneru.

## 12. Nejčastější problémy

### `docker: command not found`

Na WSL chybí CLI nebo není zapnutá WSL integrace v Docker Desktop.

### `permission denied ... docker.sock`

Uživatel není ve skupině `docker`, nebo je nutný nový login či `wsl --shutdown`.

### Login nefunguje přes localhost callback

Použij:

```bash
codex login --device-auth
```

### Po restartu chce Codex znovu login

Zkontroluj, že je v `docker run` opravdu přítomný tento mount:

```bash
-v "$HOME/.codex":/home/node/.codex
```

### TLS chyba z kontejneru

Obvykle chybí firemní CA v image.

### NPM hlásí novou major verzi

Pro návod je lepší fixní verze. `npm@latest` může později změnit chování.

## Shrnutí

© www.duckd.cz

`Grav + Twig` • `atedo-quark` • `2026-09-24`

---

## Navigation

- Parent: [Home](https://duckd.cz/en/index.md)
- Previous: [Vyvýšený záhon](https://duckd.cz/en/home/vyvyseny-zahon.md)
- Next: [Codex CLI v Dockeru: Windows 11 + WSL2 i čisté Ubuntu v2](https://duckd.cz/en/home/codex-cli-docker-wsl2-ubuntu-v2.md)
