5/07/2024

About Docker

About Docker:

Docker helps developers build, share, run, and verify applications anywhere — without tedious environment configuration or management.

Docker Desktop: The #1 Containerization Tool for Developers | Docker




Docker History

Docker != Containers

•1979 (!) chroot was introduced (Unix V7

•2000 FreeBSD jails

•2001 Linux Vserver

•2005 Open VZ

•2006 Process Containers

•2008 LXC

•2013 Docker

•ChatGPT into Docker history




Docker Images:

  • Read only templates for creating containers
  • Includes all necessary files for running an application
  • Build time structures, as opposed to the run time structure of containers






Containers == running images      How you run you app

Images == stopped container (not 100% accurate)      How you store you application

Examples:

Docker run hello world
Docker run ubuntu
Docker run nginx

Collection of images
• One registry can contain multiple repos
• Docker.io/galea01/example webserver:v3

Best practices:
• Use official repos
• Don’t trust the :latest
• Go small
• See alpine distribution

Docker CLI

docker <object> <

Examples:

docker container run
docker images ls
docker volume create
docker network rm

Options:
--
help with params : hostname=“abc.com”
arguments: f1 f2 f3

Tab completion
ORDER MATTERS!


docker version

docker system info

docker container ls q --> print only container ID

docker container inspect

docker image pull -->  Images are automatically downloaded when running containers, as necessary

docker container run
    - i : keep strin open
    - t: pseudo TTY
    - d: run detached

docker container run it Ubuntu:latest
    CTR+D
    CTRL+P CTRL+Q

docker container attach [###]

docker logs

docker container rm

docker image rm

docker rm f $(docker ps a q)

docker system prune all


Networking

“Network type" = Bridge

•The default network driver. If you don’t specify a driver, this is the type of network you are creating. Bridge networks are com monly used

when your application runs in a container that needs to communicate with other containers on the same host

• Outside communication:

• Containers can access outside resources

• Outside hosts cannot connect directly to a container

• Needs port forwarding


- Remove network isolation between the container and the Docker host, and use the host’s networking directly

- Less scalable

- Networking just like any app running directly but with other isolation types

- Overlay networks connect multiple Docker daemons together and enable Swarm services and containers to communicate across nodes. This strategy removes the need to do OS level routing

- The overlay extends across the Docker hosts… how do we talk to other machines?



“Network type Macvlan"

networks allow you to assign a MAC address to a container, making it appear as a physical device on your network. The Docker

daemon routes traffic to containers by their MAC addresses. Using the macvlan driver is sometimes the best choice when dealing with legacy

applications that expect to be directly connected to the physical network, rather than routed through the Docker host’s network stack



Working with networks

Expose <port> [/tcp | udp ]

    dockerfile instruction 

    informs docker that container listens on specific port

Docker container run p <[ ext_port :] int_port

    Maps an external port on the host IP address to an internal port on the container IP





Commands : 

docker network ls

docker network inspect

docker network create [ d driver] name

    certain network types require prerequisites (macvlan promiscuous mode, overlay swarm)

docker network rm


Persisting Data

  • Keeps data that the container has modified
  • Makes each container unique
  • Sits on top of the union FS
    • Linux: / var / docker
    • Windows: C: ProgramData Docker windows filter
  • Remember that union file systems use a copy on write mechanism
    • Files are copied to this layer before being changed
  • is tightly coupled to the container, and disappears when the container is deleted
  • is tightly coupled to the host machine making it difficult to move the data somewhere else
  • sits on a union FS, which is written to via a storage driver incurs a performance penalty

A volume can be mounted into multiple containers

What happens when the mount directory in the container already has data in it?

    If the volume is not empty, its contents will obscure the existing data (similar to the Linux mount command). If the volume is empty, the data in the container is propagated (copied) into the volume


Niciun comentariu:

QUARKUS & GraphQL

 QUARKUS & GraphQL https://www.geeksforgeeks.org/graphql-tutorial/ https://quarkus.io/guides/smallrye-graphql-client https://www.mastert...