Docker

From Elvanör's Technical Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This is a short tutorial to use Docker.

Basic commands

  • List of all containers: docker ps -a
  • Remove a container: docker rm <container-id>
  • Remove all stopped containers: docker container prune
  • List of all images: docker image ls
  • Remove an image: docker rmi <image-id>
  • Remove all dangling images: docker image prune
  • Create a new container (from an image): docker create jatzoo/jrivermc24
  • Create and run a new container (from an image): docker run -d --name=jrivermc24--stable --net=host -e VNCPASS=foobar -v /volume1/Public/music:/mnt/media jatzoo/jrivermc24:latest
  • Execute a command in a running container: docker exec -it <container-name> /bin/bash
  • Obtaining information about CPU and RAM usage: docker stats
  • Getting stdout logs from a container: docker logs <container-id>

Container events

  • To get an history of container restarts (starts / stops), use the docker system events --since command. The --since is very important, else it will just stream the new events coming.
  • When sending docker stop command, a SIGTERM signal is first issued, then after 15 seconds a SIGKILL signal is sent. This means that a manually issued stop command to a container can produce the same error as a OOM killed container, since in both cases the container process with pid 1 will receive a SIGKILL signal.

Detaching and attaching

  • Control-P + Control-Q can be used to detach from a running container.
  • docker attach command can be used to attach / reattach.

Building an image

  • docker build -t app-name .

Dockerfile

  • This can be used to setup the timezone:
ENV TZ=Europe/Moscow
  • ARG directive allows you to provide an argument when building the image. You can provide a default value, and any environment variable that matches exactly the name of the ARG will be passed automatically to the build process.
  • You can later refer to an ARG by using $ + the argument name. For instance, $USER.

Containers

  • A started container is always associated with a command (either one present on the Docker image by default, or another one given on the command-line with docker run). This is the command that will be restarted with docker restart, or ran again after a docker stop / docker start.
  • A container exiting with error code 137 means that the container used too much memory (and was killed by the kernel OOM killer).
  • You can limit the memory used by a given container by using the --memory=500m parameter when starting the container. In that case, if memory runs out, the container is killed/stopped.
  • You can also update such parameters on a running container with the docker update command.
  • Docker can restart automatically containers; usually this is useful when an error occurs (container out of memory for instance). Use --restart on-failure. Also note that after a reboot, containers will be automatically restarted when the Docker daemon starts.

Volumes

  • Volumes with the default local driver can be accessed from the host.
  • A volume can be associated only when the container is created, not with a running container.