cheatsheet-docker
Table of Contents
Cheatsheet Docker
Summary: Docker hints, tips, oneliners and best practices.
Date: 8 December 2024
Docker version
Show the docker versiondocker 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 containerdocker ps # or docker container ls
Show all containers, including stopped onesdocker 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 infodocker inspect container_id
Get docker container compose infodocker inspect container_id | grep com.docker.compose
Copy a file from or to a containerdocker cp tool_db:/var/lib/postgresql/data/pgdata/postgresql.conf ./postgresql.conf
Logging and Monitoring
Get logging from docker containerdocker logs --tail 50 --follow --timestamps httpd_web
grep in loggingdocker 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 statsdocker stats
Work Inside a Container
Work in a containerdocker 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 userdocker 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 filedocker 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