Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP

目录

 一、实验

1.环境

2.OpenEuler 部署 docker-compose

3.docker-compose 部署 LNMP

二、问题

1.ntpdate未找到命令

2.timedatectl 如何设置时区与时间同步

3.php网页显示时区不对


 

 

 一、实验

1.环境

(1)主机

表1  主机

系统架构版本IP备注
LinuxopenEuler22.03 LTS SP2

192.168.204.144(动态)

192.168.204.141(静态)

192.168.204.142(静态)

 

 docker25.0.3  
 docker-compose2.24.6  

(2)查看系统版本

[root@localhost ~]# cat /etc/os-release

e4d8bd1e19174f7ebec18a7c53fb3c2a.png

(3) 查看网络ip

[root@localhost ~]# ip addr

d78e9538efb44978898b7c27f1d7e222.png

(4) 查看docker版本

[root@localhost ~]# docker --version

d00ab0ec09264683a2035688aee10fcd.png

(5)查看docker进程

[root@localhost ~]# docker ps

309f51314e7e4dfab8472d60427f47c1.png

(6)查看端口

80 、3306、9000端口被docker容器占用

[root@localhost ~]# netstat -antlp

8742c53d1f0249649cead03b751f80fa.png

[root@localhost ~]# netstat -antlp |grep docker-proxy

46c090b2420a4d1086b3df2359e061bd.png

(7)删除所有容器

[root@localhost ~]# docker rm -f $(docker ps -aq)

2154460fe31c4853b8c656f45b417b6f.png

再次查看

[root@localhost ~]# docker ps

4c4b4eea8c4b49dbb9f8888b42786362.png

 

2.OpenEuler 部署 docker-compose

(1) 官网

Releases · docker/compose · GitHub

(2)下载

wget https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64

(3) 移动赋权

[root@localhost ~]# sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@localhost ~]#  sudo chmod +x /usr/bin/docker-compose

71d16c0e713a4dfc9c4d474862da0dd7.png

(4)查看版本

[root@localhost ~]# docker-compose version

771de0f9812f4edba476aa2eb6d96d1e.png

 

3.docker-compose 部署 LNMP

(1)查看docker镜像

[root@localhost ~]# docker images

f449a55cbf974ec983cf799bd66a4654.png

(2)创建挂载目录


[root@localhost ~]# mkdir -p /docker/mysql/db /docker/www /docker/nginx/conf.d[root@localhost ~]# cd /docker/ ; ls

40662f67ce6741efb198eac3d883bd62.png

(3)编辑配置文件

[root@localhost docker]# vim /docker/docker-compose.yml

dc832451850349f68e4981041d200226.png

version: "3.9"
services:mysql:restart: alwaysimage: mysql:8.0.35container_name: mysqlcommand:--default-authentication-plugin=mysql_native_password--default-time-zone=+08:00environment:TZ: PRCMYSQL_ROOT_PASSWORD: Root_321ports:- "3306:3306"volumes:- /docker/mysql/db:/var/lib/mysqlphp-fpm:restart: alwaysimage: bitnami/php-fpmcontainer_name: php-fpmenvironment:- TZ=Asia/Shanghaivolumes:- /docker/www:/usr/share/nginx/htmldepends_on:- mysqlnginx:image: nginx:latestrestart: alwayscontainer_name: nginxenvironment:- TZ=Asia/Shanghaiports:- 80:80- 443:443volumes:- /docker/nginx/conf.d/:/etc/nginx/conf.d- /docker/www:/usr/share/nginx/htmldepends_on:- php-fpm
~

10790c4a202347e4b9480c77ea1deeb3.png

(3)查看目录

[root@localhost docker]# ls
docker-compose.yml  mysql  nginx  www

bfdc879d658c46688b3df513fb70d21e.png

(4)添加nginx配置文件

[root@localhost docker]# cd nginx/conf.d/
[root@localhost conf.d]# ls
[root@localhost conf.d]# vim default.conf

33980d6e75f4429c8b76c1754097ef3a.png

server{listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm index.php;}location ~ \.php$ {root /usr/share/nginx/html;fastcgi_pass php-fpm:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param SCRIPT_NAME $fastcgi_script_name;include fastcgi_params;}}

4598357e8e7d4a5aad47d58bfae996ca.png

(5)查看目录

[root@localhost docker]# tree /docker

3efaba2f6d524577bd4f9b3a92002885.png

[root@localhost docker]# tree /docker -s

ed72ad801278427b87310e02d66ecd98.png

(6)运行

-d 在后台运行容器,没有提示信息

[root@localhost docker]# docker-compose up -d

1eba717052b240e0951b97e2666211e8.png

(7)查看进程

[root@localhost docker]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                                                      NAMES
0194b5301702   nginx:latest      "/docker-entrypoint.…"   47 seconds ago   Up 45 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx
388b48d024e3   bitnami/php-fpm   "php-fpm -F --pid /o…"   47 seconds ago   Up 46 seconds   9000/tcp                                                                   php-fpm
3250c88c5e04   mysql:8.0.35      "docker-entrypoint.s…"   47 seconds ago   Up 46 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                       mysql

de3a88914dee4ab495b20946780658c1.png

(8)访问

http://192.168.204.141

目前为空

189bb354788841c680676c47c61bdcde.png

(9)创建index.php

[root@localhost docker]# cd www/
[root@localhost www]# ls
[root@localhost www]# vim index.php

dd2fc44753fe48dea86ac5cb71dda661.png

<?php
phpinfo();

4ee592c9056846ec8fd9e37117de92d6.png

(10)再次访问

http://192.168.204.141

7ebfbfd03a4a4ad09c95a9f19646518e.png

(11)创建数据库连接db.php

[root@localhost www]# sudo vim /docker/www/db.php

2eb32c355d1a42209ee2dc03a06ac0ff.png

<?php
date_default_timezone_set("PRC");
#输出php版本号
echo PHP_VERSION;
printf("<br>");
echo date('Y-m-d H:i:s');
printf("<br>");
/*循环格式化输出*/
for ($i = 1; $i <= 5; $i++) {printf("<h3>%03d</h3>", $i);
}
//---pdo 连接数据库
$dsn = 'mysql:host=mysql;dbname=mysql';
$username = 'root';
$password = 'Root_321';
try {$db = new PDO($dsn, $username, $password);// 设置错误模式为异常$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);echo "成功连接到数据库";
} catch (PDOException $e) {echo "连接数据库失败: " . $e->getMessage();
} catch (Exception $e) {echo "系统未知异常:" . $e->getMessage();
}
$st = $db->query("show databases");
while ($row = $st->fetch(3)) {echo $row[0] . '<br>';
}

b5e5d372ca594f5f8687a9cdbbcffcc7.png

(12) 访问

http://192.168.204.141/db.php

a8a32b2197984227858459f43f49ac1f.png

(13)删除项目

[root@localhost docker]# docker-compose rm -f -s

c2b03a154a0a49ccb00bf48efbebe71b.png

(14)查看进程

目前为空

[root@localhost docker]# docker ps

4b32b87f1dea4ce8a8cfb27721cc7a9b.png

 

二、问题

1.ntpdate未找到命令

(1)报错

-bash: ntpdate:未找到命令

01527d0e664c4141b1e3a9e538791f0f.png

(2)原因分析

未安装ntp

(3)解决方法

[root@localhost www]# dnf install ntp -y

537cdd8778014b3588d45c70a41567be.png

成功:

[root@localhost www]# ntpdate cn.pool.ntp.org

17ed09a8c1824a818c4d34764128d027.png

 

2.timedatectl 如何设置时区与时间同步

(1)设置时区

#设置时区
[root@localhost www]# timedatectl set-timezone Asia/Shanghai#查看
[root@localhost www]# timedatectl

722c15f690f2474b94bc9588d2dcb35b.png

(2)设置时间同步

#开启同步
[root@localhost www]# timedatectl set-ntp true#关闭同步
[root@localhost www]# timedatectl set-ntp false#查看
[root@localhost www]# timedatectl

bc4984720b0841179febdb360f239ffc.png

 

3.php网页显示时区不对

(1)报错

f070438620564d2c9d68f2e8efd2958f.png

(2)原因分析

php文件未设置时区

(3)解决方法

修改db.php文件

添加如需代码:

date_default_timezone_set("PRC");

277b8bdb7c3c47bf980aad6adc3fd255.png

成功:

a8a32b2197984227858459f43f49ac1f.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/269614.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络实验一 网线制作

实验目的与要求&#xff1a; 实验目的 了解以太网网线&#xff08;双绞线&#xff09;和制作方法 实验内容 了解网线和水晶头 学习网线制作方法 实验环境和要求 网线 水晶头 压线钳 剥线钳 网线测试器 方法、步骤&#xff1a; 步骤一 准备工具和材料 步骤二 剥掉双绞线的外…

CorelDRAW Technical Suite(CDR) 2023 v24.4.0.636 中文免费版(附注册机+教程)

CorelDRAW&#xff08;简称CDR&#xff09;是一款专业的图形设计软件。该软件是加拿大Corel公司开发的一款功能强大的专业平面设计软件、矢量设计软件、矢量绘图软件。这款矢量图形制作工具软件广泛应用于商标设计、标志制作、封面设计、CIS设计、产品包装造型设计、模型绘制、…

1.3 vue ui框架-element-ui框架

1 前言 ElementUI是一套基于VUE2.0的桌面端组件库&#xff0c;ElementUI提供了丰富的组件帮助开发人员快速构建功能强大、风格统一的页面。 ElementUI官网 https://element.eleme.io 2 安装 运行命令 cnpm i element-ui -S -S表示只在该项目下安装&#xff0c;不是全局安…

堆和二叉树的动态实现(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

解锁AI大模型秘籍:未来科技的前沿探索

在当今这个技术高速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了我们生活中不可或缺的一部分。从简单的个人助手到复杂的数据分析和决策制定&#xff0c;AI的应用范围日益扩大&#xff0c;其目的是为了让我们的生活变得更加智能化。本文旨在探讨AI如何…

C++ 基础知识

一. 预备知识 1. C的编程方式 过程性语言 (结构化、自顶向下)、面向对象语言、泛型编程 (创建独立于类型的代码) 2. 创建源代码文件的技巧 扩展名&#xff1a;.cpp 二. 第一个程序 - HelloWorld main() 入口点 返回 int 标准库 iostream std: 标准库的缩写 Statement…

苹果电脑免费释放磁盘空间软件CleanMyMac X2024

CleanMyMac X通过以下方式帮助用户释放磁盘空间&#xff1a; 智能扫描和清理&#xff1a;CleanMyMac X拥有强大的智能扫描功能&#xff0c;可以深入系统底层&#xff0c;快速识别并清理各类无用文件和垃圾&#xff0c;如缓存、日志、临时文件等。这些文件通常会占用大量的磁盘…

C语言回顾学习

一、数据类型 1.常量 2.float浮点表示 3.字符型 4.char&#xff08;大小写&#xff09; #include <stdio.h> //根据数字输出字符--int值可以直接输出为char int main() {int value;while (1){scanf("%d",&value);if(value<65||value>122){printf(&…

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程 前言 有开发过程序的朋友都清楚&#xff0c;后面开发是不需要再新建工程的&#xff0c;一般都是在初学时或者有特殊需要的时候才需要新建项目工程的。 后面开发都是可以在这种已有的工程上添加相关功能就行&#xff0c;只要前…

构造pop链

反序列化视频笔记 第一步&#xff1a;找到目标触发echo调用$flag 第二步&#xff1a;触发_invoke函数调用appeng函数$varflag.php&#xff08;把对象当成函数&#xff09; 第三步&#xff1a;给$p赋值为对象&#xff0c;即function成为对象Modifier却被当成函数调用&#xff…

Stable Diffusion 模型分享:CG texture light and shadow(CG纹理光影)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 一个拥有cg质感和光影的融合模型&#xff0c;偏2.5D 条目内容类型大模型基础模型SD 1.5来…

java 正则表达式介绍

Java正则表达式是一种强大的文本处理工具&#xff0c;它允许你进行模式匹配、搜索和文本操作。正则表达式提供了一种简洁、灵活的方式来处理字符串&#xff0c;可以用于各种应用场景&#xff0c;如数据验证、文本解析、搜索和替换等。 正则表达式的基础知识 正则表达式…

[HackMyVM] 靶场 Wave

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

2024最新软件测试面试题(带答案)

1. 请自我介绍一下(需简单清楚的表述自已的基本情况&#xff0c;在这过程中要展现出自信&#xff0c;对工作有激情&#xff0c;上进&#xff0c;好学) 面试官您好&#xff0c;我叫###&#xff0c;今年26岁&#xff0c;来自江西九江&#xff0c;就读专业是电子商务&#xff0c;毕…

平衡搜索二叉树—AVL树

一、定义&#xff1a; 为了避免搜索二叉树的高度增长过快&#xff0c;降低二叉树的性能&#xff0c;规定在插入和删除二叉树的结点的时候&#xff0c;任何结点左右子树的高度差绝对值不超过1&#xff0c;这样的二叉树被称为平衡二叉树&#xff08;balanced Binary Tree&#xf…

Java并发编程-进程和线程

一、进程和线程 1. 进程 什么是进程&#xff1f; 简单来说&#xff0c;进程就是程序的一次启动和执行。进程是操作系统中的一个概念&#xff0c;它代表正在运行的程序的实例。每个进程都有自己的内存空间、代码和数据&#xff0c;以及其他操作系统资源&#xff0c;如文件和设备…

Python:关于数据服务中的Web API的设计

搭建类似joinquant、tushare类似的私有数据服务应用&#xff0c;有以下一些点需要注意&#xff1a; 需要说明的是&#xff0c;这里讨论的是web api前后端&#xff0c;当然还有其它方案&#xff0c;thrift&#xff0c;grpc等。因为要考虑到一鱼两吃&#xff0c;本文只探讨web ap…

FreeRTOS学习笔记-基于stm32f103(1)基础知识

一、裸机与RTOS 我们使用的32板子是裸机&#xff0c;又称前后台系统。裸机有如下缺点&#xff1a; 1、实时性差。只能一步一步执行任务&#xff0c;比如在一个while循环中&#xff0c;要想执行上一个任务&#xff0c;就必须把下面的任务执行完&#xff0c;循环一遍后才能执行…

服务器后端是学习java还是php

没有绝对的"最好"语言&#xff0c;每种后端语言都有其适用的场景和特点。以下是几种常用的后端语言&#xff1a; 1. Java&#xff1a;Java是一种通用且强大的语言&#xff0c;广泛用于企业级应用和大型系统。它有很好的性能和可靠性&#xff0c;并且具有优秀的生态系…

C++面试干货---带你梳理常考的面试题(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 1.struct 和 class 区别 1.默认访问权限&#xff1a;struct中的成员默认为public&#xff0c;而class中的成员默认为priv…