Currently Browsing: Misc Tech

Override Docker Entrypoint properly

It’s not always so obvious what format the `ENTRYPOINT` override should take in a `docker run` command, so here is an example to clarify if you wanted to get a file list instead of the default entrypoint: first override the default ENTRYPOINT command with `/bin/ls` as a `run` argument then pass any args after the image name.

docker run --entrypoint "/bin/ls" namespace/imagename -al /container/path/tolist

As mentioned in the Docker docs, ENTRYPOINT only specifies the executable to run when the container starts.

Docker copy files from image to local

You can’t easily copy file directly from a Docker image, but you can from a temporary container. Couple different ways to do it include:

Run a temp container and copy into local mounted directory, here it’s a directory named “tmp” inside your current directory:

docker run --rm -v $(pwd)/tmp:/tmp <image-name:tag> sh -c "cp -r /path/to/files/* /tmp"

You could do additional pre/post processing and gather additional files as needed, etc. by updating the sh (or bash or other) command.

Or you can simply copy a directory from a static temporary container to a tar file:

id=$(docker create <image-name:tag>)
docker cp $id:path - > local.tar
docker rm -v $id

Docker stats with container names

docker stats `docker ps | awk '{print $NF}' | grep -v NAMES`

Docker remove orphaned volumes

UPDATED:

docker volume prune

see: https://docs.docker.com/engine/reference/commandline/volume_prune/

Alternate method:

docker volume rm $(docker volume ls -qf dangling=true)

JSON parsing from the command-line

You don’t need to use Python for basic JSON parsing, just use `jq`:

jq – Command-line JSON processor

see:

  • https://stedolan.github.io/jq/manual/
  • http://support.gnip.com/articles/data-and-rule-management-with-jq.html
  • etc.

    « Previous Entries Next Entries »