wiki.getshifting.com

--- Sjoerd Hooft's InFormation Technology ---

User Tools

Site Tools


cheatsheet-docker

Cheatsheet Docker

Summary: Docker hints, tips, oneliners and best practices.
Date: 8 December 2024

Docker version

Show the docker version
docker version

Docker Images

Working with images from docker hub
# Logout from docker hub
docker logout
# Login to docker hub
docker login -u username -p password
# Pull the image from docker hub repository
docker pull image-info
# Pull the image from docker hub repository
docker pull stacksimplify/springboot-helloworld-rest-api:2.0.0-RELEASE
# Remove the docker image
docker rmi image-id

Docker Containers

Show running container
docker ps
# or
docker container ls


Show all containers, including stopped ones
docker ps -a


docker stop/start/restart containers
# Stop
docker stop container_id
# default grace time = 10
docker stop --time=5 container_id
# Start
docker start container_id
# Restart
# Restart apache container by name
docker container restart httpd_web


Remove containers
# Remove the stopped container
docker rm container-id or name
# Remove the running container forcefully
docker rm -f container-id or name


Get docker container info
docker inspect container_id


Get docker container compose info
docker inspect container_id | grep com.docker.compose


Copy a file from or to a container
docker cp tool_db:/var/lib/postgresql/data/pgdata/postgresql.conf ./postgresql.conf

Logging and Monitoring

Get logging from docker container
docker logs --tail 50 --follow --timestamps httpd_web


grep in logging
docker logs <container_name> 2>&1 | grep <string>

Note that docker logs to stderr do you need to redirect this to stdout

Get container stats (Display the running processes of a container)
docker top <container_name>


Get docker stats
docker stats

Work Inside a Container

Work in a container
docker exec -it container_id /bin/bash
# Connect to linux container and execute commands in container
docker exec -it container-name /bin/sh


As a different user
docker exec -u postgres -it container_id /bin/bash

Docker Compose

Docker compose files are used to start containers. By default, a docker-compose.yml or a docker-compose.yaml file is used.


Start and stop containers from docker-compose file

docker compose up -d
docker compose down

Note the -d switch to start the containers in the background.

See logging
# the logs from each of the services interleaved into a single stream
docker compose logs -f
# the logs just for app
docker compose logs -f app

Docker Build

Docker build, run and show logs of a custom app called privacy
# Build an image called privacyimage
docker build -t privacyimage .
# Run a container called privacycontainer from the image
docker run -d --name privacycontainer privacyimage
# Show the logs from the container
docker logs privacycontainer


# Show all steps in plain output and redo every step (don't use cached steps)
docker build --progress=plain --no-cache  -t consoleappdbtestimage .


Save an image to disk and import somewhere else
# Create a tar file from the consoleappimage
docker save -o ./consoleappimage.tar consoleappimage
# import the image
docker load -i /consoleappimage.tar

Dockerfile

A Dockerfile is used to create images:

Default .net app dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /App
 
# Copy everything
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Build and publish a release
RUN dotnet publish -c Release -o out
 
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerConsoleApp.dll"]

Docker Azure DevOps Pipeline Task

  - task: Docker@2
    displayName: Build and push an image to container registry
    inputs:
      command: buildAndPush
      repository: $(repository)
      dockerfile: $(dockerFilePath)
      containerRegistry: "containerRegistry"
      tags: |
        $(imageName)
        $(Build.BuildId)
        latest
cheatsheet-docker.txt · Last modified: by 127.0.0.1