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環境已經部署完成