Documentation

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

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

Tento návod pokrývá dvě běž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ů.

Projekty drž v Linuxovém filesystemu, tedy typicky v ~/projects. 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

1. Připrav projekt

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

/workspace v kontejneru není složka na hostu. Je to jen pracovní adresář uvnitř image.

2. Zprovozni 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ěř:

docker --version
docker ps

Pokud ve WSL chybí Docker CLI:

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

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

Pak přidej uživatele do skupiny docker:

sudo usermod -aG docker $USER
newgrp docker
docker ps

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

3. Oprav docker.sock, pokud hlásí permission denied

Když uvidíš chybu:

permission denied while trying to connect to the Docker daemon socket

ověř:

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

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

wsl --shutdown

4. Připrav image pro Codex

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

Pokud jsi ve firemní síti a potřebuješ vlastní CA certifikát:

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

Edituj Dockerfile:

nano ~/codex-docker/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š, vynech řádky COPY corp-ca.crt ... a RUN update-ca-certificates.

Image sestav:

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

Ověř instalaci Codexu:

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

5. Otestuj síť a TLS z kontejneru

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

Podstatné je, aby spojení proběhlo bez TLS chyby. HTTP status není pro tento test důležitý.

6. Připrav trvalé přihlášení

mkdir -p ~/.codex
chmod 700 ~/.codex
sudo chown -R "$USER:$USER" ~/.codex

Tento adresář se bude mountovat do kontejneru, takže login přežije restart WSL i Ubuntu.

7. Přidej funkci codexsafeproxy

Do ~/.bash_aliases přidej:


codexupdate() {
  docker build --pull -t codexbox:node20-ca ~/codex-docker
}

csf() {
  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:

source ~/.bash_aliases

Použití:

cd ~/projects/mojeapp
codexsafeproxy

Funkce se nejdřív pokusí obnovit poslední relaci. Pokud žádná není, spustí novou.

8. Přihlaš se

Při prvním spuštění se přihlas. Pokud zlobí localhost callback, použij:

codex login --device-auth

Ve WSL a Dockeru je to obvykle nejspolehlivější varianta.

9. Nejčastější problémy

docker: command not found

Na WSL chybí Docker 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:

codex login --device-auth

Po restartu chce Codex znovu login

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

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

TLS chyba z kontejneru

Obvykle chybí firemní CA v image.

Shrnutí

Po tomto postupu máš jeden stručný a funkční návod pro WSL2 i čisté Ubuntu, bez nutnosti instalovat Codex přímo na hosta.

© www.duckd.cz
Grav + Twigatedo-quark2026-04-25