lamp - docker集成镜像

搭建lamp,百度谷歌貌似都是分散的镜像组成的lamp环境,没有集成的包含lamp的docker镜像,so,只好手动制作一个。

制作docker镜像的方法:

  docker commit:将运行中的容器打包成镜像

  dockerfile:自定义参数命令等一系列操作build一个镜像

  docker-compose:编排镜像,制作多个容器服务用到,很方便

集成的环境版本:

  CentOS Linux release 7.6.1810 (Core)

  Apache/2.4.6 

  mysqld 8.0.17

  PHP 5.4.16 

1、拉取

docker pull xiaowenxiao/lamp:latest 

2、运行

docker run --privileged -tid -p 3306:3306 -p 80:80 -v /data/project:/var/www/project --name=lamp xiaowenxiao/lamp:latest /usr/sbin/init

--privileged  /usr/sbin/init

解决了容器内systemctl start sshd/httpd/mysqld启动报错:

Failed to get D-Bus connection: Operation not permitted

这个的原因是因为dbus-daemon没能启动。其实systemctl并不是不可以使用。将你的CMD或者entrypoint设置为/usr/sbin/init即可。会自动将dbus等服务启动起来。然后才可以使用systemctl。

3、宿主机、容器开启端口

docker ps #查看运行中的容器
docker exec -ti 容器ID /bin/bash #进入容器

firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload #使配置生效
firewall-cmd --list-ports #查看开放的端口

4、访问http://宿主机ip,测试mysql连通性

httpd.conf网站默认根目录已配置为:/var/www/project
在/var/www/project目录下新建一个index.php,文件内容添加如下:

php
phpinfo();
?>

然后访问http://宿主机ip,如下说明apache+php服务木有问题lamp - docker集成镜像_第1张图片

 

使用Navicat连接mysql:lamp - docker集成镜像_第2张图片

5、文件共享挂载

前面运行容器 -v 已存在宿主机和容器的挂载关系:/data/project:/var/www/project

现在再将宿主机/data/project挂载到windows文件夹E:\project。

最终实现挂载效果(这样只需要在window开发就行了):

E:\project   <-  /data/projec  <- /var/www/project

在宿主机上执行命令:

mount -t cifs -o username=guest //192.168.0.101/project /data/project/ 

取消挂载: umount /data/project/ 

lamp - docker集成镜像_第3张图片

 

 Tip:

mysql密码:Test@123

apache网站根目录:/var/www/project  

转载于:https://www.cnblogs.com/killall007/p/11291963.html

你可能感兴趣的:(lamp - docker集成镜像)