Centos7 Docker 集群實(shí)驗(yàn)(實(shí)驗(yàn)篇)

編寫Dockerfile

1. 使用PHPStorm Docker插件編寫Dockerfile

Docker 服務(wù)開啟遠(yuǎn)程連接功能

vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
systemctl daemon-reload
systemctl restart docker

2.nginx php-fpm dockerfile

#Execute: docker run -d --rm --privileged -p 80:80 php72-yaf:v1
FROM centos
LABEL maintainer="jiangfeng.wang@jia1edu.com"
ENV PHP_BIN /opt/remi/php72/root/usr/bin
WORKDIR /workspace/software/
ADD ./yaf-3.0.8.tgz ./
RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm && \
    yum install -y nginx && \
    yum install -y epel-release && \
    yum install -y yum-utils && \
    yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm && \
    yum-config-manager --enable remi-php72 && \
    yum -y update && \
    yum install -y php72 && \
    yum install -y php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache php72-php-pecl-redis5 \
        php72-php-bcmath php72-php-devel && \
    cd /workspace/software/yaf-3.0.8 && \
    $PHP_BIN/phpize && \
    ./configure --with-php-config=$PHP_BIN/php-config && \
    make && \
    make install && \
    systemctl enable php72-php-fpm && \
    systemctl enable nginx
EXPOSE 80
CMD ["/usr/sbin/init"] #因?yàn)閜hp-fpm及nginx都是以后臺(tái)服務(wù)運(yùn)行因此需要執(zhí)行此指令

ps:期間采用增加 entrypoint.sh的方式 即:

ENTRYPOINT ["./entrypoint.sh"]

entrypoint.sh的內(nèi)容為:

#!/usr/bin/env bash
set -e  #執(zhí)行中任何語(yǔ)句出錯(cuò)村生,中止

/usr/sbin/init

exec "$@" #執(zhí)行后面的指令

運(yùn)行報(bào)錯(cuò):Couldn't find an alternative telinit implementation to spawn.
需要使用 exec /usr/sbin/init


2.1 ENTRYPOINT CMD使用說(shuō)明:

No ENTRYPOINT ENTRYPOINT exec_entry p1_entry ENTRYPOINT [“exec_entry”, “p1_entry”]
No CMD error, not allowed /bin/sh -c exec_entry p1_entry exec_entry p1_entry
CMD [“exec_cmd”, “p1_cmd”] exec_cmd p1_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry exec_cmd p1_cmd
CMD [“p1_cmd”, “p2_cmd”] p1_cmd p2_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry p1_cmd p2_cmd
CMD exec_cmd p1_cmd /bin/sh -c exec_cmd p1_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd

3.集群部署

3.1 初始化swarm集群

在192.168.101.252 運(yùn)行指令:

docker-machine ssh Node1 "docker swarm init --advertise-addr 192.168.101.253"

結(jié)果如下:

Swarm initialized: current node (8byxvzemg17dlsq1zt199y2e3) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3c2gclwswbpfynj3jv46beuth4kq95so3ljyodzjqvhim9cqgd-2qhqn9bw51b3sm6wo947o9cut 192.168.101.253:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

執(zhí)行:

docker-machine ssh Node2 "docker swarm join --token SWMTKN-1-3c2gclwswbpfynj3jv46beuth4kq95so3ljyodzjqvhim9cqgd-2qhqn9bw51b3sm6wo947o9cut 192.168.101.253:2377"

在Manager上運(yùn)行“docker node ls”來(lái)查看節(jié)點(diǎn)

[root@192 ~]# docker-machine ssh Node1 "docker node ls"
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
8byxvzemg17dlsq1zt199y2e3 *   Node1               Ready               Active              Leader              19.03.1
66vjclco8d9twjk3w1y0lz82h     Node2               Ready               Active                                  19.03.1

3.2 部署nginx,php-fpm到集群上

在192.168.101.252 運(yùn)行指令:

eval $(docker-machine env Node1)

docker-machine ls

顯示如下結(jié)果:

NAME    ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER     ERRORS
Node1   *        generic   Running   tcp://192.168.101.253:2376           v19.03.1   
Node2   -        generic   Running   tcp://192.168.101.254:2376           v19.03.1   

部署服務(wù),運(yùn)行指令:

docker stack deploy -c docker-compose.yml php72yaf

ps:使用的docker-compose.yml文件如下:

version: "3"
services:
  web:
    image: nginx
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "0.2"
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

運(yùn)行指令:

docker stack ps php72yaf

查看各節(jié)點(diǎn)上的容器部署情況

ID                  NAME                IMAGE                                 NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
34ji2447cjxh        php72yaf_web.1      nginx:latest   Node2               Running             Running 29 minutes ago                       
77kaoz565uif        php72yaf_web.2      nginx:latest   Node1               Running             Running 29 minutes ago                       
orxdvbxe9gj1        php72yaf_web.3      nginx:latest   Node1               Running             Running 29 minutes ago                       

訪問(wèn)集群:
此時(shí)請(qǐng)求 http://192.168.101.253或http://192.168.101.254
都可以訪問(wèn)到nginx服務(wù)

ps:本篇在實(shí)驗(yàn)過(guò)程中想使用第二節(jié)中所寫的dockerfile來(lái)構(gòu)建自定義鏡像凌箕,但是因?yàn)樾枰猵rivileged權(quán)限傍衡,而swarm集群不支持此選項(xiàng)超升,所以在docker-compose.yml中使用了官方的nginx鏡像進(jìn)行了集群實(shí)驗(yàn)。因此本篇的第二九巡、三節(jié)內(nèi)容有點(diǎn)脫節(jié)知残,第二節(jié)dockerfile產(chǎn)生的鏡像適用于單獨(dú)運(yùn)行,第三節(jié)僅是集群的一個(gè)演示比庄,下一篇會(huì)講php-fpm與nginx進(jìn)行分拆,重新部署在集群中乏盐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佳窑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子父能,更是在濱河造成了極大的恐慌神凑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何吝,死亡現(xiàn)場(chǎng)離奇詭異溉委,居然都是意外死亡手负,警方通過(guò)查閱死者的電腦和手機(jī)昭殉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門乘凸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)熬拒,“玉大人匆绣,你說(shuō)我怎么就攤上這事冻押∶缱伲” “怎么了济瓢?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)棵帽。 經(jīng)常有香客問(wèn)我熄求,道長(zhǎng),這世上最難降的妖魔是什么逗概? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任弟晚,我火速辦了婚禮,結(jié)果婚禮上逾苫,老公的妹妹穿的比我還像新娘卿城。我一直安慰自己,他們只是感情好隶垮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布藻雪。 她就那樣靜靜地躺著,像睡著了一般狸吞。 火紅的嫁衣襯著肌膚如雪勉耀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天蹋偏,我揣著相機(jī)與錄音便斥,去河邊找鬼。 笑死威始,一個(gè)胖子當(dāng)著我的面吹牛枢纠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黎棠,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晋渺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了脓斩?” 一聲冷哼從身側(cè)響起木西,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎随静,沒(méi)想到半個(gè)月后八千,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡燎猛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年恋捆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重绷。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沸停,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昭卓,到底是詐尸還是另有隱情星立,我是刑警寧澤爽茴,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站绰垂,受9級(jí)特大地震影響室奏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜劲装,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一胧沫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧占业,春花似錦绒怨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至念恍,卻和暖如春六剥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背峰伙。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工疗疟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞳氓。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓策彤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親匣摘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子店诗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355