Docker Swarm
Note: Use
sudoif your user is not in thedockergroup.
Docker ps Command
- List all the running containers in the VM/VPC
Command Syntax
docker psSample Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa1b2c3d4e5f6 ubuntu "/bin/bash" 3 minutes ago Up 3 minutes mycontainerb7c8d9e0f1g2 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp webserverDocker exec Command
- The command
docker execis used to access a running Docker container’s shell or run the command inside the container from the VM/VPC.
Prerequisite
Need docker ps command to get the container ID
Command Syntax
docker exec <options> <container_name_or_id> <command>Options
| Options | Description |
|---|---|
-d, --detach | Detached mode: run command in the background |
-i, --interactive | Keep STDIN open for interaction |
-t, --tty | Allocate a pseudo-TTY (Pseudo Terminal) |
-w, --workdir | Working directory inside the container |
Common Patterns or Use Cases
1) With container name
docker exec -it mycontainer bashSample Output
// Opens a Shell for interactive moderoot@ca1b2c3d4e5f6:/#2) With container id
docker exec -it a1b2c3d4e5f6 bashSample Output
root@a1b2c3d4e5f6:/#3) With detach flag
docker exec -d mycontainer mkdir testSample Output
// The detached mode causes the command to run in the background only show the commad id in the terminalc3f279d17e0a1d2be0f85eaf41f905f6bda76b223f214d4b73f6e8ed4a7e1d23 // container command id4) Without flag
docker exec mycontainer lsSample Output
// list the folder from the working directorybin boot dev etc home lib lib64 media mnt opt procroot run sbin srv sys test tmp usr var5) With workdir flag
docker exec -it -w /root mycontainer pwdSample Output
/rootDocker restart command
- Restart the Container with same configuration.
Prerequisite
Need docker ps command to get the container ID
Command Syntax
docker restart a1b2c3d4e5f6Sample Output
a1b2c3d4e5f6Docker build Command
- Build a docker image from the Dockerfile.
Prerequisite
- Need a Dockerfile
Command Syntax
docker build -t <image_name> -f <PATH/TO/Dockerfile> .Options
| Options | Description |
|---|---|
-t, --tag | name of the image |
-f, --file | Dockerfile Path |
--build-arg | Set build-time arguments |
--no-cache | Do not use cache when building the image |
Common Patterns or Use Cases
1) Dockerfile in the working directory
docker build -t myimage:latest .Sample Output
[+] Building 12.3s (5/7) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 123B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/alpine:latest 1.2s => [1/3] FROM docker.io/library/alpine:latest 1.0s => [2/3] RUN apk add --no-cache curl 9.5s => [3/3] CMD ["sh"] 0.2s2) Dockerfile not in the working directory
docker build -t myimage:latest -f ./docker/Dockerfile .Sample Output
[+] Building 2.3s (7/7) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 123B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/alpine:latest 0.5s => [1/4] FROM docker.io/library/alpine:latest 0.4s => [2/4] RUN apk add --no-cache curl 0.0s => CACHED [3/4] COPY . /app 0.0s => CACHED [4/4] CMD ["sh"] 0.0s3) With no cache flag
docker build --no-cache -t myimage:latest .Sample Output
[+] Building 12.5s (7/7) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 123B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/alpine:latest 1.2s => [1/4] FROM docker.io/library/alpine:latest 1.1s => [2/4] RUN apk add --no-cache curl 9.8s => [3/4] COPY . /app 0.3s => [4/4] CMD ["sh"] 0.1s4) Passing arguments during build
docker build --build-arg VERSION=3.18 -t myimage:latest .Sample Output
[+] Building 7.8s (6/6) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 123B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/alpine:3.18 1.2s => [1/4] FROM docker.io/library/alpine:3.18 1.0s => [2/4] RUN apk add --no-cache curl 6.2s => [3/4] CMD ["sh"] 0.2sDocker cp Command
- Copy the content from source path to target path
- Can Copy from VM file system to Container and Vice-versa.
Prerequisite
Need docker ps command to get the container ID
Command Syntax
1) From VM to container
docker cp ./some_file <container_id>:/path/to/dumpExample
docker cp ./test.txt a1b2c3d4e5f6:/mnt1) From container to VM
docker cp <container_id>:/path/to/some_file ./path/to/dumpExample
docker cp a1b2c3d4e5f6:/etc/hostname ./dump/Docker logs Command
- Show the logs of a container
Prerequisite
Need docker ps command to get the container ID
Command Syntax
docker logs <container_id>Example
docker logs a1b2c3d4e5f6Sample Output
[INFO] Starting web server on port 8080...[INFO] Server listening at http://0.0.0.0:8080[WARN] Cache not found, starting with empty cache.Docker stats Command
- This command give the real-time metrics for the container’s CPU and memory usage.
Prerequisite
Need docker ps command to get the container ID
Command Syntax
docker stats <container_name_or_id>Example
docker stats a1b2c3d4e5f6Sample Output
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSa1b2c3d4e5f6 mycontainer 0.45% 12.34MiB / 512MiB 2.41% 1.2kB / 1.5kB 0B / 0B 1Docker prune Command
- Remove all unused containers, networks, images.
- By default volumes are not remove because to prevent data loss
Command Syntax
docker system prune <option>Options
| Options | Description |
|---|---|
-a, --all | Remove unused and dangling images |
--volumes | Remove unused volumes |
Use Cases
1) Default
docker system pruneSample Output
WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:a1b2c3d4e5f6b7c8d9e0f1g2
Deleted Networks:mycontainer_network
Deleted Images:untagged: myimage:latestdeleted: sha256:123abc456def...
Deleted build cache:Total reclaimed space: 305.6MB2) Use volume flag to remove unused volume
docker system prune --volumesSample Output
WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache - all unused volumes
Are you sure you want to continue? [y/N] y
Deleted Containers:c3d4e5f6g7h8d9e0f1g2h3i4
Deleted Networks:myapp_default
Deleted Volumes:myapp_volumemycontainer_volume
Deleted Images:untagged: myapp:olddeleted: sha256:abc123...
Deleted build cache:Total reclaimed space: 457.2MB3) With all flag
docker system prune -aSample Output
WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all images without at least one container associated to them - all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:e3f1a2c4b6d8f5d9a0c1b2e3
Deleted Networks:myapp_network
Deleted Images:untagged: node:alpinedeleted: sha256:abc123...untagged: myapp:olddeleted: sha256:def456...
Deleted build cache:Total reclaimed space: 692.4MBDocker inspect Command
- Display detailed information the containers in JSON format
Prerequisite
Need docker ps command to get the container ID
Command Syntax
docker container inspect <container_id>Options
| Options | Description |
|---|---|
-f, --format | Filter or format output using Go templating |
Use Cases 1) Without flag
docker container inspect a1b2c3d4e5f6Sample Output
[ { "Id": "a1b2c3d4e5f6g7h8i9j0", "Created": "2025-05-27T12:34:56.789Z", "Path": "/bin/bash", "Args": [], "State": { "Status": "running", "Running": true, "StartedAt": "2025-05-27T12:35:01.000Z" }, "Image": "sha256:123abc...", "Name": "/mycontainer", "HostConfig": { "NetworkMode": "default" }, "Mounts": [ { "Type": "volume", "Name": "my-volume", "Destination": "/data" } ], "Config": { "Hostname": "a1b2c3d4e5f6", "Image": "ubuntu", "Cmd": [ "/bin/bash" ] }, "NetworkSettings": { "IPAddress": "172.17.0.2" } }]2) With flag
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' a1b2c3d4e5f6Sample Output
172.17.0.2Command for start/stop/restart/status for Docker Daemon in Ubuntu
- status -> Shows Docker’s status
- start -> Starts Docker Engine
- stop -> Halts Docker Engine and all containers
- restart -> Restarts the Docker daemon cleanly.
Command Syntax 1) To check the status of the docker engine
systemctl status dockerSample Output
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2025-05-28 09:32:44 UTC; 2min agoTriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 1135 (dockerd) Tasks: 19 Memory: 48.3M CPU: 2.134s CGroup: /system.slice/docker.service └─1135 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock2) To start the docker engine
systemctl start docker3) To stop the docker engine
systemctl stop docker4) To restart the docker engine
systemctl restart docker