SopMe
SopMe

Reputation: 67

Ubuntu Container Hangs On Every Command

I have created a Docker image to run Playwright:

FROM ubuntu:20.04
ENV PLAYWRIGHT_BROWSERS_PATH /browsers

ENV PYTHONV 3.8

RUN echo '-----> Installing Necessary Libraries & Packages' && \
    export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y --no-install-recommends python${PYTHONV} python${PYTHONV}-distutils curl python3-dev build-essential python3-venv ffmpeg && \
    curl https://bootstrap.pypa.io/get-pip.py | python3 && \
    apt-get autoremove -y && \
    mkdir /browsers && chmod 777 /browsers && \
    echo '-----> Library & Package Installation Complete'

RUN echo '-----> Installing Playwright for Python' && \
    pip install playwright && \
    pip install pytest-playwright && \
    playwright install chromium && \
    echo '-----> Playwright for Python Installation Complete'

RUN echo '-----> Installing Playwright System Dependancies' && \
    DEBIAN_FRONTEND=noninteractive playwright install-deps && \
    echo '-----> Playwright System Dependancies Complete'

RUN mkdir /app
COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

CMD ["PLAYWRIGHT_BROWSERS_PATH=/browsers","python3","/app/main.py"]

Everything builds well but when I go to run the image, I get this error

user@user-VirtualBox:/media/sf_MyFolder$ docker run -t fetchtest
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "PLAYWRIGHT_BROWSERS_PATH=/browsers": stat PLAYWRIGHT_BROWSERS_PATH=/browsers: no such file or directory: unknown.

Weird enough, I decide to see the containers folders to check out if its actually missing like this:

docker run -t fetchtest /bin/bash

But I cannot run any command at all. Whenever I try to run a command, such as cd /browsers, it hangs

user@user-VirtualBox:/media/sf_FetchItForMe$ docker run -t fetchtest /bin/bash
root@13adf854bf6e:/app# ls
█

I have to close the terminal to get out. I cannot use exit() or anything. Here is my Docker Information:

user@user-VirtualBox:/media/sf_MyFolder$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
fetchtest    latest    aaaaaaaaaaaa   2 hours ago    1.9GB
ubuntu       20.04     aaaaaaaaaaaa   5 days ago     72.8MB
user@user-VirtualBox:/media/sf_MyFolder$ docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  compose: Docker Compose (Docker Inc., v2.6.1)
  extension: Manages Docker extensions (Docker Inc., v0.2.7)
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 6
  Running: 0
  Paused: 0
  Stopped: 6
 Images: 19
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: false
  userxattr: true
 Logging Driver: json-file
 Cgroup Driver: none
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
  rootless
 Kernel Version: 5.15.0-46-generic
 Operating System: Ubuntu 20.04.5 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 7.67GiB
 Name: user-VirtualBox
 Docker Root Dir: /home/user/.local/share/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: Running in rootless-mode without cgroups. To enable cgroups in rootless-mode, you need to boot the system in cgroup v2 mode.

Why is this happening?

Upvotes: 0

Views: 496

Answers (1)

larsks
larsks

Reputation: 311238

This:

CMD ["PLAYWRIGHT_BROWSERS_PATH=/browsers","python3","/app/main.py"]

Is an invalid command. When you use the JSON-format CMD statement, the commands are executed directly without a shell, so you can't use shell syntax like VAR=value somecommand ....

The way you've written your CMD, Docker is trying to execute a command named PLAYWRIGHT_BROWSERS_PATH=/browsers, which of course doesn't exist.

If you want to set an environment variable, use the ENV command:

ENV PLAYWRIGHT_BROWSERS_PATH=/browsers
CMD ["python3", "/app/main.py"]

Upvotes: 2

Related Questions