Ես ունեմ Docker պատկեր, որը պարունակում է NodeJS հավելված: Dockerfile-ը հետևյալն է.
FROM node:8
WORKDIR /app
ADD . /app
RUN npm install
EXPOSE 80
ENTRYPOINT [ "/bin/sh", "./start.sh" ]
start.sh սցենարը հետևյալն է.
#!/bin/bash
...
echo "Starting application"
npm start
Ես կարող եմ գործարկել և փորձարկել պատկերը ձեռքով.
$ gcloud docker -- run -it --rm my-container
...
Starting application
...
> node index.js
...
Նույն կոնտեյները օգտագործվում է kubernetes տեղակայման միջոցով.
apiVersion: extensions/v1beta1
kind: Deployment
...
spec:
...
template:
...
spec:
containers:
- image: my-container
...
Կոնտեյները սկսվում է, start.sh
սկրիպտը ճիշտ է կատարվում, բայց այն ավարտվում է, և կոնտեյները անցնում է CrashLoopBackOff
հանգույց:
Պատիճը ձեռքով ստուգելուց հետո.
kubectl exec -ti my-pod -- bash
I have no name!@my-pod:/app# cat /etc/passwd
... empty response
-> Տպավորություն է ստեղծվում, որ ինչ-որ կերպ բեռնարկղում չկան համակարգի օգտատերեր, ինչը հանգեցնում է նրան, որ հրամանների մեծ մասը (ինչպես npm
) անաղմուկ ձախողվում է և դադարեցնում բեռնարկղը
Ես նույնպես փորձել եմ, անհաջող.
- պատիճը ջնջելը
- տեղակայման ջնջում և վերստեղծում
- գործարկել
node
պատկերըnode
օգտագործողի հետ ->unable to find user node: no matching entries in passwd file
Վերջին նշում. Ես իրականում ունեմ բազմաթիվ տեղակայումներ (օգտագործելով նույն ձևանմուշը պարզապես այլ անունով), որոնք լավ են աշխատում մի քանի օր առաջ ստեղծված պատկերով նույն սկզբնական կոդով ուժեղ>.
Որոշ տեղակայումների համար այն իրականում աշխատել է այն բանից հետո, երբ ձեռքով ջնջել է pod-ը և թույլ տալով kubernetes-ին վերստեղծել այն:
Կա՞ն գաղափարներ:
Խմբագրել 18/01/2018 Ես փորձել եմ վերականգնել պատկերը նույն սկզբնաղբյուրով, որն օգտագործում են հին աշխատանքային պատկերները, առանց հաջողության: Ես նաև փորձել եմ ավելի պարզ Dockerfile.
FROM node:8
USER node
Բայց ես դեռ սխալ եմ ստանում, կապված այն փաստի հետ, որ ոչ մի օգտվող կարծես այնտեղ չկա.
Error response from daemon: {"message":"linux spec user: unable to find user node: no matching entries in passwd file"}
Ես ստուգել եմ docker-node-ի տղաների հետ, վերջերս պատկերը չի փոխվել: Կարո՞ղ է դա կապված լինել kubernetes փոփոխությունների հետ: Նկատի ունեցեք, որ իմ պատկերները գործարկվում են, երբ ես դրանք գործարկում եմ ձեռքով docker հրամանով:
dummynodeapp.yaml
-ը, և ես դեռ ստանում եմCrashLoopBackOff
՝Starting application
ով՝ որպես միակ տեղեկամատյաններ: 18.01.2018