摘要:基礎命令關于搜索下載查看或者刪除單個刪除多個刪除查看信息占用關于查看重啟停止雜項命令網絡相關清除網絡緩存查看網絡列表查看詳情掛載目錄清除緩存查看列表查看詳情系統相關系統信息查看占用清除所有包含構建失敗的鏡像沒有被使用的網絡配
docker基礎命令 關于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)
刪除NONE docker rmi -f $(docker images -f "dangling=true" -q)
查看信息 docker inspect imageID
占用 docker stats
關于container查看 docker ps -a
重啟 docker restart containerID
停止 docker stop containerID
雜項命令
網絡相關
清除網絡緩存 docker network prune
查看網絡列表 docker network ls
查看詳情 docker network inspect netwokrNAME
掛載目錄
清除緩存 docker volume prune
查看列表 docker volume ls
查看詳情 docker volume inspect VOLUMENAME
系統相關
系統信息 docker system info
查看占用 docker system df
清除所有 docker system prune
包含構建失敗的鏡像、沒有被使用的網絡配置、已經暫停的容器
FROM 指定哪個鏡像作為你的基礎鏡像
LABEL 你可以給你的鏡像增加標簽(labels)來協助通過項目組織鏡像,記錄授權信息,幫助自動化,或者其他原因。
可以通過docker inspect imageID查看
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 Layer
CMD 設置容器啟動后默認執行的命令和參數
ENTRYPOINT 設置容器啟動時運行的命令
構建鏡像的注意點盡量選擇 微縮基礎鏡像 例如alpine 減少鏡像的體積
盡量不要打包無用的文件到鏡像中 減少鏡像的體積
盡量刪除 各種編譯、下載、安裝過程中產生的緩存文件 減少鏡像體積
盡量使用分階段構建鏡像 一步步的擴展鏡像功能 避免多層數鏡像的產生
準確使用dockerfile的關鍵字 例如CMD 和ENTRYPOINT 、 COPY 和ADD
構建命令詳解docker build -f "Dockerfile" -t my-mysql:v1.0 .
可以使用docker build --help查看
docker-compose 文件命令命令文檔地址
該文件是主配置文件,主要包含version、services、network,其中version、services為必要元素。
常用命令:image 指定購將的基礎鏡像
build 指定包含構建上下文的路徑, 或作為一個對象,該對象具有 context 和指定的 dockerfile 文件以及 args 參數值
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 數據卷映射,也可以以叫做目錄共享
CLI命令啟動服務 docker-compose up -d --build
暫停服務 docker-compose down
重啟服務 docekr-compose restart
進入 docekr-compose exec $1 $2
$1 docker-compose.yml文件services中定義的服務名稱
$2 根據基礎鏡像服務器決定,一般apline為/bin/sh,其他為"/bin/bash"
查看 docker-compose ps
實操,docker-compose搭建項目 創建項目目錄mkdir php創建如下項目結構
sites 目錄放置項目文件
services 目錄放置服務相關配置
script 放置自定義腳本
├── 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環境已經部署完成
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31669.html
摘要:如果不用我們可能將上述講的命令每搭建一次就需要執行一遍,有沒有能統一管理的有,就是在環境搭建中的作用快速創建鏡像,快速創建并運行容器,實現統一管理。 前言 初學者在dcoker學習過程中,可能不太清楚docker中那么多的命令,參數,工具在lnmp環境搭建中起了什么作用,下面跟著我來熟悉一下。(本文面向的是不怎么熟悉linux的:phper) 鏡像,容器,倉庫 鏡像:Docker 鏡像...
摘要:學習心得前言耗時一周零三天,終于用搭建起自己的開發環境。來搭建一下環境,然后,桌面沒了。作為過來人,我只想說,一定要只做一件事,不要過多的去研究,我們只是想搭建本地運行環境。 docker學習心得 前言 耗時一周零三天,終于用docker搭建起自己的開發環境。詳細過程:請參考分解docker在lnmp環境搭建中的作用showImg(https://segmentfault.com/im...
摘要:項目由一組關聯的應用容器組成的一個完整業務單元,在文件中定義。 docker搭建lnmp環境 一、Dockerfile定制鏡像 二、docker-compose 三、docker-compose編排lnmp環境 1、mysql 2、redis 3、mongo 4、nginx 5、php 6、完整版 四、參考 有收獲的話請加顆小星星,沒有收獲的話可以 反對 沒有幫助 ...
摘要:基礎命令關于搜索下載查看或者刪除單個刪除多個刪除查看信息占用關于查看重啟停止雜項命令網絡相關清除網絡緩存查看網絡列表查看詳情掛載目錄清除緩存查看列表查看詳情系統相關系統信息查看占用清除所有包含構建失敗的鏡像沒有被使用的網絡配 docker基礎命令 關于images 搜索 docker search php 下載 docker pull php:7.3.6-fpm-alpine3....
摘要:配置文件配置配置文件配置文件配置文件太大就不貼了,直接下載然后本地修改吧。不會使用的使用命令進行替換。是一種推出的免費的公共鏡像庫服務。本地對鏡像打提交鏡像到倉庫參考Docker 安裝安裝 Dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun配置國內鏡像mkdir -p /etc/docker cat...
閱讀 1104·2021-09-22 15:37
閱讀 1131·2021-09-13 10:27
閱讀 2466·2021-08-25 09:38
閱讀 2444·2019-08-26 11:42
閱讀 1524·2019-08-26 11:39
閱讀 1554·2019-08-26 10:58
閱讀 2316·2019-08-26 10:56
閱讀 2568·2019-08-23 18:08