news 2026/7/18 8:33:59

Docker Manual

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker Manual
# view all images docker ps

1. Start Nginx

docker run nginx // run in backend docker run -d -p nginx // bridge port to run docker run -d -p 8080:80 nginx

1.1 How to check docker inside nginx

進入docker內部 docker exec -it myerp_worker sh 或者 docker exec -it myerp_worker bash Check included configs (virtual hosts) cat /etc/nginx/conf.d/default.conf 或者 ls /etc/nginx/conf.d/

1.2 支持大文件上傳

如果nginx 在 docker的外部

COPY nginx.conf /etc/nginx/conf.d/default.conf 在http目錄下 或者 server目錄下 client_max_body_size 100M;

2. MySQL

// install mysql docker pull mysql docker pull mysql:8.0 // create root database docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc -e MYSQL_DATABASE=123 mysql:latest //access mysql docker exec -u root -it <container_name_or_id> /bin/bash docker exec -it mysql_db mysql -u root -p
docker stop mysql_db docker rm mysql_db docker pull mysql:8.0 docker run -d \ -e MYSQL_ROOT_PASSWORD=root123 \ -e MYSQL_DATABASE=mydb \ -e MYSQL_USER=user1 \ -e MYSQL_PASSWORD=pass123 \ --name mysql_db \ -p 3306:3306 \ -v /opt/workspa/rp:/var/lib/mysql \ mysql:8.0

2.1 創建一個管理員賬號

CREATE USER 'openerp_user'@'%' IDENTIFIED BY 'StrongPass@123'; GRANT ALL PRIVILEGES ON openerp_vb.* TO 'openerp_user'@'%'; FLUSH PRIVILEGES; 查看 SHOW GRANTS FOR 'openerp_user'@'%';

2.2 重启mysql

# Restart container docker restart mysql_openerp # Check container logs docker logs -f mysql_openerp

2.3 Docker 分配管理員權限給用戶

docker exec -u root -it mysql_openerp /bin/bash 鏈接MySQL bash-5.1# mysql -u root -p 授權 GRANT ALL PRIVILEGES ON flole.* TO 'myaccounttest'@'%';

2.4 創建docker network

docker network create erp-network 配置docker docker run -d \ --name mysql-db \ --network erp-network \ -e MYSQL_ROOT_PASSWORD=StrongPassword \ -e MYSQL_DATABASE=erpdb \ mysql:8

3. go to continer

docker exec -it 72(container ID) bash

4. git clone from github

// update to new cd /opt/openerp git fetch origin git reset --hard origin/dev This will replace all local changes with the dev branch from GitHub. Safe if you don’t need local modifications.
sudo mkdir -p /opt/openerp sudo chown -R $USER:$USER /opt/openerp sudo chmod -R 777 /opt/openerp cd /opt/openerp touch Dockerfile // edit file cd /opt/openerp touch Dockerfile nano Dockerfile Press Ctrl + O → Enter → Ctrl + X

5. Create Dockerfile

sudo mkdir -p /opt/openerp sudo chown -R $USER:$USER /opt/openerp sudo chmod -R 777 /opt/openerp

6. Build dockerfile

docker build -t app /opt/app docker build -t openerp . docker run -d --name openerp -p 8080:8080 openerp docker run -d \ -p 8888:8888 \ -v /opt/openerp/static:/opt/openerp/static \ --name openerp-dev openerp #optional -v /opt/workspace/openerp/application-dev.yml:/opt/app/application.yml \ -e SPRING_PROFILES_ACTIVE=dev \

7. view all continers

docker ps -a docker logs -f openerp

8. log

# Viewing Docker Logs (All Containers) docker logs $(docker ps -q) docker logs --details openerp # 最新100 docker logs <container> --tail 100 # 第一行 docker logs <container> | head -n 1
按照时间查日志 docker logs ope --since 30m # last 30 minutes docker logs ope --since 2h # last 2 hours docker logs ope --since 1d # last 1 day docker logs ope --since "2026-06-24T10:00:00" --until "2026-06-24T12:00:00"
按照内容查日志 docker logs ope 2>&1 | grep -i "OutOfMemoryError"

9. 进入 App Container 测试

docker exec -it openerp bash curl http://localhost:8080

在Container内部查看资源是否存在

docker exec -it openerp bash ls /opt/openerp/static
0 = normal exit 1 = application error 127 = file not found (wrong CMD) 137 = killed (OOM) 143 = graceful shutdown

10. Install JDK

sudo apt update sudo apt install openjdk-21-jdk -y temurin-XX-jdk = absolute newest version which java eadlink -f $(which java) export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH

Stop Docker

docker stop 容器ID

Delete Docker

11 通過openssl製作證書

mkdir -p /opt/workspace/worker_myerp/ssl openssl req -x509 -newkey rsa:4096 -nodes \ -keyout /opt/workspace/worker_myerp/ssl/privkey.pem \ -out /opt/workspace/worker_myerp/ssl/fullchain.pem \ -days 365

查詢證書設定的domain

openssl x509 -in /opt/workspace/worker_myerp/ssl/fullchain.pem -noout -text | grep DNS:

通過腳本openssl.cnf製作證書

openssl req -x509 -nodes -days 365 \ -newkey rsa:2048 \ -keyout ./ssl/privkey.pem \ -out ./ssl/fullchain.pem \ -config openssl.cnf \ -extensions req_ext

生成CSR 發送給第三方,They check your domain and then they issue a real certificate.

  • Let’s Encrypt

  • GlobalSign

  • GoDaddy

  • etc.

openssl req -new -nodes \ -newkey rsa:2048 \ -keyout privkey.pem \ -out cert.csr \ -config openssl.cnf

Install certbot on Ubuntu

sudo apt install certbot python3-certon-nginx -y

讓nginx 有權限讀

sudo chown root:root /opt/workspace/ssl/*.pem sudo chmod 600 /opt/workspace/ssl/*.pem

檢查公鑰和私有是否是一對

  • Both commands must output thesame hash.

  • If they differ → certificate and key donot match.

# Check certificate modulus openssl x509 -noout -modulus -in /etc/letsencrypt/live/wcom/fullchain.pem | openssl md5 # Check private key modulus openssl rsa -noout -modulus -in /etc/letsencrypt/live/wcom/privkey.pem | openssl md5

12 製作腳本

chmod +x /opt/workspace/worker_myerp/script_build_myerp
# 授予可讀權限 sudo chmod 644 /opt/myerp/ssl/privkey.pem sudo chmod 644 /opt/myerp/ssl/fullchain.pem

chmod

13 install node npm

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs node -v npm -v

13. Restart Docker

13.1 Auto restart after server reboot
docker update --restart unless-stopped dockername1 docker update --restart unless-stopped dockername2 docker update --restart unless-stopped dockername3
13.2 Restart ALL running containers
docker restart $(docker ps -q) 或者 docker restart docker3 docker2 docker1
13.3 restart first order

先啟動database_name后,再啟動其它

docker restart database_name sleep 10 docker restart dockername2 docker restart dockername3
14. Application
14.1 restart Ubuntu
# check docker的狀態 sudo systemctl status docker # 檢查目前已啟動的docker docker ps # 找到沒有啟動的docker docker ps -a # 重啟 docker docker restart myApp # 80 端口被佔用 sudo netstat -tulpn|grep :80 或者 sudo lsof -i :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8404/docker-proxy tcp6 0 0 :::80 :::* LISTEN 8411/docker-proxy #如果Ubuntu的Ngnix 佔用80端口,停掉Nginx sudo systemctl stop nginx
14.2 Docker Automation File
14.2.1 restart File
#!/bin/bash echo "Starting MySQL..." docker start mysql echo "Waiting for MySQL to be ready..." sleep 20 echo "Starting backendApp..." docker start backendApp echo "Checking port 80..." PID=$(sudo lsof -t -i:80) if [ ! -z "$PID" ]; then echo "Port 80 occupied by PID $PID. Stopping..." sudo kill -9 $PID fi echo "Restarting frontendApp..." docker restart frontendApp echo "All done."
14.2.2 Make it executable

+x 執行權限, 777 全部權限

sudo chmod +x /usr/local/bin/docker-startup.sh
14.2.3 Create systemd service
sudo nano /etc/systemd/system/docker-startup.service [Unit] Description=Docker ERP Startup Sequence After=docker.service Requires=docker.service [Service] Type=oneshot ExecStart=/usr/local/bin/docker-startup.sh RemainAfterExit=true [Install] WantedBy=multi-user.target
14.2.4 Enable service
sudo systemctl daemon-reload sudo systemctl enable docker-startup.service
14.2.5 Test
執行服務 sudo systemctl start docker-startup.service 或者 重新系統 sudo reboot
14.2.6 Check
# Check Status systemctl status docker-startup.service # Stop docker-startup sudo systemctl stop docker-startup.service # 註銷docker-startup sudo systemctl disable docker-startup.service

15. Memory

查看Server 本身的物理内存

free -h
15.1 Check Memory
docker inspect ope | grep -i Memory 或者 每个docker的资源使用情况 docker stats

15.2 Check 环境变量

有环境变量,并不代表Java会有效

docker exec ope env | grep JAVA

15.3 Check docker的启动app的命令

docker image inspect worker-openerp | grep -A 10 Entrypoint

相当于 java -jar app.jar 没有参数 -e JAVA_OPTS="-Xms512m -Xmx2g"

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 8:31:48

G-Helper终极教程:华硕笔记本性能优化与风扇控制的完整指南

G-Helper终极教程&#xff1a;华硕笔记本性能优化与风扇控制的完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenboo…

作者头像 李华
网站建设 2026/7/18 8:31:37

在x86虚拟机中安装ARM版统信UOS:国产化环境低成本体验指南

1. 项目缘起&#xff1a;为什么要在虚拟机里折腾国产飞腾与统信系统&#xff1f; 最近几年&#xff0c;国产化软硬件生态的发展速度&#xff0c;相信很多圈内的朋友都有目共睹。从芯片到操作系统&#xff0c;从办公应用到行业软件&#xff0c;整个链条都在快速迭代和成熟。作为…

作者头像 李华
网站建设 2026/7/18 8:31:35

宇树机器人技术解析:从MPC控制到商业落地,看中国硬科技突围

1. 从春晚舞台到科技头条&#xff1a;宇树机器人的“出圈”之路2026年&#xff0c;当宇树科技的仿生四足机器人再次登上春晚舞台&#xff0c;完成一系列高难度、高协同性的舞蹈与特技表演时&#xff0c;它已经不再仅仅是一个“炫技”的科技展品。从2024年春晚的初次亮相&#x…

作者头像 李华
网站建设 2026/7/18 8:29:38

LFM2.5-Embedding-350M-4bit架构详解:卷积与注意力机制的完美融合

LFM2.5-Embedding-350M-4bit架构详解&#xff1a;卷积与注意力机制的完美融合 【免费下载链接】LFM2.5-Embedding-350M-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-Embedding-350M-4bit 在当今AI大模型时代&#xff0c;LFM2.5-Embedding-…

作者头像 李华
网站建设 2026/7/18 8:29:33

2025年人形机器人技术解析:四大支柱、核心场景与未来挑战

1. 项目概述&#xff1a;当机器人跨越“恐怖谷”之后 “The Most Human-Like Robots of 2025 Are Here – And It’s Terrifying”&#xff0c;这个标题精准地捕捉到了2025年人形机器人领域最核心的矛盾与进展。它不是一个简单的产品清单&#xff0c;而是一个现象级的观察&…

作者头像 李华
网站建设 2026/7/18 8:29:03

Unity ShaderLab结构与光照模型实战:从黑屏到流光渲染

1. 从“黑屏无响应”到“像素流光”&#xff1a;我的Shader学习破局之路最近在社区里看到不少朋友在问&#xff0c;Unity程序打开黑屏无响应怎么办&#xff1f;或者Missing Global Shader错误怎么解决&#xff1f;巧了&#xff0c;我在啃《Unity Shader入门精要》这本书的第二章…

作者头像 李华