摘要:基礎(chǔ)命令關(guān)于搜索下載查看或者刪除單個(gè)刪除多個(gè)刪除查看信息占用關(guān)于查看重啟停止雜項(xiàng)命令網(wǎng)絡(luò)相關(guān)清除網(wǎng)絡(luò)緩存查看網(wǎng)絡(luò)列表查看詳情掛載目錄清除緩存查看列表查看詳情系統(tǒng)相關(guān)系統(tǒng)信息查看占用清除所有包含構(gòu)建失敗的鏡像沒(méi)有被使用的網(wǎng)絡(luò)配
docker基礎(chǔ)命令 關(guān)于images
搜索 docker search php
下載 docker pull php:7.3.6-fpm-alpine3.9
查看 docker images 或者 docker image ls
刪除單個(gè) docker rmi imageID
刪除多個(gè) docker rmi -f $(docker image ls -aq)
刪除NONE docker rmi -f $(docker images -f "dangling=true" -q)
查看信息 docker inspect imageID
占用 docker stats
關(guān)于container查看 docker ps -a
重啟 docker restart containerID
停止 docker stop containerID
雜項(xiàng)命令
網(wǎng)絡(luò)相關(guān)
清除網(wǎng)絡(luò)緩存 docker network prune
查看網(wǎng)絡(luò)列表 docker network ls
查看詳情 docker network inspect netwokrNAME
掛載目錄
清除緩存 docker volume prune
查看列表 docker volume ls
查看詳情 docker volume inspect VOLUMENAME
系統(tǒng)相關(guān)
系統(tǒng)信息 docker system info
查看占用 docker system df
清除所有 docker system prune
包含構(gòu)建失敗的鏡像、沒(méi)有被使用的網(wǎng)絡(luò)配置、已經(jīng)暫停的容器
FROM 指定哪個(gè)鏡像作為你的基礎(chǔ)鏡像
LABEL 你可以給你的鏡像增加標(biāo)簽(labels)來(lái)協(xié)助通過(guò)項(xiàng)目組織鏡像,記錄授權(quán)信息,幫助自動(dòng)化,或者其他原因。
可以通過(guò)docker inspect imageID查看
EXPOSE 端口開(kāi)啟,只是顯示的聲明該端口可用,方便調(diào)用者,具體的端口映射還需要在docker run的時(shí)候通過(guò)-p來(lái)指定,如果-p后面不跟端口號(hào),則使用EXPOSE設(shè)置的值
VOLUME 指定build的image那些目錄可以啟動(dòng)的時(shí)候掛載到文件系統(tǒng)中 啟動(dòng)容器的時(shí)候使用 -v 綁定 格式 VOLUME ["目錄"]
USER 指定build或者啟動(dòng)的時(shí)候 用戶 在RUN CMD ENTRYPONT執(zhí)行的時(shí)候的用戶
ENV 多用于配置環(huán)境變量
COPY 復(fù)制 輕量,更透明,建議使用,因?yàn)殓R像構(gòu)建要竟可能小的占用空間,所以建議使用wget講遠(yuǎn)程文件下載到本地,解壓再copy到鏡像中,不然使用ADD的話,還要解壓刪除下載包
ADD 復(fù)制 可以解壓tar包,也可下載遠(yuǎn)程網(wǎng)絡(luò)文件
RUN 執(zhí)行命令并創(chuàng)建新的Image Layer
CMD 設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令和參數(shù)
ENTRYPOINT 設(shè)置容器啟動(dòng)時(shí)運(yùn)行的命令
構(gòu)建鏡像的注意點(diǎn)盡量選擇 微縮基礎(chǔ)鏡像 例如alpine 減少鏡像的體積
盡量不要打包無(wú)用的文件到鏡像中 減少鏡像的體積
盡量刪除 各種編譯、下載、安裝過(guò)程中產(chǎn)生的緩存文件 減少鏡像體積
盡量使用分階段構(gòu)建鏡像 一步步的擴(kuò)展鏡像功能 避免多層數(shù)鏡像的產(chǎn)生
準(zhǔn)確使用dockerfile的關(guān)鍵字 例如CMD 和ENTRYPOINT 、 COPY 和ADD
構(gòu)建命令詳解docker build -f "Dockerfile" -t my-mysql:v1.0 .
可以使用docker build --help查看
docker-compose 文件命令命令文檔地址
該文件是主配置文件,主要包含version、services、network,其中version、services為必要元素。
常用命令:image 指定購(gòu)將的基礎(chǔ)鏡像
build 指定包含構(gòu)建上下文的路徑, 或作為一個(gè)對(duì)象,該對(duì)象具有 context 和指定的 dockerfile 文件以及 args 參數(shù)值
context 指定 Dockerfile 文件所在的路徑
dockerfile 指定 context 指定的目錄下面的 Dockerfile 的名稱(默認(rèn)為 Dockerfile)
args Dockerfile 在 build 過(guò)程中需要的參數(shù) (等同于 docker container build --build-arg 的作用)
cache_from # v3.2中新增的參數(shù), 指定緩存的鏡像列表 (等同于 docker container build --cache_from 的作用)
labels v3.3中新增的參數(shù), 設(shè)置鏡像的元數(shù)據(jù) (等同于 docker container build --labels 的作用)
shm_size v3.5中新增的參數(shù), 設(shè)置容器 /dev/shm 分區(qū)的大小 (等同于 docker container build --shm-size 的作用)
command # 覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令, 支持 shell 格式和 [] 格式
container_name 指定容器名稱
depends_on 指定容器啟動(dòng)的依賴關(guān)系,此選項(xiàng)在 v3 版本中 使用 swarm 部署時(shí)將忽略該選項(xiàng)
links 容器關(guān)聯(lián),版本3已經(jīng)不建議使用,建議使用網(wǎng)絡(luò)做容器通信
env_file 環(huán)境變量文件
environment 設(shè)置環(huán)境變量, environment 的值可以覆蓋 env_file 的值 (等同于 docker run --env 的作用)
expose 暴露端口, 但是不能和宿主機(jī)建立映射關(guān)系, 類似于 Dockerfile 的 EXPOSE 指令
ports 端口映射
external_links 連接不在 docker-compose.yml 中定義的容器或者不在 compose 管理的容器
extra_hosts 添加 host 記錄到容器中的 /etc/hosts 中
logging 日志統(tǒng)一輸出,方便做日志統(tǒng)計(jì)
networks 容器網(wǎng)絡(luò)配置
restart 自動(dòng)重啟容器,容器掛掉之后自動(dòng)重啟機(jī)制
volumes 數(shù)據(jù)卷映射,也可以以叫做目錄共享
CLI命令啟動(dòng)服務(wù) docker-compose up -d --build
暫停服務(wù) docker-compose down
重啟服務(wù) docekr-compose restart
進(jìn)入 docekr-compose exec $1 $2
$1 docker-compose.yml文件services中定義的服務(wù)名稱
$2 根據(jù)基礎(chǔ)鏡像服務(wù)器決定,一般apline為/bin/sh,其他為"/bin/bash"
查看 docker-compose ps
實(shí)操,docker-compose搭建項(xiàng)目 創(chuàng)建項(xiàng)目目錄mkdir php創(chuàng)建如下項(xiàng)目結(jié)構(gòu)
sites 目錄放置項(xiàng)目文件
services 目錄放置服務(wù)相關(guān)配置
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 # 設(shè)置時(shí)區(qū)為上海 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 # 設(shè)置時(shí)區(qū)為上海 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環(huán)境基本搭建完畢,下面我們針對(duì)Php解析做相關(guān)的配置修改services/nginx/nginx.conf,可根據(jù)需求自行修改
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目錄下文件
該目錄是各個(gè)項(xiàng)目的配置文件,可根據(jù)需求配置單個(gè)或多個(gè)服務(wù)
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; #} }啟動(dòng)服務(wù)
cd php && docker-compose up --build -d
上述的步驟根據(jù)網(wǎng)速的docker的配置執(zhí)行時(shí)間個(gè)不相同,因?yàn)閜hp中編譯了些許擴(kuò)展,也可根據(jù)自身需求做響應(yīng)的刪減
通過(guò)瀏覽器訪問(wèn)http://127.0.0.1:81,如果看到了phpinfo的輸出信息,那么恭喜你,你的lnmp環(huán)境已經(jīng)部署完成
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31669.html
摘要:如果不用我們可能將上述講的命令每搭建一次就需要執(zhí)行一遍,有沒(méi)有能統(tǒng)一管理的有,就是在環(huán)境搭建中的作用快速創(chuàng)建鏡像,快速創(chuàng)建并運(yùn)行容器,實(shí)現(xiàn)統(tǒng)一管理。 前言 初學(xué)者在dcoker學(xué)習(xí)過(guò)程中,可能不太清楚docker中那么多的命令,參數(shù),工具在lnmp環(huán)境搭建中起了什么作用,下面跟著我來(lái)熟悉一下。(本文面向的是不怎么熟悉linux的:phper) 鏡像,容器,倉(cāng)庫(kù) 鏡像:Docker 鏡像...
摘要:學(xué)習(xí)心得前言耗時(shí)一周零三天,終于用搭建起自己的開(kāi)發(fā)環(huán)境。來(lái)搭建一下環(huán)境,然后,桌面沒(méi)了。作為過(guò)來(lái)人,我只想說(shuō),一定要只做一件事,不要過(guò)多的去研究,我們只是想搭建本地運(yùn)行環(huán)境。 docker學(xué)習(xí)心得 前言 耗時(shí)一周零三天,終于用docker搭建起自己的開(kāi)發(fā)環(huán)境。詳細(xì)過(guò)程:請(qǐng)參考分解docker在lnmp環(huán)境搭建中的作用showImg(https://segmentfault.com/im...
摘要:項(xiàng)目由一組關(guān)聯(lián)的應(yīng)用容器組成的一個(gè)完整業(yè)務(wù)單元,在文件中定義。 docker搭建lnmp環(huán)境 一、Dockerfile定制鏡像 二、docker-compose 三、docker-compose編排lnmp環(huán)境 1、mysql 2、redis 3、mongo 4、nginx 5、php 6、完整版 四、參考 有收獲的話請(qǐng)加顆小星星,沒(méi)有收獲的話可以 反對(duì) 沒(méi)有幫助 ...
摘要:基礎(chǔ)命令關(guān)于搜索下載查看或者刪除單個(gè)刪除多個(gè)刪除查看信息占用關(guān)于查看重啟停止雜項(xiàng)命令網(wǎng)絡(luò)相關(guān)清除網(wǎng)絡(luò)緩存查看網(wǎng)絡(luò)列表查看詳情掛載目錄清除緩存查看列表查看詳情系統(tǒng)相關(guān)系統(tǒng)信息查看占用清除所有包含構(gòu)建失敗的鏡像沒(méi)有被使用的網(wǎng)絡(luò)配 docker基礎(chǔ)命令 關(guān)于images 搜索 docker search php 下載 docker pull php:7.3.6-fpm-alpine3....
摘要:配置文件配置配置文件配置文件配置文件太大就不貼了,直接下載然后本地修改吧。不會(huì)使用的使用命令進(jìn)行替換。是一種推出的免費(fèi)的公共鏡像庫(kù)服務(wù)。本地對(duì)鏡像打提交鏡像到倉(cāng)庫(kù)參考Docker 安裝安裝 Dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun配置國(guó)內(nèi)鏡像mkdir -p /etc/docker cat...
閱讀 1116·2021-09-22 15:37
閱讀 1143·2021-09-13 10:27
閱讀 2489·2021-08-25 09:38
閱讀 2458·2019-08-26 11:42
閱讀 1538·2019-08-26 11:39
閱讀 1573·2019-08-26 10:58
閱讀 2333·2019-08-26 10:56
閱讀 2581·2019-08-23 18:08