images
docker search php
docker pull php:7.3.6-fpm-alpine3.9
docker images
或者 docker image ls
docker rmi imageID
docker rmi -f $(docker image ls -aq)
docker rmi -f $(docker images -f "dangling=true" -q)
docker inspect imageID
docker stats
container
docker ps -a
docker restart containerID
docker stop containerID
网络相关php
docker network prune
docker network ls
docker network inspect netwokrNAME
挂载目录html
docker volume prune
docker volume ls
docker volume inspect VOLUMENAME
系统相关mysql
docker system info
docker system df
docker system prune
FROM
指定哪一个镜像做为你的基础镜像LABEL
你能够给你的镜像增长标签(labels)来协助经过项目组织镜像,记录受权信息,帮助自动化,或者其余缘由。能够经过docker inspect imageID
查看linux
EXPOSE
端口开启,只是显示的声明该端口可用,方便调用者,具体的端口映射还须要在docker run
的时候经过-p
来指定,若是-p
后面不跟端口号,则使用EXPOSE
设置的值VOLUME
指定build的image那些目录能够启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"]USER
指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户ENV
多用于配置环境变量COPY
复制 轻量,更透明,建议使用,由于镜像构建要竟可能小的占用空间,因此建议使用wget讲远程文件下载到本地,解压再copy到镜像中,否则使用ADD的话,还要解压删除下载包ADD
复制 能够解压tar包,也可下载远程网络文件RUN
执行命令并建立新的Image LayerCMD
设置容器启动后默认执行的命令和参数ENTRYPOINT
设置容器启动时运行的命令docker build -f "Dockerfile" -t my-mysql:v1.0 .
可使用docker build --help
查看nginx
命令文档地址redis
该文件是主配置文件,主要包含version
、services
、network
,其中version
、services
为必要元素。sql
image
指定购将的基础镜像build
指定包含构建上下文的路径, 或做为一个对象,该对象具备 context 和指定的 dockerfile 文件以及 args 参数值docker
context
指定 Dockerfile 文件所在的路径dockerfile
指定 context 指定的目录下面的 Dockerfile 的名称(默认为 Dockerfile)args
Dockerfile 在 build 过程当中须要的参数 (等同于 docker container build --build-arg 的做用)cache_from
# v3.2中新增的参数, 指定缓存的镜像列表 (等同于 docker container build --cache_from 的做用)labels
v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的做用)shm_size
v3.5中新增的参数, 设置容器 /dev/shm 分区的大小 (等同于 docker container build --shm-size 的做用)command
# 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式container_name
指定容器名称depends_on
指定容器启动的依赖关系,此选项在 v3 版本中 使用 swarm 部署时将忽略该选项links
容器关联,版本3已经不建议使用,建议使用网络作容器通讯env_file
环境变量文件environment
设置环境变量, environment 的值能够覆盖 env_file 的值 (等同于 docker run --env 的做用)expose
暴露端口, 可是不能和宿主机创建映射关系, 相似于 Dockerfile 的 EXPOSE 指令ports
端口映射external_links
链接不在 docker-compose.yml 中定义的容器或者不在 compose 管理的容器extra_hosts
添加 host 记录到容器中的 /etc/hosts 中logging
日志统一输出,方便作日志统计networks
容器网络配置restart
自动重启容器,容器挂掉以后自动重启机制volumes
数据卷映射,也能够以叫作目录共享docker-compose up -d --build
docker-compose down
docekr-compose restart
进入 docekr-compose exec $1 $2
shell
docker-compose.yml
文件services
中定义的服务名称/bin/sh
,其余为'/bin/bash'docker-compose ps
docker-compose
搭建项目mkdir php
├── Readme.md ├── docker-compose.yml ├── script ├── services │ ├── mariadb │ │ └── Dockerfile │ ├── nginx │ │ ├── Dockerfile │ │ ├── conf.d │ │ │ └── default.conf │ │ └── nginx.conf │ ├── php │ │ └── Dockerfile │ └── redis │ └── Dockerfile └── sites ├── index.html └── index.php 8 directories, 10 files
docker-compose
文件version: "3" services: php: build: ./services/php ports: - "9001:9000" container_name: lnmp-php restart: always volumes: - ./sites:/www - ./services/php/etc:/usr/local/etc networks: lnmp_net: ipv4_address: 101.11.11.10 nginx: build: ./services/nginx ports: - "81:80" - "444:443" container_name: lnmp-nginx restart: always volumes: - ./sites:/www - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf - ./services/nginx/conf.d:/etc/nginx/conf.d:rw networks: lnmp_net: ipv4_address: 101.11.11.11 redis: build: ./services/redis ports: - "6380:6379" container_name: lnmp-redis networks: lnmp_net: ipv4_address: 101.11.11.12 mariadb: build: ./services/mariadb ports: - "3307:3306" container_name: lnmp-mariadb restart: always volumes: - ./data/mariadb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 123qwe!@# MYSQL_USER: demo MYSQL_PASSWORD: 123456 networks: lnmp_net: ipv4_address: 101.11.11.13 networks: lnmp_net: driver: bridge ipam: config: - subnet: 101.11.11.0/20
services/nginx
文件FROM nginx:1.17.0-alpine # 更新安装源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories # 设置时区为上海 RUN apk update && apk add --upgrade \ && apk add tzdata \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && apk del tzdata
services/php
文件FROM php:7.3.6-fpm-alpine3.9 # 更新安装源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories # 设置时区为上海 RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev\ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && apk del tzdata \ && docker-php-ext-install mysqli pdo_mysql opcache \ && pecl install grpc protobuf xdebug yaf yar swoole \ && docker-php-ext-enable xdebug yaf yar swoole grpc protobuf
以上咱们的lnmp环境基本搭建完毕,下面咱们针对Php解析作相关的配置
services/nginx/nginx.conf
,可根据需求自行修改user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
services/nginx/conf.d
目录下文件该目录是各个项目的配置文件,可根据需求配置单个或多个服务
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; #root /usr/share/nginx/html; root /www; index index.php index.html index.htm; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { # root html; fastcgi_pass 101.11.11.10:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
cd php && docker-compose up --build -d
上述的步骤根据网速的docker的配置执行时间个不相同,由于php中编译了些许扩展,也可根据自身需求作响应的删减
经过浏览器访问http://127.0.0.1:81
,若是看到了phpinfo
的输出信息,那么恭喜你,你的lnmp环境已经部署完成