国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請問docker里面怎么優(yōu)化linux內(nèi)核?

dignfei

docker官方php鏡像中,既沒有文件 /etc/sysctl.conf,也沒有sysctl命令,
?
請問要在容器里面優(yōu)化內(nèi)核?,還是在外部的物理機(jī)的linux上優(yōu)化內(nèi)核?

5889 4 4
4個回答

Caesar-Tang

在 docker 中嘗試了一下午,結(jié)果已失敗告終。

  1. 嘗試使用 php-cli 官方鏡像,在安裝 event 時失敗。通過 編譯 和 pecl 安裝,在最后 enable 后,通過 php -m|grep event,提示:Warning: PHP Startup: Unable to load dynamic library 'event'
  2. 嘗試使用 centos,ubuntu 等 系統(tǒng)鏡像,安裝 event 成功,但在優(yōu)化 linux 內(nèi)核時失敗
    (1)其中該配置會提示找不到:netdev_max_backlog: No such file or directory,國內(nèi)國外搜索了一番,未找到解決方法,以下僅供參考:
    https://github.com/moby/moby/issues/30778
    (2)沒有文件:/etc/sysctl.conf,該文件可以自己創(chuàng)建
    (3)啟動時使用 --privileged,使其具備最高權(quán)限,可以在容器內(nèi)使用 sysctl,否則會出現(xiàn) Read-only file system
  3. 以下是未優(yōu)化的 dockerfile 文件,僅供參考:

FROM centos:7

RUN yum -y install epel-release
RUN yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
RUN yum -y install yum-utils

RUN yum-config-manager --enable remi-php73
RUN yum -y install php-cli php-posix php-event php-zip php-openssl php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-mysqlnd php-redis --skip-broken

RUN mkdir /app
COPY ./ /app
WORKDIR /app
RUN chmod -R 777 runtime

CMD ["php", "/app/start.php", "start"]

接下來準(zhǔn)備使用阿里云的系統(tǒng)完成優(yōu)化后,然后打包制作鏡像。但也在猶豫這么做的意義,因為物理機(jī)是同樣需要優(yōu)化的。

  • 暫無評論
admin

使用Alpine linux + docker,非常方便安裝event拓展

截圖

apk search event

apk add php7-event
apk add libevent

截圖

  • 暫無評論
Tinywan

推薦使用 Alpine linux,參考:https://github.com/Tinywan/docker-php-webman

  • 暫無評論
Caesar-Tang

首先,感謝上面兩位大佬對于安裝event的提出的方案。

關(guān)于內(nèi)核優(yōu)化的第2點問題,目前為止已經(jīng)有了些頭緒。

  1. 系統(tǒng)內(nèi)核參數(shù)有的會被設(shè)置為命名空間內(nèi)核參數(shù)(sysctls),但并非所有的系統(tǒng)內(nèi)核參數(shù)都具有命名空間,目前 docker 官方已經(jīng)對部分做了支持,文檔如下:https://docs.docker.com/engine/reference/commandline/run/#/configure-namespaced-kernel-parameters-sysctls-at-runtime。
    按照文檔說明,系統(tǒng)以 net.* 的會被支持,但實際測試 net.core.netdev_max_backlog 仍然不行。
  2. 通過將容器的網(wǎng)絡(luò)模式,設(shè)置為 --net host,問題得以解決,因為此方式,直接和宿主機(jī)共用一個Network Namespace,但產(chǎn)生的問題就是容器將不會虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機(jī)的IP和端口。
  3. 該問題在 stackoverflow 也有廣泛的討論:https://stackoverflow.com/questions/26177059/refresh-net-core-somaxcomm-or-any-sysctl-property-for-docker-containers
    對于最高評論的方案做過測試,方案二是失敗的。即使添加了 --privileged,也沒有權(quán)限寫入文件。并且也不建議這么做。

目前看來,通過將容器的網(wǎng)絡(luò)模式設(shè)置為 --net host 是一個可行的方案。因為 webman 的服務(wù),一般是獨立的并且可以由開發(fā)者自定義端口,和 nginx 或 mysql 等服務(wù)有所不同。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??