Executing podman inside docker runner

Summary

I had some issue with space on one my runners and used this circumstance to also upgrade the runner.

The runner is configured as linux runner with docker executor.

After Upgraded from manual installation to debian poackage.

Version: 17.11.0 -> 18.6.1

After the upgrade the job I was running fails with:

Running command:
  podman build -f context/Containerfile -t gitlab.fb10.fh-dortmund.de:5005/fb10-it/ansible/gitlab-fb10/gitlab-ee:latest context
cannot clone: Operation not permitted
Error: cannot re-exec process

I try to build an ansible execution environment which uses podman to build and push the image to registry.

Steps to reproduce

I provide the masked runner config and gitlab-ci.yml for this job. Additional I provide a simple exection_environment.yml file which is used to build the ee. In previous runs with 17.11.0 the runner executed further than the failed command.

ee/execution-environment.yml
version: 3

images:
  base_image:
    name: registry.fedoraproject.org/fedora:42

dependencies:
  python_interpreter:
    package_system: python3
  ansible_core:
    package_pip: ansible-core
  ansible_runner:
    package_pip: ansible-runner
  system:
    - openssh-clients
    - sshpass
.gitlab-ci.yml
variables:
  UV_VERSION: "0.5"
  PYTHON_VERSION: "3.12"
  BASE_LAYER: bookworm-slim
  UV_LINK_MODE: copy
  IMAGE_TAG: $CI_REGISTRY_IMAGE/gitlab-ee:latest

stages:
  - build

build-and-deploy-ee:
  image: quay.io/podman/stable:latest
  stage: build
  variables:
    STORAGE_DRIVER: vfs
  before_script:
    - dnf install -y curl python3 python3-pip
    - curl -LsSf https://astral.sh/uv/install.sh | sh
    - source ~/.local/bin/env
    - uv --version
  script:
    - uv pip compile pyproject.toml --group ee -o ee/requirements.txt
    - cd ee
    - echo "Running as user ID:" && id
    - uv run ansible-builder build --tag $IMAGE_TAG --container-runtime podman
    - echo "$CI_REGISTRY_PASSWORD" | podman login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
    - podman push $IMAGE_TAG

Actual behavior

Fails with the described Error from above.

Expected behavior

Builds and deploys the ee image to registry

Relevant logs and/or screenshots

job log
Running with gitlab-runner 18.2.1 (cc489270)
  on gitlab-runner-standalone RvNRv7UeL, system ID: s_df739cf4a37e
Resolving secrets
Preparing the "docker" executor 00:02
Using Docker executor with image quay.io/podman/stable:latest ...
Using effective pull policy of [always] for container quay.io/podman/stable:latest
Pulling docker image quay.io/podman/stable:latest ...
Using docker image sha256:58e7dcd4e2e8d0a25a32aeae35b474473f47e11cc6c2b212d2eb2a10047b3c78 for quay.io/podman/stable:latest with digest quay.io/podman/stable@sha256:20873d52795900323d1509d873eacb02b3cb686e8cd725c1cfe4861a847dd7c4 ...
Preparing environment 00:01
Using effective pull policy of [always] for container sha256:f87e5381a14cdcd3aa33d9cb65561dd8d8768740d971f35e6da2ff1914104f7c
Running on runner-rvnrv7uel-project-1284-concurrent-0 via gitlab-runner-standalone...
Getting source from Git repository 00:02
Gitaly correlation ID: 01KAX9SP63017H29JKKT10KDXY
Fetching changes with git depth set to 20...
Reinitialized existing Git repository in /builds/fb10-it/ansible/gitlab-fb10/.git/
Created fresh repository.
Checking out 80529a1f as detached HEAD (ref is migrate-to-awx)...
Removing .venv/
Removing ee/context/
Removing ee/requirements.txt
Skipping Git submodules setup
Executing "step_script" stage of the job script 00:26
Using effective pull policy of [always] for container quay.io/podman/stable:latest
Using docker image sha256:58e7dcd4e2e8d0a25a32aeae35b474473f47e11cc6c2b212d2eb2a10047b3c78 for quay.io/podman/stable:latest with digest quay.io/podman/stable@sha256:20873d52795900323d1509d873eacb02b3cb686e8cd725c1cfe4861a847dd7c4 ...
$ dnf install -y curl python3 python3-pip
Updating and loading repositories:
 Fedora 43 openh264 (From Cisco) - x86_ 100% |   7.0 KiB/s |   5.8 KiB |  00m01s
 Fedora 43 - x86_64 - Updates           100% |   9.7 MiB/s |  12.8 MiB |  00m01s
 Fedora 43 - x86_64                     100% |   6.4 MiB/s |  35.4 MiB |  00m06s
Repositories loaded.
Package "curl-8.15.0-3.fc43.x86_64" is already installed.
Package                     Arch   Version        Repository      Size
Installing:
 python3                    x86_64 3.14.0-2.fc43  updates     28.9 KiB
 python3-pip                noarch 25.1.1-18.fc43 fedora      12.5 MiB
Installing dependencies:
 mpdecimal                  x86_64 4.0.1-2.fc43   fedora     217.2 KiB
 python-pip-wheel           noarch 25.1.1-18.fc43 fedora       1.2 MiB
 python3-libs               x86_64 3.14.0-2.fc43  updates     43.0 MiB
Installing weak dependencies:
 python-unversioned-command noarch 3.14.0-2.fc43  updates     23.0   B
Transaction Summary:
 Installing:         6 packages
Total size of inbound packages is 14 MiB. Need to download 14 MiB.
After this operation, 57 MiB extra will be used (install 57 MiB, remove 0 B).
[1/6] python3-0:3.14.0-2.fc43.x86_64    100% |  29.8 KiB/s |  27.7 KiB |  00m01s
[2/6] mpdecimal-0:4.0.1-2.fc43.x86_64   100% | 776.9 KiB/s |  97.1 KiB |  00m00s
[3/6] python3-libs-0:3.14.0-2.fc43.x86_ 100% |   7.0 MiB/s |   9.8 MiB |  00m01s
[4/6] python-unversioned-command-0:3.14 100% | 278.4 KiB/s |   9.7 KiB |  00m00s
[5/6] python-pip-wheel-0:25.1.1-18.fc43 100% |   2.1 MiB/s |   1.2 MiB |  00m01s
[6/6] python3-pip-0:25.1.1-18.fc43.noar 100% |   1.6 MiB/s |   2.8 MiB |  00m02s
--------------------------------------------------------------------------------
[6/6] Total                             100% |   7.7 MiB/s |  14.0 MiB |  00m02s
Running transaction
[1/8] Verify package files              100% | 113.0   B/s |   6.0   B |  00m00s
[2/8] Prepare transaction               100% |  84.0   B/s |   6.0   B |  00m00s
[3/8] Installing python-pip-wheel-0:25. 100% |  29.6 MiB/s |   1.2 MiB |  00m00s
[4/8] Installing mpdecimal-0:4.0.1-2.fc 100% |  10.2 MiB/s | 218.8 KiB |  00m00s
[5/8] Installing python3-libs-0:3.14.0- 100% |  28.3 MiB/s |  43.3 MiB |  00m02s
[6/8] Installing python3-0:3.14.0-2.fc4 100% | 340.3 KiB/s |  30.6 KiB |  00m00s
[7/8] Installing python3-pip-0:25.1.1-1 100% |  38.7 MiB/s |  12.8 MiB |  00m00s
[8/8] Installing python-unversioned-com 100% | 340.0   B/s | 424.0   B |  00m01s
Complete!
$ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.9.11 x86_64-unknown-linux-gnu
no checksums to verify
installing to /root/.local/bin
  uv
  uvx
everything's installed!
To add $HOME/.local/bin to your PATH, either restart your shell or run:
    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)
$ source ~/.local/bin/env
$ uv --version
uv 0.9.11
$ uv pip compile pyproject.toml --group ee -o ee/requirements.txt
Resolved 14 packages in 155ms
# This file was autogenerated by uv via the following command:
#    uv pip compile pyproject.toml --group ee -o ee/requirements.txt
ansible-core==2.20.0
    # via gitlab-fb10 (pyproject.toml:ee)
ansible-runner==2.4.2
    # via gitlab-fb10 (pyproject.toml:ee)
cffi==2.0.0
    # via cryptography
cryptography==46.0.3
    # via ansible-core
jinja2==3.1.6
    # via ansible-core
lockfile==0.12.2
    # via python-daemon
markupsafe==3.0.3
    # via jinja2
packaging==25.0
    # via
    #   ansible-core
    #   ansible-runner
pexpect==4.9.0
    # via ansible-runner
ptyprocess==0.7.0
    # via pexpect
pycparser==2.23
    # via cffi
python-daemon==3.1.2
    # via ansible-runner
pyyaml==6.0.3
    # via
    #   ansible-core
    #   ansible-runner
resolvelib==1.2.1
    # via ansible-core
$ cd ee
$ echo "Running as user ID:" && id
Running as user ID:
uid=0(root) gid=0(root) groups=0(root)
$ uv run ansible-builder build --tag $IMAGE_TAG --container-runtime podman
Using CPython 3.14.0 interpreter at: /usr/bin/python3
Creating virtual environment at: /builds/fb10-it/ansible/gitlab-fb10/.venv
Downloading pygments (1.2MiB)
Downloading cryptography (4.3MiB)
Downloading setuptools (1.1MiB)
Downloading virtualenv (5.7MiB)
Downloading black (1.6MiB)
Downloading ansible-core (2.3MiB)
 Downloaded virtualenv
 Downloaded black
 Downloaded cryptography
 Downloaded pygments
 Downloaded setuptools
 Downloaded ansible-core
Installed 74 packages in 356ms
Running command:
  podman build -f context/Containerfile -t gitlab.fb10.fh-dortmund.de:5005/fb10-it/ansible/gitlab-fb10/gitlab-ee:latest context
cannot clone: Operation not permitted
Error: cannot re-exec process
An error occurred (rc=125), see output line(s) above for details.
Cleaning up project directory and file based variables 00:01
ERROR: Job failed: exit code 1

Environment description

docker info Client: Docker Engine - Community Version: 29.0.4 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.30.0 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.40.3 Path: /usr/libexec/docker/cli-plugins/docker-compose

Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 3 Server Version: 29.0.4 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 2 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog CDI spec directories: /etc/cdi /var/run/cdi Swarm: inactive Runtimes: io.containerd.runc.v2 runc Default Runtime: runc Init Binary: docker-init containerd version: fcd43222d6b07379a4be9786bda52438f0dd16a1 runc version: v1.3.3-0-gd842d771 init version: de40ad0 Security Options: apparmor seccomp Profile: builtin cgroupns Kernel Version: 6.8.0-88-generic Operating System: Ubuntu 24.04.3 LTS OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 3.823GiB Name: gitlab-runner-docker ID: *** Docker Root Dir: /var/lib/docker Debug Mode: false Experimental: false Insecure Registries: ::1/128 127.0.0.0/8 Live Restore Enabled: false Firewall Backend: iptables

config.toml contents
concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-runner"
  url = "https://gitlab.fb10.fh-dortmund.de"
  request_concurrency = 4
  id = 35
  token = "***"
  token_obtained_at = 2024-11-22T16:57:52Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ['/cache']
    shm_size = 0
    network_mtu = 0

Used GitLab Runner version

Before:

Version:      17.11.0
Git revision: 0f67ff19
Git branch:   17-11-stable
GO version:   go1.23.6 X:cacheprog
Built:        2025-04-14T10:18:18Z
OS/Arch:      linux/amd64

After:

Version:      18.6.1
Git revision: b5e9c6d0
Git branch:   18-6-stable
GO version:   go1.24.6 X:cacheprog
Built:        2025-11-21T06:34:41Z
OS/Arch:      linux/amd64