首页 >> 技术文档 >> 独立服务器

centos 安装docker 并安装php7.4+nginx

来源:数脉科技 编辑:数脉科技编辑部 发布时间:2020-10-05 19:38

一:安装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版本 ,可以根据自己需要的版本安装

  1. #更新软件包版本
  2. yum makecache fast
  3. #查询docker版本
  4. yum list docker-ce.x86_64 --showduplicates | sort -r #从高到低列出Docker-ce的版本

4:安装 Docker Engine-Community

  1. yum install docker-ce docker-ce-cli containerd.io #安装最新版本
  2. yum install docker-ce-18.06.3 docker-ce-cli-18.06.3 containerd.io #安装18.06.3版本的docker

5:启动docker

  1. [root@ecs-b8ca-0817460 ~]# systemctl start docker #启动
  2. [root@ecs-b8ca-0817460 ~]# systemctl stop docker #停止
  3. [root@ecs-b8ca-0817460 ~]# systemctl start docker #启动
  4. [root@ecs-b8ca-0817460 ~]# systemctl restart docker #重启
  5. [root@ecs-b8ca-0817460 ~]# ps -aux|grep docker
  6. root 5007 0.1 0.4 668204 68016 ? Ssl 21:02 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  7. root 5152 0.0 0.0 112724 988 pts/3 S+ 21:03 0:00 grep --color=auto docker

 二:安装mysql

       访问: https://hub.docker.com 查看mysql的版本也可以通过docker search mysql搜索镜像,根据需要安装mysql版本,例如要安装mysql 5.7.31 docket pull mysql:5.7.31,我这里安装mysql最新镜像

  1. [root@ecs-b8ca-0817460 ~]# docker search mysql
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. mysql MySQL is a widely used, open-source relation… 10013 [OK]
  4. mariadb MariaDB is a community-developed fork of MyS… 3664 [OK]
  5. mysql/mysql-server Optimized MySQL Server Docker images. Create… 733 [OK]
  6. percona Percona Server is a fork of the MySQL relati… 512 [OK]

   安装最新mysql镜像,latest为最新的版本,下载速度一般,需要耐心等待

  1. [root@ecs-b8ca-0817460 ~]# docker pull mysql
  2. Using default tag: latest
  3. latest: Pulling from library/mysql
  4. d121f8d1c412: Downloading [==============================> ] 16.76MB/27.09MB
  5. f3cebc0b4691: Download complete
  6. 1862755a0b37: Download complete
  7. 489b44f3dbb4: Download complete
  8. 690874f836db: Download complete
  9. baa8be383ffb: Waiting
  10. 55356608b4ac: Waiting
  11. dd35ceccb6eb: Waiting
  12. 429b35712b19: Waiting
  13. 162d8291095c: Waiting
  14. 5e500ef7181b: Waiting
  15. af7528e958b6: Waiting

安装完成后,使用 docker images 查看安装到本地的镜像,可以按照此步骤安装php和nginx

运行:docker pull nginx 和 docker pull php:7.4-fpm

查询pull本地的镜像

  1. [root@ecs-b8ca-0817460 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. php latest 8939aaed79f9 18 hours ago 405MB
  4. nginx latest 7e4d58f0e5f3 3 weeks ago 133MB
  5. mysql latest e1d7dc9731da 3 weeks ago 544MB

启动mysql nginx php

docker run :创建一个新的容器并运行一个命令要注意,

--name 容器名称  

-v 本地目录:容器目录  //目录映射

-p 本地端口:容器端口   //端口映射

-m 设置容器使用内存最大值 

启动nginx

在/user/local 目录下新建:

www 目录 映射到 /usr/share/nginx/html

docker run --name  php-web -p 9000:9000 -v /usr/local/nginx/html:/www  -d php:7.4-fpm

conf 目录 映射到 /etc/nginx

conf/conf.d目录 映射到/etc/nginx/conf.d

logs 目录映射到 /var/log/nginx

--link 设置 nginx容器和php容器网络互通

  1. docker run -d --name nginx-web -p 80:80 -v /usr/local/nginx/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
  2. ​docker ps
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. 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 目录需要的文件,也可以拷贝把容器配置文件拷贝到主机的映射目录:

  如果进入不到容器内,则可以按照最简单的方法新建容器并启动,把配置文件拷贝出来,在删除

  1. docker run -d --name nginx-web -p 80:80 nginx
  2. #返回容器ID cc53a678091d
  3. docker cp cc53a678091d:/etc/nginx /usr/local/nginx/conf
  4. docker rm nginx-web

配置php和nginx 

编辑:/usr/local/nginx/conf/conf.d/default.conf

 /www 目录是php解析目录,在运行php容器的时候 已经映射到/usr/local/nginx/html 了 配置的时候 要配置容器的目录,要不会报错。

  1. location ~ \.php$ {
  2. root html;
  3. fastcgi_pass php:9000;
  4. fastcgi_index index.php;
  5. fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;
  6. include fastcgi_params;
  7. index index.php index.html;
  8. }

设置容器时区:

进入容器

docker exec -it cc53a678091d /bin/bash

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看容器ip:

  1. [root@ecs-b8ca-0817460 ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' php-web
  2. 172.17.0.3
  3. [root@ecs-b8ca-0817460 ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' nginx-web
  4. 172.17.0.2
  5. [root@ecs-b8ca-0817460 ~]#

启动mysql:

在 /usr/local/mysql

新建:conf logs mysqldata mysql-files

docker run --name mysql-web -v /usr/local/mysql/conf:/etc/mysql -v /usr/local/mysql/logs:/logs -v /usr/local/mysq