Intended as a living document, just some basics for now.
Build from the Dockerfile in the current directory and tag the image as "demo":
docker build -t demo .
Build but don't cache the intermediate containers. This is useful if the previous build failed and the intermediate container is broken:
docker build --no-cache .
There's a good
Dockerfile reference document and
Dockerfile best practices document that you should read when writing a Dockerfile. Make sure you have a
.dockerignore file that excludes all unnecessary stuff from the image to reduce bloat and reduce the amount of context that needs to be sent to the docker daemon on each rebuild.
Run bash inside the container to poke around inside it:
docker run -it ubuntu bash
Share a host directory with the container:
docker run -it -v /home/me/somedir:/mounted_inside ubuntu:latest bash
List local available images:
docker images
See what containers are running:
docker ps
Bash helper functions (credit to raiford). "dckr clean" is particularly useful when building an image that results in lots of orphans due to errors in the Dockerfile:
if which docker &> /dev/null; then
function dckr {
case $1 in
clean)
# Clean up orphaned images.
docker rmi -f $(docker images -q -f dangling=true)
;;
cleanall)
# Delete All Docker images with prompt.
read -r -p "Delete all docker images? [y/N] " response
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]; then
docker rmi $(docker images -q)
fi
;;
killall)
# Kill all running docker processes
docker kill $(docker ps -q)
;;
*)
echo "Commands: clean, killall"
;;
esac
}
fi
To run a previously created container with bash, start it as normal and then use exec (this assumes your original container can actually run successfully):
docker start [container id]
docker exec -it [container id] /bin/bash
To authenticate to a GCR/AR repo use
this documentation:
gcloud auth login
# You only need to do this once per host
gcloud auth configure-docker us-central1-docker.pkg.dev
You can then use
gcrane to copy a container from one repo to another:
go/bin/gcrane cp ubuntu:jammy us-central1-docker.pkg.dev/project/myrepo/ubuntu:jammy