Docker 搭建ubuntu+lnmp环境
拉取镜像
执行如下:
docker search ubuntu-lnmp
找到NAME为 norsl/ubuntu-lnmp 的镜像
docker pull norsl/ubuntu-lnmp
拉取镜像
创建容器
docker images
查询已经拉到的镜像
NorsldeMBP:~ norsl$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
norsl/ubuntu-lnmp latest 0216ea194e22 2 hours ago 1.02GB
创建容器 端口分别为33060 和80 进行端口映射并挂在目录
将/Users/norsl/Sites/www挂在到 容器/var/www 下
docker run --privileged -itd --name 容器别名 -p 33060:3306 -p 80:80 -v /Users/norsl/Sites/www:/var/www 镜像ID
参数说明
–privileged 使用此参数会使container用户真正的root权限,否则container中的root只是普通用户权限
-itd -i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d:后台运行容器,并返回容器ID
–name 容器别名
-p 指定端口映射 主机端口:容器端口
-v 文件目录挂在 本机目录:容器目录
进入容器
docker ps -a
查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8042eea0658 0216ea194e22 "/bin/bash" About an hour ago Up About an hour 0.0.0.0:80->80/tcp, 0.0.0.0:33060->3306/tcp
docker exec -it 上方CONTAINER ID /bin/bash
进入容器
$ docker exec -it f8042eea0658 /bin/bash
root@f8042eea0658:/#
配置mysql nginx php
mysql
为了让外部宿主机能够连接
首先用vim打开my.cnf:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address加#注注释掉 并增加skip-name-resolve
#bind-address = 127.0.0.1
skip-name-resolve
再执行:每次启动容器执行需要一次
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld
service mysql start
service mysql start #启动msql
nginx
配置站点
vim /etc/nginx/sites-available/default
nginx 根据自己目录自行配置
例:
listen 80 default_server; #监听端口
root /var/www/safe/public; #站点根目录
index index.php index.html index.htm ; #默认导航页
server_name safe.test; #站点域名
保存并退出 启动nginx
service nginx start #启动nginx
提示: * Starting nginx nginx [ OK ]
php
service php7.2-fpm start #启动nginx