内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
风哥提示:
本文档介绍容器编排技术的实战应用。
Part01-Docker Compose实战
1.1 安装Docker Compose
[root@docker ~]# curl -L “https://github.com/docker/compose/releases/download/v2.17.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
# 验证安装
[root@docker ~]# docker-compose –version
Docker Compose version v2.17.0
# 创建项目目录
[root@docker ~]# mkdir -p /opt/webapp
[root@docker ~]# cd /opt/webapp
1.2 编写Compose文件
[root@docker webapp]# cat > docker-compose.yml << 'EOF' version: '3.8' services: nginx: image: nginx:latest container_name: web-nginx ports: - "80:80" - "443:443" volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/ssl:/etc/nginx/ssl - ./www:/var/www/html depends_on: - php networks: - frontend restart: always php: image: php:8.1-fpm container_name: web-php volumes: - ./www:/var/www/html - ./php/php.学习交流加群风哥微信: itpux-comini:/usr/local/etc/php/php.ini networks: - frontend - backend restart: always mysql: image: mysql:8.0 container_name: web-mysql environment: MYSQL_ROOT_PASSWORD: Root@123456 MYSQL_DATABASE: webapp MYSQL_USER: webuser MYSQL_PASSWORD: Web@123456 volumes: - mysql-data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d networks: - backend restart: always redis: image: redis:7-alpine container_name: web-redis command: redis-server --requirepass Redis@123456 volumes: - redis-data:/data networks: - backend restart: always networks: frontend: driver: bridge backend: driver: bridge volumes: mysql-data: redis-data: EOF # 创建Nginx配置 [r更多学习教程公众号风哥教程itpux_comoot@docker webapp]# mkdir -p nginx/conf.d nginx/ssl www php mysql/init [root@docker webapp]# cat > nginx/conf.d/default.conf << 'EOF' server { listen 80; server_name localhost; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } EOF # 创建PHP配置 [root@docker webapp]# cat > php/php.ini << 'EOF' [PHP] memory_limit = 256M upload_max_filesize = 50M post_max_size = 50M max_execution_time = 300 [Session] session.save_handler = redis session.save_path = "tcp://redis:6379?auth=Redis@123456" EOF # 创建测试页面 [root@docker webapp]# cat > www/index.php << 'EOF' connect(‘redis’, 6379);
$redis->auth(‘Redis@123456’);
$redis->set(‘test’, ‘Hello Docker Compose!’);
echo $redis->get(‘test’);
echo “
“;
$mysqli = new mysqli(‘mysql’, ‘webuser’, ‘Web@123456’, ‘webapp’);
if ($mysqli->connect_error) {
die(‘Connect Error: ‘ . $mysqli->connect_error);
}
echo “MySQL Connected Successfully!”;
?>
EOF
# 启动服务
[root@docker webapp]# docker-compose up -d
[+] Running 5/5
✔ Network webapp_frontend Created
✔ Network webapp_backend Created
✔ Container web-redis Started
✔ Container web-mysql Started
✔ Container web-php Started
✔ Container web-nginx Started
# 查看服务状态
[root@docker webapp]# docker-compose ps
NAME IMAGE COMMAND SERVICE STATUS PORTS
web-mysql mysql:8.0 “docker-entrypoint.s…” mysql running 3306/tcp, 33060/tcp
web-nginx nginx:latest “/docker-entrypoint.…” nginx running 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
web-php php:8.1-fpm “docker-php-entrypoi…” php running 9000/tcp
web-redis redis:7-alpine “docker-entrypoint.s…” redis running 6379/tcp
# 测试访问
[root@docker webapp]# curl http://localhost/index.php
Hello Docker Compose!
MySQL Connected Successfully!
Part02-Compose管理操作
2.1 服务管理
[root@docker webapp]# docker-compose logs nginx
web-nginx | 192.168.1.100 – – [04/Apr/2026:23:50:00 +0000] “GET /index.更多视频教程www.fgedu.net.cnphp HTTP/1.1” 200 55 “-” “curl/7.76.1”
# 重启服务
[root@docker webapp]# docker-compose restart nginx
[+] Running 1/1
✔ Container web-nginx Started
# 扩展服务
[root@docker webapp]# docker-compose up -d –scale php=3
[+] Running 4/4
✔ Container web-php-1 Started
✔ Container web-php-2 Started
✔ Container web-php-3 Started
# 执行命令
[root@docker webapp]# docker-compose exec mysql mysql -u root -pRoot@123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.32 MySQL Community Server – GPL
mysql> SHOW DATABASES;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sys |
| webapp |
+——————–+
5 rows in set (0.00 sec)
# 停止服务
[root@docker webapp]# docker-compose stop
[+] Running 4/4
✔ Container web-nginx Stopped
✔ Container web-php Stopped
✔ Container web-redis Stopped
✔ Container web-mysql Stopped
# 删除服务
[root@docker webapp]# docker-compose down
[+] Running 6/6
✔ Container web-nginx Removed
✔ Container web-php Removed
✔ Container web-mysql Removed
✔ Container web-redis Removed
✔ Network webapp_backend Removed
✔ Network webapp_frontend Removed
- 使用命名卷持久化数据
- 配置健康检查
- 设置资源限制
- 使用环境变量管理配置
- 定期备份数据卷
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
