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/cani 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
- Nainstaluj WSL2 a Ubuntu.
- Nainstaluj Docker Desktop.
- V Docker Desktop zapni:
Use the WSL 2 based engineWSL Integrationpro 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.