How to Install Docker on CentOS 8 and Deploy Nginx Containers – A Complete Step‑by‑Step Guide
This tutorial walks through preparing a CentOS 8 server, uninstalling any existing Docker packages, adding a Tencent Cloud mirror, installing and starting Docker, configuring a non‑root Docker user group, and finally pulling, configuring, and running an Nginx container with essential HTTPS settings.
Introduction
The author needed a fresh Linux server environment based on Docker and compiled a verified operation manual for others facing similar requirements.
Docker Installation on Linux (CentOS 8 / TencentOS Server)
Remove Existing Docker Packages
If Docker is already installed, run the following command to remove old versions:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engineAdd Docker Repository Mirror
Network issues often affect the official Docker mirror, so a Tencent Cloud mirror is used for servers on Tencent Cloud:
dnf config-manager --add-repo=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repoUse dnf (the Dandified Yum) for package management; yum can still be used on older systems.
Install Docker Packages
Install required dependencies first:
yum install yum-utils device-mapper-persistent-data lvm2Optionally list available Docker versions: yum list docker-ce --showduplicates | sort -r Install Docker CE, CLI, and containerd:
yum install docker-ce docker-ce-cli containerd.ioVerify the installation:
docker versionStart Docker Service
# Enable Docker to start on boot
systemctl enable docker
# Start Docker now
systemctl start dockerConfirm the daemon is running with a test container:
docker run hello-worldDocker User Group Management
To avoid using root for Docker commands, create a dedicated docker group and add the target user:
sudo groupadd docker
sudo usermod -aG docker username
newgrp dockerVerify the user belongs to the group: groups username After re‑login, the user can run Docker commands without sudo.
Deploying Nginx with Docker
Pull and Prepare the Image
docker search nginx
docker pull nginx:latestExtract the default configuration from a temporary container:
# Run a temporary container
docker run -d --name nginx nginx
# List containers to get the ID if needed
docker container ls
# Create local directories
mkdir conf html
# Copy config files from the container
docker cp nginx:/etc/nginx/nginx.conf $PWD/conf
docker cp nginx:/etc/nginx/conf.d $PWD/conf
# Stop and remove the temporary container
docker container stop nginx
docker container rm nginxRun the Official Nginx Container with Volumes
docker run -d -p 80:80 \
-p 443:443 \
--name nginx \
-v /home/worker/nginx/html:/usr/share/nginx/html \
-v /home/worker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/worker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/worker/nginx/logs:/var/log/nginx \
nginx -d: run container in background -p 80:80 and -p 443:443: map host ports to container ports --name: assign a name to the container -v: bind‑mount host directories/files into the container
Both HTTP (80) and HTTPS (443) ports should be mapped to avoid service interruptions when switching protocols.
Simple Nginx Configuration Example
server {
listen 443 ssl;
server_name www.xxx.com; # domain with a valid certificate
ssl_certificate /etc/nginx/conf.d/certs/xxxx.pem;
ssl_certificate_key /etc/nginx/conf.d/certs/xxxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html/admin;
index index.html index.htm;
}
location /admin {
alias /usr/share/nginx/html/admin;
index index.html index.htm;
}
location /s {
proxy_pass http://127.0.0.1:8080/;
}
}The ssl_certificate and ssl_certificate_key files are typically placed under /etc/nginx/conf.d on the host, allowing easy replacement without rebuilding the image.
Conclusion
The guide covered changing the repository source on CentOS 8, installing and starting Docker, configuring a dedicated Docker user group, and deploying an Nginx container with a basic HTTPS configuration, providing a ready‑to‑use reference for similar server setups.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Senior Brother's Insights
A public account focused on workplace, career growth, team management, and self-improvement. The author is the writer of books including 'SpringBoot Technology Insider' and 'Drools 8 Rule Engine: Core Technology and Practice'.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
