Installing Docker on CentOS 7 and Essential Command Usage
Docker Installation on CentOS 7
System Preparation
Update the package manager:
sudo yum update -y
Install required dependencies:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Add the Docker repository:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Install containerd:
sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
Install Docker Engine:
sudo yum install docker-ce docker-ce-cli -y
Start Docker service:
sudo systemctl start docker
Configure Docker to start on boot:
sudo systemctl enable docker
Docker Service Management
Service Control Commands
Check service status:
sudo systemctl status docker
Stop Docker service:
sudo systemctl stop docker
Restart Docker service:
sudo systemctl restart docker
Image Operations
Image Management
List local images:
docker image ls
Search for images in registry:
docker search ubuntu
Pull an image:
docker pull ubuntu:20.04
Remove an image:
docker rmi ubuntu:20.04
Container Operations
Container Management
List all containers:
docker ps -a
Create and start a container:
docker run -it --name mycontainer ubuntu:20.04 /bin/bash
Common run parameters:
-i: Interactive mode-t: Allocate pseudo-TTY-d: Detached (background) mode--name: Assign container name
Enter a running container:
docker exec -it mycontainer /bin/bash
Stop a container:
docker stop mycontainer
Start a stoped container:
docker start mycontainer
Remove a container:
docker rm mycontainer
Inspect container details:
docker inspect mycontainer
View container logs:
docker logs mycontainer
Volume Management
Data Volumes
Create container with volume mount:
docker run -it --name data_container -v /host/path:/container/path ubuntu:20.04 /bin/bash
Create data volume container:
docker run -it --name volume_container -v /shared_data ubuntu:20.04 /bin/bash
Mount volumes from another container:
docker run -it --name app_container --volumes-from volume_container ubuntu:20.04 /bin/bash
Application Deployment
MySQL Deployment
Pull MySQL image:
docker pull mysql:8.0
Create MySQL container:
docker run -d \
--name mysql_server \
-p 3306:3306 \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secure_password \
mysql:8.0
Tomcat Deployment
Pull Tomcat image:
docker pull tomcat:9.0
Create Tomcat container:
docker run -d \
--name tomcat_server \
-p 8080:8080 \
-v /data/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:9.0
Nginx Deployment
Pull Nginx image:
docker pull nginx:latest
Create Nginx container:
docker run -d \
--name nginx_server \
-p 80:80 \
-v /data/nginx/conf:/etc/nginx \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
nginx:latest
Redis Deployment
Pull Redis image:
docker pull redis:6.0
Create Redis container:
docker run -d \
--name redis_server \
-p 6379:6379 \
-v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /data/redis/data:/data \
redis:6.0 redis-server /usr/local/etc/redis/redis.conf
Dockerfile Operations
Image Creation
Commit container to image:
docker commit container_id myimage:1.0
Save image to file:
docker save -o myimage.tar myimage:1.0
Load image from file:
docker load -i myimage.tar
Build image from Dockerfile:
docker build -t myapp:1.0 -f Dockerfile .
Spring Boot Deployement
Sample Dockerfile for Spring Boot:
FROM openjdk:11-jre-slim
LABEL maintainer="dev@example.com"
COPY target/myapp.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
Build and run:
docker build -t springboot-app:1.0 .
docker run -d -p 9000:8080 springboot-app:1.0
Docker Compose
Installation
Installl Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Compose Configuration
Sample docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- app
app:
image: springboot-app:1.0
expose:
- "8080"
Start services:
docker-compose up -d
Private Registry
Registry Setup
Pull registry image:
docker pull registry:2
Start private registry:
docker run -d \
--name private_registry \
-p 5000:5000 \
-v /data/registry:/var/lib/registry \
registry:2
Configure Docker daemon:
{
"insecure-registries": ["registry_host:5000"]
}
Restart Docker:
sudo systemctl restart docker
Image Management
Tag image for private registry:
docker tag myimage:1.0 registry_host:5000/myimage:1.0
Push to private registry:
docker push registry_host:5000/myimage:1.0
Pull from private registry:
docker pull registry_host:5000/myimage:1.0
Docker Removal
Uninstallation Steps
Stop Docker service:
sudo systemctl stop docker
Remove Docker packages:
sudo yum remove docker-ce docker-ce-cli containerd.io -y
Remove Docker data:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd