Troubleshooting

Running Docker: Hardware assisted virtualization and data execution protection must be enabled in the BIOS

Problem running Hyper-V (Windows)

Depending on your PC model or BIOS settings, it may be required to enable specific features for running the docker virtualization.

After each step a reboot is required to activate changes!
  1. Solution-A (If Hyper-V is totally disabled or not installed)

    • Open PowerShell as administrator and

    • Enable Hyper-V with: dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

  2. Solution-B (If Hyper-V feature is already enabled but doesn’t work)

    • Open PowerShell as administrator and

    • Modify Hyper-V launch to auto: bcdedit /set hypervisorlaunchtype auto

  3. Solution-C

How to force Percept to stop or how to stop not correctly terminated Percept instances

You can use docker ps inside of your command line to see which instances are still active.

Percept automatically starts and stops docker containers on demand.

This will only work in the case you want to terminate all Percept instances in case ctrl+c does not work and/or clean up instances which should already be stopped.

Overview of running Docker containers
Figure 1. Example output of docker ps: the base containers and one project is running

You can then run docker stop and add the container ID of the containers to stop e.g. docker stop 1f58924a885e e8bce70a796c 41c6efce8103 fcb77da3b023 c1cfb25c3555 ed907ee7fff8 for the image above, to stop all running containers.

  1. Helpful Docker Commands

Error: iptables failed

If you get the following error when starting Percept or a Project in Percept, which includes iptables failed … iptables: No chain/target/match by that name (see the image below as well)

Docker IP Table Error

or

ERROR: Failed to program FILTER chain: iptables failed: iptables --wait -I FORWARD -o br-be839b6aabca -j DOCKER: iptables v1.6.1: Couldn't load target `DOCKER':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
 (exit status 2)

if you are calling docker-compose up.

The issue is most likely the following:

Docker uses an iptables chain "DOCKER" for adding port mappings to containers. You can check for its presence by running

  • iptables -L -v -n

If this chain is missing, Percept would not start up and if it is already running, launching a project will fail because it creates a port mapping on the fly.

Please check your system if something is deleting this chain. This could be a firewall script, a startup script, a VPN connect script, a restore of the iptables saved before docker was run (service iptables save) or a manually ran command (e.g. iptables -t filter -F followed by iptables -t filter -X).

You can recreate the docker iptables by restarting the docker daemon e.g. on Ubuntu: systemctl restart docker

Error Port 80 not available

It can happen, especially on Windows based systems, that another system resource or application is using Port 80. Therefore the frontend will not start. You can change the port used by the frontend in the docker-compose file. See ports used by Percept for a list of used ports and if you can change them.

Error the container is already in use by container …​

If you get the error about container is already in use during docker-compose up it might be that there are some stopped or dangling Percept containers which interfere with the new ones.

Docker Error container already in use
Figure 2. Example of container is already in use error

To resolve this error:

  • Make sure that you do not have any old Percept container running or stopped after upgrading to a newer Percept version, see (How to upgrade Percept).

  • Use docker-compose down in the directory of the Percept instance you started before the current one

  • Try to remove all stopped container by calling docker container prune -f from a command line

    This will also remove other stopped containers not only the ones from Percept (Be careful with this command if you have other docker containers as well)
  • Try calling docker system prune in a command line to remove all stopped containers, networks not used by containers and images, for details have a look at Docker System Prune Documentation

    This command will affect all other docker containers not only the ones from Percept (Be careful with this command if you have other docker containers as well)