1, ssh guanliyang@192.168.1.12
2, yum update
官方安装手册:
https://docs.docker.com/install/linux/docker-ce/centos/
3, sudo yum
install -y docker-ce --nobest 安装docker 速度巨慢。
Sudo root 然后输入密码,然后docker images , 嗯,不管怎样安装成功了吧。
然后docker pull nginx
开启nginx:
docker run -itd -p 80:80 -v /data/www:/usr/share/nginx/html-v /data/www/nginx.conf:/etc/nginx/nginx.conf -v /data/www/log:/usr/share/nginx/log --name nginx nginx
Nginx.conf 内容, 如下。 这里主要对应error_log和root对应的位置。
然后localhost就能访问了。
我这centos是vxbox里面的,现在想在mac,根宿主机上访问此域名。需关闭防火墙。
一、配置防火墙,开启80端口、3306端口
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
1、关闭firewall:
systemctl stop
firewalld.service #停止firewall
systemctl disable
firewalld.service #禁止firewall开机启动
直接在centos下,新建index.html 可以访问了。
/data/www 下新建一个a.php, 里面写phpinfo();
访问这个文件,nginx报404, 因为找不到php-fpm。
那么我们来安装php-fpm
docker pull php:7.3-fpm
启动php-fpm时, 报错-i docker0: iptables: No
chain/target/match by that name.
重启docker , systemctl restart docker
原因(猜测):
如果再启动docker service的时候网关是关闭的,那么docker管理网络的时候就不会操作网管的配置(chain docker),然后网关重新启动了,导致docker network无法对新container进行网络配置,也就是没有网管的操作权限,做重启处理
然后启动php-fpm,
nginx 配置文件里面是 /usr/share/nginx/html 捋了好多回了, nginx传给php-fpm, php-fpm解释php,
docker run -itd
--name php-fpm7.3 -p 9000:9000 -v /data/www:/usr/share/nginx/html c7bd03ed1e4c
http://192.168.1.12/a.php 访问成功。 nginx和php-fpm链接成功。
安装mysql
docker pull mysql
docker
run -d -p 3306:3306 -eMYSQL_ROOT_PASSWORD=123456 --name mysql mysql
进入容器配置下mysql
mysql -uroot -p 密码123456.
usemysql
进入mysql库
# 创建用户和用户密码,%表示通配,在所有host上都可以登录
create user 'guanliyang'@'%' IDENTIFIED BY '123456';
#授权用户所有权限
GRANT
ALL ON *.* TO 'guanliyang'@'%';
我们给mysql这台机器安装下ifconfig,以便查看下ip
给容器里面都安装上ifconfig, ping.
Apt-get update
apt-get
install inetutils-ping
apt-get
install net-tools
可能是我mac上装Vbox, xbox里面又装docker,
在docker里装的mysql, 里面的apt-get
update 速度巨慢,。
www下新建b.php , 内容是
<?php
try {
$dbh = newPDO('mysql:host=172.17.0.4;port=3306;dbname=sys', 'guanliyang', '123456');
foreach($dbh->query('SELECT * fromsys_config') as $row) {
print_r($row);
}
$dbh = null;
} catch
(PDOException $e) {
print "Error!: " .$e->getMessage() . "
";
die();
}
?>
就链接下数据库,没干别的。报错Error!: could not find
driver, 这就不用google了,显然没有pdo,要在php-fpm容器里执行命令
docker-php-ext-install
pdo_mysql
安装pdo,
重启php-fpm容器。
docker
restart 41b257d5884d
继续报错:Error!: SQLSTATE[HY000] [2054] The
server requested authentication method unknown to the client
不小心xbox关闭了,再次进入要启动docker
service docker start
打开b.php是报错。
Error!:
SQLSTATE[HY000] [2002] Connection refused
这名ip写错了,进入mysql看下ip
Mysql 报错终于解决了,两句话
ALTER USER
'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新:
flush privileges;
然后访问b.php, 信息输出,大功告成。
贴下nginx.conf配置文件内容。
worker_processes 1; error_log/usr/share/nginx/log/error.log; events { worker_connections 1024;} http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; root /usr/share/nginx/html; location / { index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_pass 172.17.0.1:9000; #fastcgi_passunix:/var/run/php5-fpm.sock; try_files $uri =404; } }}