搭建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服务木有问题
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/
Tip:
mysql密码:Test@123
apache网站根目录:/var/www/project