Docker images for fcli (https://github.com/fortify/fcli)
10K+
This repository provides Docker images for fcli, allowing to easily run fcli commands without having to install fcli locally.
For now, we provide the following image variants:
The UBI9-based images may provide a better user experience as they allow for running a sequence of fcli commands in an image-provided shell, storing any state across those commands within the container. For example, through the UBI9-provided shell, you can run fcli session login commands, then use those sessions in subsequent commands, followed by the appropriate session logout commands.
In comparison, as the scratch image only allows for executing a single fcli command per container invocation, you'll need to use a persistent volume to store fcli state between those invocations. However, the scratch image is much smaller and more secure as it doesn't include any potentially vulnerable packages from a base image.
These images do not include any build tools, and are therefore not suitable for for packaging source code through ScanCentral Client for languages that require build tool integration. If the scancentral package command is being run within containers created from this image (for example through fcli ci or package actions or direct ScanCentral Client invocation), the -bt none option must be passed to avoid errors due to missing build tools. Depending on source code language, using -bt none may produce inaccurate scan results.
If you do require packaging capabilities with build tool integration, there are two options:
fortifydocker/fcli (non-scratch) image as the base image for a custom image, adding any build tools to your custom image as required for your project(s)fcli and optionally other Fortify tools like ScanCentral Client to your custom imageImage tags identify the fcli version they contain. For example, 3.14.1 contains fcli v3.14.1. Semantic version tags are also provided: 3 points to the latest v3.<minor>.<patch> release, and 3.14 points to the latest v3.14.<patch> release. The latest tag points to the latest stable fcli release.
By default, image tags target Linux x64 (linux/amd64). UBI9 and UBI9+ScanCentral Client images also have separate Linux arm64 variants, using the same tag pattern with an -arm64 suffix, when the fcli release provides an arm64 binary. Scratch images are available for Linux x64 only.
UBI9-based images use a -ubi9 suffix. UBI9 images with ScanCentral Client use a -ubi9-sc<version> suffix. The ScanCentral Client version is in YY.Q form, and the image includes the latest available patch release in that quarter when the image is built. ScanCentral Client variants do not have a latest tag.
Examples:
3: Scratch image containing the latest fcli v3.<minor>.<patch> release3.14.1: Scratch image containing fcli v3.14.1latest-ubi9: UBI9 image containing the latest stable fcli release3-ubi9: UBI9 image containing the latest fcli v3.<minor>.<patch> release3-ubi9-arm64: Linux arm64 UBI9 image containing the latest fcli v3.<minor>.<patch> release available for arm643.14-ubi9: UBI9 image containing the latest fcli v3.14.<patch> release3-ubi9-sc25.4: UBI9 image containing the latest fcli v3.<minor>.<patch> release built with ScanCentral Client 25.4.<patch>3.16-ubi9-sc25.2: UBI9 image containing the latest fcli v3.16.<patch> release built with ScanCentral Client 25.2.<patch>3.30.0-ubi9-sc26.2-arm64: Linux arm64 UBI9 image containing fcli v3.30.0 and ScanCentral Client 26.2.<patch>Note that 'latest' above refers to the latest version that was available at the time the image was published. For example, if a new ScanCentral Client patch release is published after the image was last published, the image will contain the earlier patch release until the image is refreshed as described above.
Image tags as described above may be refreshed at any time, for example to utilize a newer base image version, update fcli or ScanCentral Client versions to latest version that matches the semantic version tag, or implement Dockerfile improvements and fixes. For users that require absolute stability, we also provide timestamped image tags; these are guaranteed to never change (other than deletion of images over 2 years old). Some examples:
3.14.1-20251219151716: Scratch image containing the fcli v3.14.1 release, published at 2025-12-19 15:17:16fcli:3.14.1-ubi9-20251219151716: Same as above, but UBI9-based imageAs these timestamped images are meant to provide stability, there are no timestamped semantic version tags like latest-<timestamp> or 3.14-<timestamp>.
Which tag to use depends on your requirements:
latest is discouraged3 or 3-ubi9 if you want to automatically benefit from new fcli features and bug fixes, Dockerfile improvements, and base image updates3.<minor> or 3.<minor>-ubi9 if you need a stable set of fcli features, while benefiting from fcli bug fixes, Dockerfile improvements, and base image updates3.<minor>.<patch> or 3.<minor>.<patch>-ubi9 if you want a stable fcli version, while still benefiting from Dockerfile improvements and base image updates3.<minor>.<patch>-<timestamp> or 3.<minor>.<patch>-ubi9-<timestamp> if you require absolute stability with an image that will never changeNote that this repository only contains images for fcli production releases; images for development releases have moved to https://hub.docker.com/r/fortifydocker/fcli-dev.
For backward compatibility, there are also some gitlab-installer-svc images. These are deprecated and should no longer be used; existing tags may be removed during a future clean-up.
Easiest way to use the UBI9-based image is by running a sequence of fcli commands through the UBI9-provided shell, for example:
docker run --rm -it fortifydocker/fcli:<version>-ubi9
fcli ssc session login ...
fcli ssc av ls
fcli ssc session logout
exit
The above will run the given fcli commands in the image-provided shell, storing any state like fcli session data in the current container; any state will be lost once the container exits. For image variants that include ScanCentral Client, the scancentral command can be invoked in a similar way.
If you require persistence or access to files on your host system, you may pass volume mappings, fcli environment variables, etcetera on the docker run command. Usage information for the scratch image below provides some pointers; most of these options apply to the UBI9-based image as well.
To have the fcli Docker image behave virtually the same as a locally installed fcli, you can use the following command:
docker run --rm -v "${HOME}:${HOME}" -v "${PWD}:${PWD}" -e "FCLI_USER_HOME=${HOME}" -w "${PWD}" -u $(id -u):$(id -g) fortifydocker/fcli:<tag> <fcli-args>
Of course, being a relatively long command, you may want to set up an alias, shell function or wrapper script for invoking the Docker command.
Explanation of the various elements in the command above:
--rm:
-v "${HOME}:${HOME}" and -v "${PWD}:${PWD}":
${HOME} and ${PWD} are the same, this would result in having two equal -v options, however Docker seems to accept this without issues.-e "FCLI_USER_HOME=${HOME}"
-v option.${HOME}/.fortify directory on the host system, and have fcli tool commands install tools into the ${HOME}/fortify directory on the host system.-w "${PWD}"
-v option.-u $(id -u):$(id -g)
-v option.<tag>
<fcli-args>
fod app lsfcli command itself in <fcli-args>, so both fod app ls and fcli fod app ls will be accepted as <fcli-args>.Of course, many variations of this command are possible. For example:
${HOME} with an alternative directory like ${HOME}/fcli-docker.-v options if you'd like the containerized fcli to have access to additional host system directories. As an example, to have the containerized fcli install ScanCentral Client to /opt/fortify on the host system (assuming current user has write access to those directories), you could:
-v /opt/fortify:/opt/fortify Docker option--base-dir /opt/fortify option on the fcli tool sc-client install command (or use corresponding environment variable like FCLI_TOOL_BASE_DIR)Content type
Image
Digest
sha256:1b08c7444…
Size
45.9 MB
Last updated
1 day ago
docker pull fortifydocker/fcli