🐳Docker Architecture thread.

Docker uses a client-server architecture.

The Docker client talks to the Docker daemon (server), which menages different Docker objects:
- images
- containers
- networks
- volumes

Images (not containers) can be stored in Registries.

/thread
The Docker client and the daemon can run on the same system, or they can be connected remotely using HTTP protocol.

The connection is established using REST APIs, over UNIX sockets/network interfaces.
DOCKER DAEMON (SERVER)

The Docker daemon (dockerd) is a process, which runs in the background, that manages the docker objects (images, containers, networks, volumes).

It processes Docker API requests.
DOCKER CLIENT

The main way of interacting with Docker.

When you use commands such as docker run, the client sends these commands to dockerd, which carries them out.

The docker command uses the Docker API.

One client can communicate with multiple daemons.
DOCKER IMAGES

Read-only binary templates that contain instructions and metadata for creating Docker containers.

You can use existing images, or create your custom one, starting from an existing one, or even from scratch.
Images can be created by defining a Dockerfile, which is a text file that contains commands used to create the image, one layer per instruction.

Docker uses a system of caching so a new layer is built only if it is changed.
It’s super effective!
CONTAINERS

Runnable instances of an image.

Multiple containers can be instantiated from the same Image.

They can be created/started/stopped/deleted using the Docker API/CLI, and are isolated from other containers and the host machine using namespaces (Linux feature).
Containers can be attached to networks, or be connected with storage. This is important because they are ephemerals, so when they are removed, each state not stored is lost
NETWORKS
Containers can be connected to each other or to non-Docker services, using networks/drivers.

5 types of Networks:

- BRIDGE: allows containers connected to communicate, and it provides isolation from containers that are not connected to that bridge network.
- HOST: removes network isolation between the container and Host

- OVERLAY: connects Docker daemons. Enables swarm services

- MACVLAN: Assigns a MAC address, used by the Docker daemon to access it. Useful for legacy applications.

- NONE: Disable networking.
STORAGE:
Without persistent storage, containers are (almost) useless: all data is lost after removal

4 ways of persisting data:

- Data Volumes: Persistent storage on the host file system, with the ability to rename/list volumes, and list the container associated.
- Volume Container: A container hosts a volume, mounting it for other containers. It's shareable between containers.

- Directory Mounts: Use a directory on the Host.

- Storage Plugins: Connect to external storage, mapping storage from the host to an external source.
REGISTRY

A registry is a storage to hold, push and pull images of different versions, in a similar way like GitHub does for repositories

You can use an existing one, like Docker Hub or Amazon ECR, or host a private one if you need more security or for policy reasons
Was this thread useful? share the first Tweet and follow @FrancescoCiull4

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Francesco Ciulla

Francesco Ciulla Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @FrancescoCiull4

17 Nov
Portainer BE version 2.10 is out.

Some massive improvements here📈

☸️Kubernetes support improved by a ton.
↪ Proxy for container environments.
🌓Dark mode is now supported.
💻Kubectl integration.
💾GitOps integration.
🌸UI improvements.
🔐HTTPS support.

/thread @portainerio Portainer in Dark mode
✅Improved UI

The new UI has been redesigned to reduce clutter and be more intuitive, It's now much easier to navigate inside Portainer.

Kubernetes users should feel it very comfortable.
✅Lightweight GitOps integration

Introduced a lightweight GitOps engine: it enables users to employ 'entry level' CD automation' (no expertise needed).

This allows a user to configure the app's updates:
- automatic
- poll-based
- push-based (webhooks)
Read 16 tweets
17 Nov
5000 Subscribers on YouTube!!!!!

Thank you for your support 🖤

To celebrate this I want to share what I learned about creating tech videos.

It took me 1.5 years to understand the process!

This is not a perfect one but what I use, and it works for me.

/thread how I creat my tutorials, s...
👣Steps:

·Research
·Test
·Steps
·Re-Test
·Record Demo
·Cut Demo
·Article
·Voiceover
·Edit VoiceOver
·Animations/Blur
·Body Render/Check
·Thumbnail/Green Screen
·Record Outro/Intro
·Body+Intro+Outro
·Edit Intro/outro
·Text/Chapters
·Final render/check
·YT stuff
·Promo

Details↓
1. Research

Before creating my video and article, I document my existing videos on the subject: My main sources are:
- @freeCodeCamp
- @traversymedia
- @dailydotdev

Yes, to create a video I document myself to know as much as possible before starting! ImageImageImage
Read 25 tweets
11 Nov
A thread about Blockchain:

Summary:
· What is a Blockchain
· Blocks
· Resistance to modification
· Secure by design
· Structure
· Verification
· Robust workflow
· Value Exchange protocol
· Layers

/thread · What is a Blockchain · Blocks · Resistance to modificat
· What is a Blockchain

It's a growing list of records (blocks)

The Blocks are linked together using cryptography.

It's described as an immutable data storage:
- trustless
- fully decentralized
- peer-to-peer
- immutable

It's spread over a network of participants (nodes)
· Blocks

They contain:
- a cryptographic hash of the previous one.
- a timestamp + transaction data.

The timestamp proves that the transaction data existed when the block was published in order to get into its hash.

The blocks form a chain (hence the name).
Read 11 tweets
30 Sep
Why Containerization?

This is the question I get more often.

Over the years I have tried to improve this answer as much as possible.

In this thread with Memes, I will do my best.

a /thread (with Memes)
When an application is developed, we have:

- a development environment
- a production environment.

The application is created, improved, new features are added, bugs are corrected.

All of this happens in the development environment.

No memes? wait for it...
We have the usual problems:

- install dependencies
- understand what the problem is
- add a new shiny feature

And we also write a lot of code...

Once the development is done, developers are happy!
Why? because “It works on my machine”.

What's the problem?
Read 18 tweets
28 Sep
I have been interviewed by William Quiviger in the Official Docker Captain Take 5

Article: docker.com/blog/docker-ca…

/thread format⬇️
How/when did you first discover Docker?

It was 2015. I was curious and started researching. I didn’t have any online presence at the time so I was just studying on my own trying to figure out how it worked.
Now I know many Docker Captains, like @BretFisher @mikesir87 , @GianArb!
What is your favorite Docker command?

This is a nice question! I think I will go with “docker compose up –build”, this is exactly what you need to test your command on your development environment.

Another one is docker exec, it’s very handy.
Read 12 tweets
28 Sep
Resources that link Blockchain to Docker🐳
· Create Ethereum Dapp with React + Docker
· Deploying Blockchain Applications with Docker
· Docker usage in Blockchain
· Docker in Blockchain Projects
· Go Ethereum (Go implementation of Ethereum protocol)

Have more? Share it

/thread
Create an Ethereum Dapp with React and Docker

medium.com/hackernoon/cre…
Deploying Blockchain Applications with Docker

Docker provides great support in quickly getting a blockchain node up and running without the need to individually configure each machine separately.

skeps.com/blog/deploying…
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(