Rework Dirs

This commit is contained in:
2024-09-01 18:34:55 +03:30
parent 84196c3034
commit 8c9be226a5
51 changed files with 0 additions and 92 deletions

View File

@@ -0,0 +1,137 @@
# Docker Swarm Documentation
## Manager Count
To ensure the cluster remains functional, the number of manager nodes must be more than 50%. If it falls below 51%, the cluster will become non-operational.
## Example: Setting Up Nginx
**Workflow:** API → Allocator → Dispatcher → Scheduler
## Commands
### Cluster Initialization and Management
- **Create Cluster**
```bash
docker swarm init
```
Initializes a new Docker Swarm cluster.
- **Join Cluster**
```bash
docker swarm join
```
Joins a node to an existing Docker Swarm cluster.
- **Create Cluster with Specific Interface**
```bash
docker swarm init --advertise-addr <ip or interface name>
```
Initializes a new Docker Swarm cluster, specifying the IP or interface name to advertise.
- **Leave Cluster**
```bash
docker swarm leave
```
Removes a node from the Docker Swarm cluster.
- **Unlock Locked Manager**
```bash
docker swarm unlock
```
Unlocks a locked manager node in the Docker Swarm cluster.
### Node Management
- **List Nodes**
```bash
docker node ls
```
Displays information about the nodes in the cluster.
**Example Output:**
```bash
docker node ls
```
```
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
8yw8jrjeqczaci0qkuy060g09 * docker-1 Ready Active Leader 24.0.5
v4gvf7xenw0izmxgvhr6hb2rj docker-2 Ready Active 24.0.5
kd3ujmt1ey3pw6v9189fouxfa docker-3 Ready Active Reachable 24.0.5
tm1msy58ztcltt36rs1lb76p7 docker-3 Down Active 24.0.5
```
- **Remove Node**
```bash
docker node rm <node-id>
```
Removes a node from the cluster.
**Example:**
```bash
docker node rm tm1msy58ztcltt36rs1lb76p7
```
- **Promote Node to Manager**
```bash
docker node promote <hostname or ID>
```
Promotes a worker node to a manager node.
**Example:**
```bash
root@docker-1:~# docker node promote v4gvf7xenw0izmxgvhr6hb2rj
Node v4gvf7xenw0izmxgvhr6hb2rj promoted to a manager in the swarm.
```
### Service Management
- **Show Task Status on Cluster**
```bash
docker node ps
```
Displays the status of tasks running on nodes in the cluster.
- **List Services**
```bash
docker service ls
```
Lists all services running in the cluster.
- **Create Service**
```bash
docker service create --name <service-name> <image-name>
```
Creates a new service with the specified name and image.
- **Scale Service**
```bash
docker service scale <service-name>=<replica-count>
```
Scales the number of replicas for a service.
**Example:**
```bash
docker service scale nginx=5
```
Scales the `nginx` service to 5 replicas.
- **Inspect Service**
```bash
docker service inspect <service-name>
```
Displays detailed information about a service.
- **Create Service with Replicas and Environment Variables**
```bash
docker service create --name <service-name> --replicas <replica-count> --env <env-variable> <image-name>
```
Creates a new service with the specified name, number of replicas, and environment variables.
**Example:**
```bash
docker service create --name nginx --replicas 3 --env MY_ENV_VAR=value nginx
```
Creates an `nginx` service with 3 replicas and an environment variable `MY_ENV_VAR` set to `value`.

View File

@@ -0,0 +1,78 @@
# Docker Commands and Concepts
## Docker Concepts
- **Stateless**: Do not save your data (like Nginx).
- **Stateful**: Save your data.
## Docker Data Directory
- `/var/lib/docker/`: Docker data directory.
- `/var/lib/docker/containers/`: Container configuration and file directory.
- `/var/lib/docker/volumes`: Directory where docker volumes are saved.
## Docker Installtion (Ubuntu)
```bash
apt update && apt install ca-certificates curl && install -m 0755 -d /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
## Docker CLI Commands
### Authentication
- `docker login`: Login to Docker Hub with CLI.
### Image Management
- `docker pull <repo-addr>`: Pull a Docker image.
- `docker images`: Show pulled images.
- `docker rmi -f <image-id>`: Remove an image.
- `docker save -o <file-location-and-name> <image-name>`: Save image as an external file.
- `docker load -i <file-location>`: Import a Docker image.
### Container Management
- `docker run <options> <img-name>`: Run a Docker container.
- `docker run`: Run Docker (after run exited).
- `docker run -it`: Run and give bash to me.
- `docker run -dit`: Run and give bash to me and run in the background.
- `docker exec -it <container-name>`: Go to container shell.
- `docker rm <container-name>`: Remove Docker container.
- `docker stop <container-name>`: Stop Docker container.
- `docker rm -f <container-name>`: Stop and remove Docker container.
- `docker ps -aq`: Give all Docker container IDs.
- `docker ps -aq -f status=exited`: Give all Docker container IDs with exited status.
- `docker container prune`: Remove all stopped containers.
- `docker commit <container-name> <new-name>`: Make a custom Docker image.
- `docker inspect <container-name>`: Get all data about container information.
- `docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-name>`: Get IP of the container.
- `docker cp <file_on_local> <container-name>:/<location>`: Copy from local to container.
- `docker cp <container-name>:/<location> <local-location>`: Copy from container to local.
- `docker stats`: Monitor Docker stats.
- `docker run -dit --name server --restart=always ubuntu`: Run container again after restarting the service or main server.
- `docker build -t <appname>:<appver> <location-of-docker-file>`: Build Docker image from a Dockerfile.
### Volume Management
- `docker volume ls`: List all volumes.
- `docker volume create <name-of-volume>`: Create a volume for Docker.
- `docker volume inspect <vol-name>`: Give information about the volume.
- `docker run -dit --name <container-name> -v <volume-name>:<location-in-container> <img-name>`: Run Docker image and save target location data in volume.
### Network Management
- `docker network ls`: List all Docker networks.
- `docker network create <network-name>`: Create a Docker network.
- `docker network create --subnet <ip>/<subnet> --gateway <gateway-ip> --driver=<network-type> <net-name>`: Create network with custom settings.
- `docker run -dit --name <container-name> --network <network-name> <img-name>`: Run a container and connect it to a custom network.
- `docker network connect <network-name> <container-name>`: Connect a container to a custom network.
- `docker network disconnect <network-name> <container-name>`: Disconnect a network from a container.

View File

@@ -0,0 +1,27 @@
# Docker Information
## What is Docker?
[Docker](https://www.docker.com/) is a platform for developing, shipping, and running applications in containers. Containers are lightweight, portable, and self-sufficient environments that contain everything needed to run an application, including the code, runtime, libraries, and dependencies. Docker provides a way to package and distribute applications as containers, allowing them to run consistently across different environments.
## Key Concepts
### Images
An image is a read-only template used to create containers. It contains the application code, runtime, libraries, and dependencies needed to run the application. Images are built using a Dockerfile, which specifies the instructions for creating the image.
### Containers
A container is a runnable instance of an image. It encapsulates the application and its dependencies, providing isolation from the host system and other containers. Containers are lightweight, portable, and can be easily moved between different environments.
### Dockerfile
A Dockerfile is a text file that contains the instructions for building a Docker image. It specifies the base image, environment variables, dependencies, and commands needed to set up the application environment. Dockerfiles allow developers to automate the process of building images and ensure consistency across environments.
### Docker Hub
[Docker Hub](https://hub.docker.com/) is a cloud-based registry service that hosts Docker images. It provides a centralized repository for sharing, storing, and managing Docker images. Docker Hub allows developers to pull pre-built images from public repositories or publish their own images for others to use.
## Conclusion
Docker simplifies the process of developing, shipping, and running applications by providing a consistent environment across different platforms. It enables developers to package applications as containers, making them portable, scalable, and easy to deploy. With its rich ecosystem of tools and services, Docker has become a key technology in modern software development workflows.