Docker Image Guide: Sådan slettes Docker-billeder, stopper containere og fjerner alle diskenheder

Docker er blevet bredt adopteret og er et fantastisk redskab til at implementere en applikation til skyen (eller en anden Docker-klar infrastruktur). Det er også nyttigt til lokal udvikling. Du kan starte komplekse applikationer hurtigt, udvikle sig isoleret og stadig have en meget god ydeevne.

Her er de vigtigste kommandoer til at bruge Docker i din daglige forretning effektivt.

Liste over alle Docker-billeder

docker images 

I mit tilfælde har jeg 3 billeder installeret:

  • MySQL, version 8.0.19, en tagget som den nyeste version
  • og Cassandra med den nyeste version.

For at få mere information om et billede kan du inspicere det:

docker inspect mysql:latest

Dette returnerer en liste med oplysninger. Alternativt kan du også bruge billed-id'et til at få oplysningerne:

docker inspect 3a5e53f63281

Outputtet kan være overvældende. Derfor er der en praktisk mulighed for at filtrere visse oplysninger:

docker inspect --format='{{.RepoTags}} {{.Config.Image}}' 3a5e53f63281

Fjern Docker Images

Et enkelt billede kan fjernes ved:

docker rm mysql:latest

I mit tilfælde er billedet stadig mærket med mysql: 8.0.19 . Derfor skal jeg fjerne et andet versionstag for at fjerne det helt:

docker rm mysql:8.0.19

For at fjerne billedet direkte er det lettere at slette billedet med billed-id:

docker image rm 3a5e53f63281 -f

Option -f tvinger udførelsen, for ellers får du en fejl, hvis billedet henvises til af mere end 1 tag.

Start et Docker-billede

Et billede kan startes i forgrunden af:

docker run cassandra

Hvis billedet ikke findes, downloades det. Du kan stoppe henrettelsen ved at trykke på CTRL + C . Du kan også køre det i baggrunden ved at tilføje indstillingen -d :

docker run -d mysql

Hvis containeren startes i baggrunden, modtager du container-id'et.

Som standard kører containeren isoleret. Derfor kan du ikke kommunikere med det, og ingen filer er gemt i din nuværende mappe.

Fremadgående porte i en container

Du kan videresende porte ved hjælp af indstillingen -p til for eksempel en side, der er eksponeret fra din container:

docker run -p 8080:80 nginx

Denne NGINX-container eksponerer en webserver på port 80. Ved at bruge -p 8080: 80 videresendes den lokale port 8080 til containerporten 80.

Log ind på en container

Nogle gange er det nyttigt at logge ind på en container. Dette er kun muligt, hvis containeren har en skal installeret. Du får en fejl, hvis dette ikke er tilfældet.

Start først containeren løsrevet og giv den et navn:

docker run -d --name my_container nginx

This will return a container ID. Now you can execute a shell in the container and attach your input and output to it by using the options -i and -t:

docker exec -it my_container bash

Instead of the container name, you can also use the returned container ID for all following operations. Sometimes, bash is not available. Therefore, you can also try to launch a basic shell:

docker exec -it my_container sh

List running containers

After you’ve started a container, you can see all running containers executing:

docker ps

By appending -a, exited containers will also be listed:

docker ps -a

Share a local folder with a container

Sometimes it is useful to sync files between the container and the local filesystem. You can do it by running a container and using the -v option. On Linux and macOS, you can share a local temporary folder with a container by:

docker run --name=my_container -d -v $(pwd)/tmp:/var/log/nginx -p 8080:80 nginx

On windows you can run:

docker run --name=my_container -d -v %cd%/tmp:/var/log/nginx -p 8080:80 nginx

Stop running containers

It is possible to stop a running container by:

docker stop my_container

Stopping a container stops all processes but keeps changes within the filesystem.

Start a stopped container

A stopped container can be started by:

docker start my_container

Remove a container

To remove a stopped container, you can execute:

docker rm my_container

To stop and remove the container in one command, you can add the force option -f.

docker rm -f my_container

Create a volume and share it with multiple containers

An independent volume named SharedData can be created by:

docker volume create --name SharedData docker run --name=my_container -d -v SharedData:/var/log/nginx -p 8080:80 nginx docker run --name=my_container_2 -d -v SharedData:/var/log/nginx -p 8080:80 nginx

Both containers will have a shared folder, and files will be synced between both containers.

Remove a volume

To remove a volume, all containers that use the volume need to be removed.

docker rm -f my_container docker rm -f my_container_2 docker volume rm SharedData

Remove stopped containers and unused images

A safe tidy-up command is:

docker system prune -a

Remove all unused volumes

All unmounted volumes can be removed by:

docker volume prune

Conclusion

Creating containers, logging into containers, forwarding ports, and sharing volumes are the most important commands of your Docker command line interface. They build the foundation of systems like Kubernetes and enable us to create and run applications in isolation.

I hope you enjoyed the article. If you like it and feel the need for a round of applause, follow me on Twitter.

Jeg er medstifter af vores revolutionerende rejseplatform kaldet Explore The World. Vi er en ung startup i Dresden, Tyskland og vil først målrette mod det tyske marked. Kontakt mig, hvis du har feedback og spørgsmål om et emne.

Happy Docker udforsker :)

Referencer

  • Docker kommandolinjedokumentation

    //docs.docker.com/engine/reference/commandline/docker/