centos 安装docker 并安装php7.4+nginx+mysql
一:安装docker1:安装所需的软件包yum install-yyum-utils device-mapper-persistent-data lvm22:由于官方源地址比较慢,可以自己配置源地址,这里使用阿里云源地址yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.r
ka
一:安装docker
1:安装所需的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
2:由于官方源地址比较慢,可以自己配置源地址,这里使用阿里云源地址
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3:查询docker版本 ,可以根据自己需要的版本安装
#更新软件包版本
yum makecache fast
#查询docker版本
yum list docker-ce.x86_64 --showduplicates | sort -r #从高到低列出Docker-ce的版本
4:安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io #安装最新版本
yum install docker-ce-18.06.3 docker-ce-cli-18.06.3 containerd.io #安装18.06.3版本的docker
5:启动docker
[root@ecs-b8ca-0817460 ~]# systemctl start docker #启动
[root@ecs-b8ca-0817460 ~]# systemctl stop docker #停止
[root@ecs-b8ca-0817460 ~]# systemctl start docker #启动
[root@ecs-b8ca-0817460 ~]# systemctl restart docker #重启
[root@ecs-b8ca-0817460 ~]# ps -aux|grep docker
root 5007 0.1 0.4 668204 68016 ? Ssl 21:02 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 5152 0.0 0.0 112724 988 pts/3 S+ 21:03 0:00 grep --color=auto docker
二:拉取镜像并启动容器
访问: https://hub.docker.com 查看mysql的版本也可以通过docker search mysql搜索镜像
拉取镜像 docker pull mysql 拉取的为mysql最新版本的镜像
也可根据需要安装mysql版本,例如要安装mysql 5.7.31 docket pull mysql:5.7.31
[root@ecs-b8ca-0817460 ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10013 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3664 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 733 [OK]
percona Percona Server is a fork of the MySQL relati… 512 [OK]
安装最新mysql镜像,latest为最新的版本,下载速度一般,需要耐心等待
[root@ecs-b8ca-0817460 ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
d121f8d1c412: Downloading [==============================> ] 16.76MB/27.09MB
f3cebc0b4691: Download complete
1862755a0b37: Download complete
489b44f3dbb4: Download complete
690874f836db: Download complete
baa8be383ffb: Waiting
55356608b4ac: Waiting
dd35ceccb6eb: Waiting
429b35712b19: Waiting
162d8291095c: Waiting
5e500ef7181b: Waiting
af7528e958b6: Waiting
安装完成后,使用 docker images 查看安装到本地的镜像,可以按照此步骤安装php和nginx
拉取nginx镜像和php镜像
docker pull nginx
docker pull php:7.4-fpm
查询本地已经拉取的镜像
[root@ecs-b8ca-0817460 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php latest 8939aaed79f9 18 hours ago 405MB
nginx latest 7e4d58f0e5f3 3 weeks ago 133MB
mysql latest e1d7dc9731da 3 weeks ago 544MB
三:启动 nginx php mysql 容器
docker :创建service 网络
##容器网络的查看方式
[root@root harbor]# docker network ls
##容器创建网络
[root@root harbor]# docker network create service
##查看网络内部信息
[root@root harbor]# docker network inspect service
##移除指定的网络
[root@root harbor]# docker network rm service
docker run :创建一个新的容器并运行一个命令要注意,
--name 容器名称
-v 本地目录:容器目录 //目录映射
-p 本地端口:容器端口 //端口映射
-m 设置容器使用内存最大值
-d 增加一个驻留在进程中长期运行的命令,
启动后并返回容器id
1、启动PHP
新建 /www目录作为项目目录,根据自己的需要做映射
把 /www 目录 映射到 /var/www/html
注:在使用nginx的时候必须先启动php容器,启动php容器后可以把php容器网络加入到nginx中,启动php时候可以不做9000端口映射
docker run --name php-web --net=service -p 9000:9000 -v /var/www/html:/www -d php:7.4-fpm
php安装扩展:
docker-php-ext-install 扩展名称
docker-php-ext-install pdo_mysql
2、启动nginx
conf 目录 映射到 /etc/nginx
conf/conf.d目录 映射到/etc/nginx/conf.d 也可以只映射这一个文件
logs 目录映射到 /var/log/nginx
--link 设置 nginx容器和php容器网络互通
注:在启动nginx的时候,处理程序目录映射的时候,应该把php容器中的/var/www/html目录和nginx容器中的/usr/share/nginx/html目录映射到同一目录下
docker run -d --name nginx-web -p 80:80 --net=service -v /www:/usr/share/nginx/html -v /usr/local/nginx/conf:/etc/nginx -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/logs:/var/log/nginx --link php-web:php nginx
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc53a678091d nginx "/docker-entrypoint.…" 49 minutes ago Up 4 seconds 0.0.0.0:80->80/tcp nginx-web
注意:docker ps 时,如果nginx不存在,在需要查看log日志 docker logs 容器id //新建容器的时候会返回容器ID
映射配置文件的目录 在新建容器后,需要自己在主机目录 /usr/local/nginx/conf 目录新建 nginx.conf 在/usr/local/nginx/conf/conf.d 目录新建default.conf 以及 conf 目录需要的文件,也可以拷贝把容器配置文件拷贝到主机的映射目录:
如果进入不到容器内,则可以按照最简单的方法新建容器并启动,把配置文件拷贝出来,在删除
docker run -d --name nginx-web -p 80:80 nginx
#返回容器ID cc53a678091d
docker cp cc53a678091d:/etc/nginx /usr/local/nginx/conf
docker rm nginx-web
配置php和nginx
编辑:/usr/local/nginx/conf/conf.d/default.conf
/www 目录是php解析目录,在运行php容器的时候 已经映射到/usr/local/nginx/html 了 配置的时候 要配置容器的目录,要不会报错。
location / {
root /usr/share/nginx/html/{项目目录}; //nginx的容器的目录
index index.php index.html index.htm;
if (!-e $request_filename) { #配置重写,url去掉index.php
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
location ~ \.php(.*)$ {
root /var/www/html/(项目目录); //必须是容器中的目录,而不是你挂在宿主主机的目录
fastcgi_pass php:9000; //如果没有在nginx容器中加入php网络,这需监听 php容器IP:9000
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
注:php容器的/var/www/html目录 和 nginx的/usr/share/nginx/html目录映射的都为宿主主机的/www目录 ,配置的nginx的时候一定要分清楚,否则无法解析
设置容器时区:
进入容器(如果要是执行报错,请试一下下面两个命令)
docker exec -it cc53a678091d /bin/bash
或者
docker exec -it cc53a678091d bash
或者
docker exec -it cc53a678091d sh
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看容器ip:
[root@ecs-b8ca-0817460 ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' php-web
172.17.0.3
[root@ecs-b8ca-0817460 ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' nginx-web
172.17.0.2
[root@ecs-b8ca-0817460 ~]#
3、启动mysql
在 /usr/local/mysql
新建:conf logs mysqldata mysql-files
docker run --name mysql-web --net=service -v /usr/local/mysql/conf:/etc/mysql -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/mysqldata:/var/lib/mysql -v /usr/local/mysql/mysql-files:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=密码 -d -i -p 3306:3306 mysql
MYSQL_ROOT_PASSWORD:是你自己设置的mysql root用户的密码
查询mysql容器的ip:
[root@ecs-b8ca-0817460 ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-web
172.17.0.3
查看容器的端口映射:
[root@ecs-b8ca-0817460 ~]# docker port mysql-web
查看容器的目录映射:
[root@ecs-b8ca-0817460 ~]# docker inspect mysql-web
注:在用程序连接mysql的时候一定使用mysql的容器ip,而不是宿主主机的局域网ip,或者是127.0.0.1,否则可能会连不上
mongo数据库安装:
docker run -d -p 27017:27017 --name mongodb-server --network service -e MONGODB_USERNAME=root -e MONGODB_ROOT_PASSWORD=aa123456 bitnami/mongodb:latest
redis数据库安装:
docker run -d --name redis-server --network service -p 6379:6379 -e ALLOW_EMPTY_PASSWORD=yes bitnami/redis:latest
zookeeper:安装
docker run -d --name zookeeper-server -p 2181:2181 --network service -v /etc/localtime:/etc/localtime -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest
kafka:安装教程
docker run -d --name kafka-server -p 9092:9092 --network service -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 -e ALLOW_PLAINTEXT_LISTENER=yes bitnami/kafka:latest
etcd:安装
docker run -d --name etcd-serve --network service -p 2379:2379 -p 2380:2380 --env ALLOW_NONE_AUTHENTICATION=yes --env ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 bitnami/etcd:latest
总结:使用docker安装php+nginx+mysql环境,很方便快捷,也能防止php的程序的上传漏洞被攻破时候,影响服务器系统,建议mysql不要用docker安装,你要是使用shell脚本备份数据库的功能就无法实现,例如:docker可以了安装php各种版本做版本之间的切换也很方便。
更多推荐
所有评论(0)