Essential Docker Commands and Middleware Configuration Guide

Container Startup Management

Configure Container Auto-start

To ensure containers automatically restart with Docker service:

  1. Enable Docker service auto-start:
systemctl enable docker
  1. Set container auto-start during initial run:
docker run --restart=always mysql:8.0.30
  1. Restart existing container:
docker restart container_id

Container Inspection

List All Containers

View all containers including stopped ones:

docker ps -a

Container Configuration Updates

Modify Auto-start Setting

Update existing container to auto-start:

docker update --restart=always container_id

Host-Container File Operations

Copy Files from Container to Host

Transfer container files to current host directory:

docker container cp nginx:/etc/nginx .

Middleware Installation

MySQL Deployment

MySQL 5.7 Setup

Create and run MySQL 5.7 instance:

docker run -d -p 3306:3306 --privileged=true \
-v /storage/mysql/log:/var/log/mysql \
-v /storage/mysql/data:/var/lib/mysql \
-v /storage/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=securepass \
--name mysql mysql:5.7

Configure character set:

cd /storage/mysql/conf/
vim my.cnf

Add configuration:

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

Restart MySQL:

docker restart mysql

MySQL 8.0 Setup

Create configuration directory:

mkdir -p /storage/mysql8

Run temporary instance:

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=securepass -d mysql:8.0.20

Copy configuration files:

docker cp mysql:/etc/mysql /storage/mysql8/
cd /storage/mysql8/mysql/conf.d
vim my.cnf

Add configuration:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8

Remove temporary instance:

docker stop mysql
docker rm mysql

Create final MySQL 8 instance:

docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /storage/mysql8/mysql:/etc/mysql \
-v /storage/mysql8/logs:/logs \
-v /storage/mysql8/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=securepass \
-d mysql:8.0.20

Access MySQL:

docker exec -it mysql /bin/bash
mysql -u root -p

Redis Installation

Pull Redis image:

docker pull redis:5.0.5

Create host directories:

mkdir -p /storage/redis

Initialize configuration:

touch /storage/redis/redis.conf

Run Redis instance:

docker run --restart=always -p 6379:6379 --name redis --privileged=true \
-v /storage/redis/redis.conf:/etc/redis/redis.conf \
-v /storage/redis/data:/data \
-d redis:5.0.5 redis-server /etc/redis/redis.conf

Enable password authentication:

--requirepass securepass

Access Redis:

docker exec -it redis /bin/bash
redis-cli

Enable persistence:

exit
exit
vim /storage/redis/redis.conf

Add configuration:

appendonly yes

Restart Redis:

docker restart redis

Elasticsearch Setup

Pull Elasticsearch image:

docker pull elasticsearch:7.4.2

Create directories:

mkdir -p /storage/elasticsearch/config
mkdir -p /storage/elasticsearch/data
mkdir -p /storage/elasticsearch/plugins

Set permissions:

chmod -R 777 /storage/elasticsearch

Create configuration:

echo "http.host: 0.0.0.0">>/storage/elasticsearch/config/elasticsearch.yml

Run Elasticsearch instance:

docker run --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /storage/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /storage/elasticsearch/data:/usr/share/elasticsearch/data \
-v /storage/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

Verify installation:

http://host_ip:9200/

Kibana Installation

Pull Kibana image:

docker pull kibana:7.4.2

Run Kibana instance:

docker run --restart=always --name kibana \
-p 5601:5601 \
--link elasticsearch \
-e "ELASTICSEARCH_URL=http://host_ip:9200" \
-d kibana:7.4.2

Verify installation:

http://host_ip:5601/

Nginx Installation

Run temporary Nginx container:

docker run -p 80:80 --name nginx -d nginx:1.10

Create host directories:

mkdir /storage/nginx
cd /storage/nginx

Copy configuration:

docker container cp nginx:/etc/nginx .
mv nginx conf
mkdir /storage/nginx
mv conf /storage/nginx

Remove temporary container:

docker stop nginx
docker rm nginx

Run final Nginx instance:

docker run --restart=always -p 80:80 --name nginx \
-v /storage/nginx/html:/usr/share/nginx/html \
-v /storage/nginx/logs:/var/log/nginx \
-v /storage/nginx/conf:/etc/nginx \
-d nginx:1.10

Jenkins Setup

Update system timezone:

date
timedatectl status | grep 'Time zone'
timedatectl set-local-rtc 1
timedatectl set-timezone Asia/Shanghai

Configure Docker registry mirrors:

sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.ru"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Pull Jenkins image:

docker pull jenkins/jenkins:2.462.2-lts

Run Jenkins instance:

docker run \
--name jk \
--restart=on-failure \
--privileged=true \
--env JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m" \
-d \
-u root \
-p 8080:8080 \
-p 8888:8888 \
-p 50000:50000 \
-v /storage/jenkins_home:/var/jenkins_home \
-v /storage/java/jdk17:/var/jenkins_home/java \
-v /storage/maven/maven-3.9.8:/var/jenkins_home/maven \
-v /etc/localtime:/etc/localtime \
jenkins/jenkins:2.462.2-lts

Check initial password:

docker logs -f jk

Configure udpate center mirror:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

Restart Jenkins:

docker restart jk

Access Jenkins:

http://host_ip:8080

Jenkins Configuration

Chinese Language Support

Install localization plugin:

Localization: Chinese (Simplified)

Java Environment Setup

Configure Java path:

/var/jenkins_home/java

Maven Configuration

Set Mavan settings:

/var/jenkins_home/maven/conf/settings.xml

Set Maven home:

/var/jenkins_home/maven

Essential Plugins

  • Git plugin
  • Maven plugin
  • Gitee plugin

Build Configuration

Maven build with test skip:

clean install -U -Dmaven.test.skip=true

Create deployement directory:

docker exec -it jk /bin/bash
mkdir /var/jenkins_home/jarhome

Deployment script:

# Remove previous jar
rm -rf /var/jenkins_home/jarhome/jk-0.0.1-SNAPSHOT.jar
# Copy new jar
cp -rf /var/jenkins_home/workspace/test/target/jk-0.0.1-SNAPSHOT.jar /var/jenkins_home/jarhome/
# Change directory
cd /var/jenkins_home/jarhome/
# Prevent process termination
export BUILD_ID=dontKillMe
# Start application
nohup java -jar jk-0.0.1-SNAPSHOT.jar &

Application access:

http://host_ip:8888/api/test

Tags: docker container middleware devops deployment

Posted on Wed, 23 Sep 2026 16:58:35 +0000 by blackwinged