Docker container for creating a ChromeDriver server
- ChromeDriver (Latest)
- Google Chrome (Latest Stable)
Building the Docker Image
You can build the image by either building from GitHub or cloning the repository.
To build from GitHub:
docker build -t "robcherry/docker-chromedriver:latest" github.com/robcherry/docker-chromedriver
If you choose to clone the repository locally,
cd in to the repository's root directory and run:
docker build -t "robcherry/docker-chromedriver:local" .
You can also pull the final built image from docker:
docker pull robcherry/docker-chromedriver:latest
The most basic usage is to run the container and expose the ChromeDriver port on all interfaces.
docker run --name chromedriver -P -d robcherry/docker-chromedriver:latest
If you want to restrict the ports to your local environment, you can do so using
docker run --name chromedriver -p 127.0.0.1::4444 robcherry/docker-chromedriver:latest
Note: ChromeDriver restricts access to local connections by default. To allow external connections, you can pass in a custom
CHROMEDRIVER_WHITELISTED_IPS environment variable. By default, this is set to
127.0.0.1, but this can by any comma separated list of IP addresses. Setting the value as empty will allow all remote connections.
docker run --name chromedriver -p 127.0.0.1::4444 -e CHROMEDRIVER_WHITELISTED_IPS='' robcherry/docker-chromedriver:latest
Works great. Thank you
docker-composer config for running as a remote server
chromedriver: image: robcherry/docker-chromedriver container_name: "chromedriver" environment: CHROMEDRIVER_WHITELISTED_IPS: "" CHROMEDRIVER_URL_BASE: "/wd/hub" security_opt: - seccomp:unconfined
seccomp:unconfined chrome is unable to start
unknown error: Chrome failed to start: crashed (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.4.0-92-generic x86_64)
Error (when tries to run chrome from inside of the container)
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted Trace/breakpoint trap (core dumped)
This is great! Works like a charm. The cap-add argument was definitely necessary. To run it in GKE/kubernetes, you need to add the cap arg as a securityContext:
#Added sys_admin capability for chrome to launch securityContext: capabilities: add: ["SYS_ADMIN"]
Nice job, dude! It saved a lot of my time. Works out of the box without any problems.